我如何通过perl修改文本文件

时间:2014-03-06 12:39:22

标签: perl

我想制作'查找/更改'功能。

  1. 打开原始文件。
  2. 通过使用s / / /或tr / / /更改一些单词,但我觉得它不起作用。

    open(TXT, ">>text.txt");
    my $str = <TXT>;
    $str =~ s/'a'/'b'/;
    print TXT $str;
    

2 个答案:

答案 0 :(得分:2)

您的程序会打开追加的文件,因此您将无法从中读取该行my $str = <TXT>行将$str设置为undef

您可以使用

将其写为单行控制台命令
perl -i.backup -pe"s/'a'/'b'/g" myfile

在整个文件中用字符串'a'替换字符串'b'(包括引号),并将备份保存到myfile.backup

或者你可以写一个这样的程序

use strict;
use warnings;

open my $fh, '<', 'myfile' or die qq{Unable to open input file: $!};

while (<$fh>) {
  s/'a'/'b'/g;
  print $_;
}

使输入文件保持不变并将修改后的数据发送到STDOUT,因此可以使用命令将其重定向到新文件

perl modify.pl myfile > myfile.new

答案 1 :(得分:-1)

看看这个例子:

 ...
open RH, "text.txt" or die $!;
chomp(my @lines = <RH>);
close RH;

open WH, ">text.txt" or die $!;
foreach my $line (@lines) {
  $line =~ s/'a'/'b'/;
  print WH "$line\n";
}
close WH;
 ...