diff options
author | Kriton Kyrimis <kyrimis@princeton.edu> | 1988-02-01 04:35:21 +0000 |
---|---|---|
committer | Larry Wall <lwall@jpl-devvax.jpl.nasa.gov> | 1988-02-01 04:35:21 +0000 |
commit | 9bb9d9f726fa55c70ed76abad9fe7c61d4eb4182 (patch) | |
tree | b31ea68d7f4dc2e2d30b150698df92735e4c251a /x2p/walk.c | |
parent | 83b4785aebef542ad391e53b49c107fc5e1b4a58 (diff) | |
download | perl-9bb9d9f726fa55c70ed76abad9fe7c61d4eb4182.tar.gz |
perl 1.0 patch 12: scripts made by a2p doen't handle leading white space right on input
Awk ignores leading whitespace on split. Perl by default does not.
The a2p translator couldn't handle this. The fix is partly to a2p
and partly to perl. Perl now has a way to specify to split to
ignore leading white space as awk does. A2p now takes advantage of
that.
I also threw in an optimization that let's runtime patterns
compile just once if they are known to be constant, so that
split(' ') doesn't compile the pattern every time.
Diffstat (limited to 'x2p/walk.c')
-rw-r--r-- | x2p/walk.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/x2p/walk.c b/x2p/walk.c index e745510b1d..e81a9fd8de 100644 --- a/x2p/walk.c +++ b/x2p/walk.c @@ -1,6 +1,9 @@ -/* $Header: walk.c,v 1.0.1.1 88/01/28 11:07:56 root Exp $ +/* $Header: walk.c,v 1.0.1.2 88/02/01 17:34:05 root Exp $ * * $Log: walk.c,v $ + * Revision 1.0.1.2 88/02/01 17:34:05 root + * patch12: made a2p take advantage of new awk-compatible split in perl. + * * Revision 1.0.1.1 88/01/28 11:07:56 root * patch8: changed some misleading comments. * @@ -71,7 +74,7 @@ int *numericptr; str_cat(str,"';\t\t# field separator from -F switch\n"); } else if (saw_FS && !const_FS) { - str_cat(str,"$FS = '[ \\t\\n]+';\t\t# set field separator\n"); + str_cat(str,"$FS = ' ';\t\t# set field separator\n"); } if (saw_OFS) { str_cat(str,"$, = ' ';\t\t# set output field separator\n"); @@ -361,8 +364,6 @@ sub Pick {\n\ str_scat(str,fstr=walk(1,level,ops[node+3].ival,&numarg)); str_free(fstr); numeric |= numarg; - if (strEQ(str->str_ptr,"$FS = '\240'")) - str_set(str,"$FS = '[\240\\n\\t]+'"); break; case OADD: str = walk(1,level,ops[node+1].ival,&numarg); @@ -511,7 +512,7 @@ sub Pick {\n\ else if (saw_FS) str_cat(str,"$FS"); else - str_cat(str,"/[ \\t\\n]+/"); + str_cat(str,"' '"); str_cat(str,", "); str_scat(str,fstr=walk(1,level,ops[node+1].ival,&numarg)); str_free(fstr); @@ -1095,7 +1096,7 @@ int level; else if (saw_FS) str_cat(str," = split($FS);\n"); else - str_cat(str," = split;\n"); + str_cat(str," = split(' ');\n"); tab(str,level); } |