大家好我从一本书中获得了这个示例代码,该书介绍了如何使用正则表达式修改文件数量的内容。
#!/usr/bin/perl -w
use strict;
chomp(my $date = `date`);
$^I = ".bak";
while (<>) {
s/^Author:.*/Author: Randal L. Schwartz/;
s/^Phone:.*\n//;
s/^Date:.*/Date: $date/;
print;
}
从它的外观来看,我知道缺少一些东西 - 这就是文件名。但这本书坚持认为。因此,当我自己尝试时,它只接受来自键盘的输入,这是我所期望的。所以我有一个修改过的代码,它会打开一个文件而不再创建一个备份:
由此行处理
$^I = ".out";
#! usr/bin/perl
use warnings;
use strict;
open (MYFILE,'fewlines');
$^I = ".out";
while (<MYFILE>) {
s/fred/larry/ig;
print;
}
此行也是如此,但在命令提示符下。我想不是在命令提示符下编写程序本身
perl -p -i.out -w -e 's/fred/larry/ig' filename
如何在程序中转换该行?
答案 0 :(得分:3)
<>
,<ARGV>
的缩写,读取@ARGV
中指定的文件(如果有),否则读取STDIN。
perl -p -i.out -w -e 's/fred/larry/ig' filename
确实
@ARGV = 'filename';
$^I = '.out'
$^W = 1;
LINE: while (<>) {
s/fred/larry/ig
} continue {
die "-p destination: $!\n" unless print $_;
}