On Jun 20, Balint, Jess said:

>Are these -l and -n flags specific to perl 5.6? I am using 5.005 and they
>don't work as illustrated:

The -l and -n flags have been with Perl for quite some time.

>% perl -e 'while{print if(.45909592993094279021 < rand);}' db_mlb_undup.dat

Uh, you're missing something on your while loop.

  perl -e 'while (<>) { print if .4590959 < rand }' db_mlb_undup.dat

>% cat db_mlb_undup.dat | perl -e 'while(<>){print if(.45909592993094279021 <
>rand);}' | head -1
>100000127|

Again, no need for 'cat' here; you can put it at the end of the invokation
of 'perl' as you did above.

>% cat db_mlb_undup.dat | perl -el 'while(<>){print if(.45909592993094279021
>< rand);}' | head -1

Ah. ;)

>% cat db_mlb_undup.dat | perl -en 'print if(.45909592993094279021 < rand);'
>| head -1

Heh.  A tricky problem, I'll warrant.  The problem you're having is that
you're putting the -l and the -n ON the -e flag.

  perl -eprint+pop 10 20 30

prints 30, because it's like saying

  perl -e 'print pop @ARGV' 10 30 30

Anyway, the -e is biblical in nature, as it says to other command-line
flags "get thee behind me". ;)

  perl -le 'print if /foo/' file

prints lines of 'file' that have 'foo' on them, whereas

  perl -el 'print if /foo/' file

executes the statement 'l', and stores 'print if /foo/' and 'file' in
@ARGV, where they get bored.

-- 
Jeff "japhy" Pinyan      [EMAIL PROTECTED]      http://www.pobox.com/~japhy/
RPI Acacia brother #734   http://www.perlmonks.org/   http://www.cpan.org/
** Look for "Regular Expressions in Perl" published by Manning, in 2002 **
<stu> what does y/// stand for?  <tenderpuss> why, yansliterate of course.
[  I'm looking for programming work.  If you like my work, let me know.  ]


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to