http://qs321.pair.com?node_id=664713


in reply to input from STDIN or from a file

I don't know how complex your program would be, but I usually just use,
$ cat file.txt a b c $ cat stdin.pl #!/usr/bin/perl -l while (<>) { $_ = uc; print; } $ perl stdin.pl file.txt A B C $ cat file.txt | perl stdin.pl A B C
Or, just perl -lpe '$_=uc' if it's really that simple. Anyway, I don't see anything wrong with your code.

Update: Fixed missing -l (only the dash was there). Thanks almut :-)


Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!

Replies are listed 'Best First'.
Re^2: input from STDIN or from a file
by almut (Canon) on Jan 28, 2008 at 19:17 UTC
    #!/usr/bin/perl - ^

    I'm not sure you want the dash at the end of the shebang line...

    It doesn't do any harm when invoking the code like you did, but when I try to run your sample code/data without explicitly calling perl (rather letting the OS handle the shebang), I'm getting

    $ cat file.txt | ./664708.pl Can't locate object method "a" via package "b" (perhaps you forgot to +load "b"?) at - line 1.

    I suppose this is because what comes in through stdin is being interpreted as Perl code, rather than as content to be read via <> ...