in reply to Re: input from STDIN or from a file
in thread input from STDIN or from a file

#!/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 | ./ 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 <> ...