summaryrefslogtreecommitdiff
path: root/arg.h
diff options
context:
space:
mode:
authorLarry Wall <larry@wall.org>1988-06-05 00:00:00 +0000
committerLarry Wall <larry@wall.org>1988-06-05 00:00:00 +0000
commit378cc40b38293ffc7298c6a7ed3cd740ad79be52 (patch)
tree87bedf9adc5c88847a2e2d85963df5f94435aaf5 /arg.h
parenta4de7c03d0bdc29d9d3a18abad4ac2628182ed7b (diff)
downloadperl-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.h115
1 files changed, 94 insertions, 21 deletions
diff --git a/arg.h b/arg.h
index d442b02dfa..efb3e3696c 100644
--- a/arg.h
+++ b/arg.h
@@ -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();