diff options
author | Larry Wall <larry@wall.org> | 1988-06-05 00:00:00 +0000 |
---|---|---|
committer | Larry Wall <larry@wall.org> | 1988-06-05 00:00:00 +0000 |
commit | 378cc40b38293ffc7298c6a7ed3cd740ad79be52 (patch) | |
tree | 87bedf9adc5c88847a2e2d85963df5f94435aaf5 /arg.h | |
parent | a4de7c03d0bdc29d9d3a18abad4ac2628182ed7b (diff) | |
download | perl-378cc40b38293ffc7298c6a7ed3cd740ad79be52.tar.gz |
perl 2.0 (no announcement message available)perl-2.0
Some of the enhancements from Perl1 included:
* New regexp routines derived from Henry Spencer's.
o Support for /(foo|bar)/.
o Support for /(foo)*/ and /(foo)+/.
o \s for whitespace, \S for non-, \d for digit, \D nondigit
* Local variables in blocks, subroutines and evals.
* Recursive subroutine calls are now supported.
* Array values may now be interpolated into lists: unlink 'foo', 'bar', @trashcan, 'tmp';
* File globbing.
* Use of <> in array contexts returns the whole file or glob list.
* New iterator for normal arrays, foreach, that allows both read and write.
* Ability to open pipe to a forked off script for secure pipes in setuid scripts.
* File inclusion via do 'foo.pl';
* More file tests, including -t to see if, for instance, stdin is a terminal. File tests now behave in a more correct manner. You can do file tests on filehandles as well as filenames. The special filetests -T and -B test a file to see if it's text or binary.
* An eof can now be used on each file of the <> input for such purposes as resetting the line numbers or appending to each file of an inplace edit.
* Assignments can now function as lvalues, so you can say things like ($HOST = $host) =~ tr/a-z/A-Z/; ($obj = $src) =~ s/\.c$/.o/;
* You can now do certain file operations with a variable which holds the name of a filehandle, e.g. open(++$incl,$includefilename); $foo = <$incl>;
* Warnings are now available (with -w) on use of uninitialized variables and on identifiers that are mentioned only once, and on reference to various undefined things.
* There is now a wait operator.
* There is now a sort operator.
* The manual is now not lying when it says that perl is generally faster than sed. I hope.
Diffstat (limited to 'arg.h')
-rw-r--r-- | arg.h | 115 |
1 files changed, 94 insertions, 21 deletions
@@ -1,11 +1,8 @@ -/* $Header: arg.h,v 1.0.1.1 88/01/28 10:22:40 root Exp $ +/* $Header: arg.h,v 2.0 88/06/05 00:08:14 root Exp $ * * $Log: arg.h,v $ - * Revision 1.0.1.1 88/01/28 10:22:40 root - * patch8: added eval operator. - * - * Revision 1.0 87/12/18 13:04:39 root - * Initial revision + * Revision 2.0 88/06/05 00:08:14 root + * Baseline version 2.0. * */ @@ -115,7 +112,38 @@ #define O_LINK 103 #define O_REPEAT 104 #define O_EVAL 105 -#define MAXO 106 +#define O_FTEREAD 106 +#define O_FTEWRITE 107 +#define O_FTEEXEC 108 +#define O_FTEOWNED 109 +#define O_FTRREAD 110 +#define O_FTRWRITE 111 +#define O_FTREXEC 112 +#define O_FTROWNED 113 +#define O_FTIS 114 +#define O_FTZERO 115 +#define O_FTSIZE 116 +#define O_FTFILE 117 +#define O_FTDIR 118 +#define O_FTLINK 119 +#define O_SYMLINK 120 +#define O_FTPIPE 121 +#define O_FTSOCK 122 +#define O_FTBLK 123 +#define O_FTCHR 124 +#define O_FTSUID 125 +#define O_FTSGID 126 +#define O_FTSVTX 127 +#define O_FTTTY 128 +#define O_DOFILE 129 +#define O_FTTEXT 130 +#define O_FTBINARY 131 +#define O_UTIME 132 +#define O_WAIT 133 +#define O_SORT 134 +#define O_DELETE 135 +#define O_STUDY 136 +#define MAXO 137 #ifndef DOINIT extern char *opname[]; @@ -227,7 +255,38 @@ char *opname[] = { "LINK", "REPEAT", "EVAL", - "106" + "FTEREAD", + "FTEWRITE", + "FTEEXEC", + "FTEOWNED", + "FTRREAD", + "FTRWRITE", + "FTREXEC", + "FTROWNED", + "FTIS", + "FTZERO", + "FTSIZE", + "FTFILE", + "FTDIR", + "FTLINK", + "SYMLINK", + "FTPIPE", + "FTSOCK", + "FTBLK", + "FTCHR", + "FTSUID", + "FTSGID", + "FTSVTX", + "FTTTY", + "DOFILE", + "FTTEXT", + "FTBINARY", + "UTIME", + "WAIT", + "SORT", + "DELETE", + "STUDY", + "135" }; #endif @@ -244,6 +303,10 @@ char *opname[] = { #define A_LEXPR 10 #define A_ARYLEN 11 #define A_NUMBER 12 +#define A_LARYLEN 13 +#define A_GLOB 14 +#define A_WORD 15 +#define A_INDREAD 16 #ifndef DOINIT extern char *argname[]; @@ -262,29 +325,35 @@ char *argname[] = { "LEXPR", "ARYLEN", "NUMBER", - "13" + "LARYLEN", + "GLOB", + "WORD", + "INDREAD", + "17" }; #endif #ifndef DOINIT extern bool hoistable[]; #else -bool hoistable[] = {0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0}; +bool hoistable[] = {0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0}; #endif +union argptr { + ARG *arg_arg; + char *arg_cval; + STAB *arg_stab; + SPAT *arg_spat; + CMD *arg_cmd; + STR *arg_str; + double arg_nval; +}; + struct arg { - union argptr { - ARG *arg_arg; - char *arg_cval; - STAB *arg_stab; - SPAT *arg_spat; - CMD *arg_cmd; - STR *arg_str; - double arg_nval; - } arg_ptr; + union argptr arg_ptr; short arg_len; - char arg_type; - char arg_flags; + unsigned char arg_type; + unsigned char arg_flags; }; #define AF_SPECIAL 1 /* op wants to evaluate this arg itself */ @@ -294,6 +363,7 @@ struct arg { #define AF_COMMON 16 /* left and right have symbols in common */ #define AF_NUMERIC 32 /* return as numeric rather than string */ #define AF_LISTISH 64 /* turn into list if important */ +#define AF_LOCAL 128 /* list of local variables */ /* * Most of the ARG pointers are used as pointers to arrays of ARG. When @@ -317,3 +387,6 @@ bool do_seek(); int do_tms(); int do_time(); int do_stat(); +STR *do_push(); +FILE *nextargv(); +STR *do_fttext(); |