README.hpux Notes about HP-UX port
README.hurd Notes about GNU/Hurd port
README.machten Notes about Power MachTen port
+README.macos Notes about Mac OS (Classic)
README.micro Notes about microperl
README.mint Notes about Atari MiNT port
README.mpeix Notes about MPE/iX port
--- /dev/null
+If you read this file _as_is_, just ignore the funny characters you see.
+It is written in the POD format (see pod/perlpod.pod) which is specially
+designed to be readable as is.
+
+=head1 NAME
+
+README.macos - Perl under Mac OS (Classic)
+
+
+=head1 SYNOPSIS
+
+This document briefly describes perl under Mac OS (Classic).
+If you are running perl under Mac OS X, you don't want to be
+here (unless you are in the Classic environment under Mac OS X).
+
+When we say "Mac OS" below, we mean pre-Mac OS X, which includes
+Mac OS 7, 8, and 9.
+
+
+=head1 DESCRIPTION
+
+The perl 5.6.1 source itself builds on Mac OS, with some additional
+pieces. Support for Mac OS is now in the perl core, and MacPerl will be
+able to, in the future, keep in closer sync with regular perl releases.
+
+At this time, though, it is very buggy, and is under development. An
+alpha release is coming very soon.
+
+To build perl for Mac OS (as an MPW tool), you will need the addition
+of the "macos" subdirectory, distributed separately. It includes extra
+source files, config files, and make files. It also includes a lot of
+extra Mac-specific modules.
+
+To build the MacPerl application, you will also need the "macperl"
+directory, which includes the source files for creating the
+application itself.
+
+All of this is also available from the SourceForge site, via
+HTTP, FTP, and anonymous CVS.
+
+ http://macperl.sourceforge.net/
+
+You will also need compilers and libraries, all of them freely
+available. These are linked to from the SourceForge site. Go that site
+for all things having to do with MacPerl development.
+
+MacPerl 5.2.0r4 is available on the CPAN and on SourceForge. It
+is based on perl 5.004.
+
+
+=head1 AUTHOR
+
+perl was ported to Mac OS by Matthias Neeracher
+E<lt>neeracher@mac.comE<gt>. It is currently maintained by Chris
+Nandor E<lt>pudge@pobox.comE<gt>.
+
+
+=head1 DATE
+
+Last modified 2001.04.05.
#define save_iv Perl_save_iv
#define save_list Perl_save_list
#define save_long Perl_save_long
+#define save_mortalizesv Perl_save_mortalizesv
#define save_nogv Perl_save_nogv
#define save_op Perl_save_op
#define save_scalar Perl_save_scalar
#define save_iv(a) Perl_save_iv(aTHX_ a)
#define save_list(a,b) Perl_save_list(aTHX_ a,b)
#define save_long(a) Perl_save_long(aTHX_ a)
+#define save_mortalizesv(a) Perl_save_mortalizesv(aTHX_ a)
#define save_nogv(a) Perl_save_nogv(aTHX_ a)
#define save_op() Perl_save_op(aTHX)
#define save_scalar(a) Perl_save_scalar(aTHX_ a)
#define save_list Perl_save_list
#define Perl_save_long CPerlObj::Perl_save_long
#define save_long Perl_save_long
+#define Perl_save_mortalizesv CPerlObj::Perl_save_mortalizesv
+#define save_mortalizesv Perl_save_mortalizesv
#define Perl_save_nogv CPerlObj::Perl_save_nogv
#define save_nogv Perl_save_nogv
#define Perl_save_op CPerlObj::Perl_save_op
Ap |void |save_iv |IV* iv
Ap |void |save_list |SV** sarg|I32 maxsarg
Ap |void |save_long |long* longp
+Ap |void |save_mortalizesv|SV* sv
Ap |void |save_nogv |GV* gv
p |void |save_op
Ap |SV* |save_scalar |GV* gv
Perl_save_iv
Perl_save_list
Perl_save_long
+Perl_save_mortalizesv
Perl_save_nogv
Perl_save_scalar
Perl_save_pptr
#define Perl_save_long pPerl->Perl_save_long
#undef save_long
#define save_long Perl_save_long
+#undef Perl_save_mortalizesv
+#define Perl_save_mortalizesv pPerl->Perl_save_mortalizesv
+#undef save_mortalizesv
+#define save_mortalizesv Perl_save_mortalizesv
#undef Perl_save_nogv
#define Perl_save_nogv pPerl->Perl_save_nogv
#undef save_nogv
((CPerlObj*)pPerl)->Perl_save_long(longp);
}
+#undef Perl_save_mortalizesv
+void
+Perl_save_mortalizesv(pTHXo_ SV* sv)
+{
+ ((CPerlObj*)pPerl)->Perl_save_mortalizesv(sv);
+}
+
#undef Perl_save_nogv
void
Perl_save_nogv(pTHXo_ GV* gv)
perlepoc
perlhpux
perlmachten
+ perlmacos
perlmpeix
perlos2
perlos390
perlepoc
perlhpux
perlmachten
+ perlmacos
perlmpeix
perlos2
perlos390
perlepoc Perl notes for EPOC
perlhpux Perl notes for HP-UX
perlmachten Perl notes for Power MachTen
+ perlmacos Perl notes for Mac OS (Classic)
perlmpeix Perl notes for MPE/iX
perlos2 Perl notes for OS/2
perlos390 Perl notes for OS/390
use MIME::Base64;
$decoded = decode_base64($encoded);
-The MIME-Tools package (available from CPAN) support exctraction with
+The MIME-Tools package (available from CPAN) supports extraction with
decoding of BASE64 encoded attachments and content directly from email
messages.
=item C<SAVEFREESV(SV *sv)>
The refcount of C<sv> would be decremented at the end of
-I<pseudo-block>. This is similar to C<sv_2mortal>, which should (?) be
-used instead.
+I<pseudo-block>. This is similar to C<sv_2mortal> in that it is also a
+mechanism for doing a delayed C<SvREFCNT_dec>. However, while C<sv_2mortal>
+extends the lifetime of C<sv> until the beginning of the next statement,
+C<SAVEFREESV> extends it until the end of the enclosing scope. These
+lifetimes can be wildly different.
+
+Also compare C<SAVEMORTALIZESV>.
+
+=item C<SAVEMORTALIZESV(SV *sv)>
+
+Just like C<SAVEFREESV>, but mortalizes C<sv> at the end of the current
+scope instead of decrementing its reference count. This usually has the
+effect of keeping C<sv> alive until the statement that called the currently
+live scope has finished executing.
=item C<SAVEFREEOP(OP *op)>
CvOUTSIDE(PL_compcv) = (CV*)SvREFCNT_inc(caller);
}
- SAVEFREESV(PL_compcv);
+ SAVEMORTALIZESV(PL_compcv); /* must remain until end of current statement */
/* make sure we compile in the right package */
PERL_CALLCONV void Perl_save_iv(pTHX_ IV* iv);
PERL_CALLCONV void Perl_save_list(pTHX_ SV** sarg, I32 maxsarg);
PERL_CALLCONV void Perl_save_long(pTHX_ long* longp);
+PERL_CALLCONV void Perl_save_mortalizesv(pTHX_ SV* sv);
PERL_CALLCONV void Perl_save_nogv(pTHX_ GV* gv);
PERL_CALLCONV void Perl_save_op(pTHX);
PERL_CALLCONV SV* Perl_save_scalar(pTHX_ GV* gv);
}
void
+Perl_save_mortalizesv(pTHX_ SV *sv)
+{
+ SSCHECK(2);
+ SSPUSHPTR(sv);
+ SSPUSHINT(SAVEt_MORTALIZESV);
+}
+
+void
Perl_save_freeop(pTHX_ OP *o)
{
SSCHECK(2);
ptr = SSPOPPTR;
SvREFCNT_dec((SV*)ptr);
break;
+ case SAVEt_MORTALIZESV:
+ ptr = SSPOPPTR;
+ sv_2mortal((SV*)ptr);
+ break;
case SAVEt_FREEOP:
ptr = SSPOPPTR;
if (PL_comppad)
#define SAVEt_COMPPAD 33
#define SAVEt_GENERIC_PVREF 34
#define SAVEt_PADSV 35
+#define SAVEt_MORTALIZESV 36
#ifndef SCOPE_SAVES_SIGNAL_MASK
#define SCOPE_SAVES_SIGNAL_MASK 0
#define SAVEVPTR(s) save_vptr((void*)&(s))
#define SAVEPADSV(s) save_padsv(s)
#define SAVEFREESV(s) save_freesv((SV*)(s))
+#define SAVEMORTALIZESV(s) save_mortalizesv((SV*)(s))
#define SAVEFREEOP(o) save_freeop(SOFT_CAST(OP*)(o))
#define SAVEFREEPV(p) save_freepv(SOFT_CAST(char*)(p))
#define SAVECLEARSV(sv) save_clearsv(SOFT_CAST(SV**)&(sv))
TOPIV(nss,ix) = iv;
break;
case SAVEt_FREESV:
+ case SAVEt_MORTALIZESV:
sv = (SV*)POPPTR(ss,ix);
TOPPTR(nss,ix) = sv_dup_inc(sv);
break;
cd ..\pod
copy ..\README.aix .\perlaix.pod
copy ..\README.amiga .\perlamiga.pod
+ copy ..\README.bs2000 .\perlbs2000.pod
copy ..\README.cygwin .\perlcygwin.pod
copy ..\README.dos .\perldos.pod
copy ..\README.epoc .\perlepoc.pod
copy ..\README.hpux .\perlhpux.pod
copy ..\README.machten .\perlmachten.pod
+ copy ..\README.macos .\perlmacos.pod
+ copy ..\README.mpeix .\perlmpeix.pod
copy ..\README.os2 .\perlos2.pod
copy ..\README.os390 .\perlos390.pod
- copy ..\README.vmesa .\perlvmesa.pod
- copy ..\README.bs2000 .\perlbs2000.pod
copy ..\README.solaris .\perlsolaris.pod
+ copy ..\README.vmesa .\perlvmesa.pod
copy ..\vms\perlvms.pod .\perlvms.pod
copy ..\README.vos .\perlvos.pod
copy ..\README.win32 .\perlwin32.pod
-rmdir /s $(LIBDIR)\MIME\Base64
-if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME
-rmdir /s $(LIBDIR)\MIME
- -del /f $(PODDIR)\*.html
- -del /f $(PODDIR)\*.bat
+ cd $(PODDIR)
+ -del /f *.html
+ -del /f *.bat
+ -del /f checkpods perlamiga.pod perlcygwin.pod \
+ perldos.pod perlhpux.pod perlmachten.pod perlmacos.pod \
+ perlmpeix.pod perlos2.pod perlvms.pod \
+ perlwin32.pod pod2html pod2latex pod2man pod2text pod2usage \
+ podchecker podselect
cd ..\utils
-del /f h2ph splain perlbug pl2pm c2ph h2xs perldoc dprofpp
-del /f *.bat
cd ..\utils && $(MAKE) PERL=$(MINIPERL)
copy ..\README.aix ..\pod\perlaix.pod
copy ..\README.amiga ..\pod\perlamiga.pod
+ copy ..\README.bs2000 ..\pod\perlbs2000.pod
copy ..\README.cygwin ..\pod\perlcygwin.pod
copy ..\README.dos ..\pod\perldos.pod
copy ..\README.epoc ..\pod\perlepoc.pod
copy ..\README.hpux ..\pod\perlhpux.pod
copy ..\README.machten ..\pod\perlmachten.pod
+ copy ..\README.macos ..\pod\perlmacos.pod
+ copy ..\README.mpeix ..\pod\perlmpeix.pod
copy ..\README.os2 ..\pod\perlos2.pod
copy ..\README.os390 ..\pod\perlos390.pod
+ copy ..\README.solaris .\perlsolaris.pod
copy ..\README.vmesa ..\pod\perlvmesa.pod
- copy ..\README.bs2000 ..\pod\perlbs2000.pod
- copy ..\README.solaris ..\pod\perlsolaris.pod
copy ..\vms\perlvms.pod ..\pod\perlvms.pod
copy ..\README.vos ..\pod\perlvos.pod
copy ..\README.win32 ..\pod\perlwin32.pod
-if exist $(LIBDIR)\Digest rmdir /s /q $(LIBDIR)\Digest || rmdir /s $(LIBDIR)\Digest
-if exist $(LIBDIR)\MIME\Base64 rmdir /s /q $(LIBDIR)\MIME\Base64 || rmdir /s $(LIBDIR)\MIME\Base64
-if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME || rmdir /s $(LIBDIR)\MIME
- -del /f $(PODDIR)\*.html
- -del /f $(PODDIR)\*.bat
+ -cd $(PODDIR) && del /f *.html *.bat checkpods perlamiga.pod \
+ perlcygwin.pod perldos.pod perlhpux.pod perlmachten.pod \
+ perlmacos.pod perlmpeix.pod \
+ perlos2.pod perlvms.pod perlwin32.pod pod2html pod2latex \
+ pod2man pod2text pod2usage podchecker podselect
-cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph h2xs perldoc \
dprofpp *.bat
-cd ..\x2p && del /f find2perl s2p *.bat