http://www.perlmonks.org?node_id=1017906


in reply to Re^2: perl onliner on multiple files
in thread perl onliner on multiple files

In a bash shell, I get:
$ perl -nE "/: / and $c += (split/: /)[0]; if( eof(ARGV) ){ say qq[SUM +.$ARGV =$c]; $c=0 }" tmp_* syntax error at -e line 1, near "+=" syntax error at -e line 1, near "; =" Execution of -e aborted due to compilation errors.

And:

$ c=10 $ echo c c $ echo $c 10 $ echo "The total is: $c" The total is: 10 $ echo 'The total is: $c' The total is: $c
So within double quotes, the shell expands $variables, which of course happens *before* the shell hands the text over to the perl command. That is similar to the way the shell expands your glob: tmp_* and replaces it with a list of file names, which is what the perl command ends up seeing.

Replies are listed 'Best First'.
Re^4: perl onliner on multiple files
by abhay180 (Sexton) on Feb 09, 2013 at 10:05 UTC
    ok. i figured that out...but since i was using perl version 5.8, the -E option and "say" keyword were not recognized. Once i use the perl version 5.10 and above...the above line works exactly the way i want it to. Thanks a lot.