- 论坛徽章:
- 1
|
没错,就是 <>
详情请看 perldoc perlop
- The null filehandle <> is special: it can be used to emulate the
- behavior of sed and awk. Input from <> comes either from standard input,
- or from each file listed on the command line. Here's how it works: the
- first time <> is evaluated, the @ARGV array is checked, and if it is
- empty, $ARGV[0] is set to "-", which when opened gives you standard
- input. The @ARGV array is then processed as a list of filenames. The
- loop
- while (<>) {
- ... # code for each line
- }
- is equivalent to the following Perl-like pseudo code:
- unshift(@ARGV, '-') unless @ARGV;
- while ($ARGV = shift) {
- open(ARGV, $ARGV);
- while (<ARGV>) {
- ... # code for each line
- }
- }
- except that it isn't so cumbersome to say, and will actually work. It
- really does shift the @ARGV array and put the current filename into the
- $ARGV variable. It also uses filehandle *ARGV* internally--<> is just a
- synonym for <ARGV>, which is magical. (The pseudo code above doesn't
- work because it treats <ARGV> as non-magical.)
- You can modify @ARGV before the first <> as long as the array ends up
- containing the list of filenames you really want. Line numbers ($.)
- continue as though the input were one big happy file. See the example in
- "eof" in perlfunc for how to reset line numbers on each file.
复制代码 |
|