A minor but (IMO) important quibble: <STDIN> and <> are not identical constructs. If you use the script without command-line arguments, they are, but if a file is specified in @ARGV, reading from the magic filehandle (<>) will read from that file, while reading from STDIN (<STDIN>) will read from the standard input, aka the terminal.
Example code:
#!/usr/bin/perl use strict; my $color; print "What is your favorite color? "; chomp ($color = <STDIN>); print <>; print "Just to check, your favorite color is $color, right? "; $_ = <STDIN>; if ( /^y/i ) { print "Phew!\n" } else { print "I don't believe you!\n"}
If run thus
this should give usperl myscript.pl random_file.txt
This is occasionally very useful behavior--I wouldn't be at all surprised if it was pretty much what you need, Satira.
And of course, in real quibble land, tachyon didn't mean an infinite loop, he meant a loop until the filehandle reaches EOF. :-) If you're looping on <>, this will take care of itself unless you do something foolish; if you're looping on STDIN, you can break out by giving the locally appropriate EOF character (control-D on most Unices and MacPerl, control-Z on Windows I think...).
In reply to Re: Re: Searching and Replacing
by ChemBoy
in thread Searching and Replacing
by Satira
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |