【发布时间】:2016-04-26 02:26:13
【问题描述】:
我有以下命令:
perl -pi.bak -e "s/pattern//" $file_name
当我在 perl 脚本中执行它时,它会清空文件(我看到 .bak 文件,它不是空的)。当我在 shell 中执行它时,它可以工作。可能是什么问题?
问题是在Windows下,在Linux下可以正常工作。
编辑 1: 我也试过这个,它也空了:
sub replace_pattern_in_file
{
my ($file, $pattern, $replacement) = @_;
open my $in, "<", $file;
unlink $file;
open my $out, ">", $file;
while(my $line = <$in>)
{
$line =~ s/$pattern/$replacement/g;
print $out $line;
}
}
【问题讨论】:
-
你的模式是什么?
-
重新编辑 1,这在 Windows 上不起作用,因为它没有匿名文件。