perl对文本内容直接替换的问题

perl对文本内容直接替换的问题

刚接触perl,望大家多指教!
我有一个数据文本,比如data.txt里面的数据为:
01 FF 01 04 05 06
02 05 06 03 04 02
AB 03 05 04 07 08
我要把AB替换为0F的操作。
请问代码如何写。替换后的data.txt文件能显示替换后的值。
高手都去那了啊,求救!
菜鸟写个蹩脚程序
#!/usr/bin/perl

open FILE,"<data.txt";
my @file = <FILE>;
foreach(@file){
         s/AB/0F/g;
}
close FILE;

open FILE,">data.txt";
print FILE @file;
close FILE;
高手都泡mm去了,
低手问题,我来回答,

[hx@td18 ~]$ cat txt
01 FF 01 04 05 06
02 05 06 03 04 02
AB 03 05 04 07 08

[hx@td18 ~]$ perl  -i -p -e '~s/AB/0f/g' txt
[hx@td18 ~]$ cat txt
01 FF 01 04 05 06
02 05 06 03 04 02
0f 03 05 04 07 08
[hx@td18 ~]$ sed -i 's/0f/AB/g' txt
[hx@td18 ~]$ cat txt
01 FF 01 04 05 06
02 05 06 03 04 02
AB 03 05 04 07 08
这个不是我想要的结果啊,因为data.txt文档中的内容没变啊。
我知道一个可以直接改的命令:
perl -i -pe s/AB/0F/g data

但我希望用程序实现。
谢谢楼上两位的回答!让我在悲伤中看到了希望!
Refer to learning perl 4th edition.

#!/usr/bin/perl -w

use strict;
chomp(my $date= `date`);
$^I = ".bak";

while (<>) {
  s/AB/0F/;
  print;
}
学习中,照着书写了一下



#!/usr/bin/perl -w

$in = $ARGV[0];
if (not defined $in){
die "Usage : $0 filename";
}
$out = $in;
$out =~ s/(\.\w+)?$/.out/;
unless (open IN, "<" , $in) {
        die "Cant't open '$in'; $!";
}
unless (open OUT, ">" , $out) {
        die "Cant't open '$out'; $!";
}
while ( <IN> ) {
        s/$ARGV[1]/$ARGV[2]/gi;
        print OUT;
        print $_;
}

./program data.txt AB OF
就可以了!