perl读取文件,然后替换内容,再生成新的文件。然后打包。(有分)

perl读取文件,然后替换内容,再生成新的文件。然后打包。(有分),第1张

这个问题问的有点儿含糊,不过提供一个可能的方法供您参考。
使用 perl 的 $^| 命令,这个命令的用法解释为:
1、$^|=“” -- 设置为空代表修改文件内容;
2、$^|=“other” -- 代表将修改后的文件保存为 filenameother

my $inputF = @ARGV[0];
my $inputS = @ARGV[1];
my $output = @ARGV[2];
open INPUTF , $inputF or die "cannot open the file:$inputS$!\n";
open INPUTS, $inputS or die "cannot open the file:$inputS$!\n";
open OUTPUT, ">$output" or die "cannot open the file:$inputS$!\n";
our @listN=();
our %listL=();
my @line;
while(<INPUTF>)
{
chomp;
next unless $_;
@listN = split /;/,$_; #将text1txt 用“;”分割,放入数组@listN中
foreach my $n(@listN) #每行的内容都放入另一个数组@line里面保存
{ #(直至最后全部存在@line中)
push (@line, $n);
}
}
#print "@line\n"; #调试
while(<INPUTS>)
{
chomp;
next unless $_;
my @map = split /\s+/,$_; #将text2txt 用空格分割放入数组@map中
$listL{$map[0]}=$map[1] unless exists $listL{$map[0]};#并将$map[0]作为key值存在哈希
}
foreach my $list(@line) #把text1txt中的全部拿出来找相关的mapping对象
{
if (exists $listL{$list}) #如果找到了 证明有mapping object
{
print OUTPUT "number: $list, mapping: $listL{$list}\n"; #输出到text3txt中(自命名)
}
}
#perl F:\perltest\mappingpl F:\perltest\text1txt F:\perltest\text2txt F:\perltest\text3txt

间接文件句柄

使用 open 函数打开文件

die 函数

warn 函数

说明:

每次打开句柄后,都要记得关闭

测试文件的必要性

-r read 例如, -r 'file' : 可以读取'file'文件,则返回为真
-w write 例如, -w $a : $a 中包含的文件名是可以写入的文件,则返回为真
-e exist 例如, -e 'myfile' : 'myfile'文件存在,则返回为真
-z zero 例如, -z 'data' : 'data'文件存在,但是文件为空,则返回为真
-s size 例如, -s 'data' : 'data'文件存在,则返回'data'的大小(字符个数)

-f file 例如, -f 'noveltxt' :'noveltxt'是个普通文件(区别于二进制文件、可执行文件等),则为
-d directory 例如, -d '/tmp' : '/tmp'是个目录,则为真

-T text 例如, -T 'unkonw' :'unkonw'为文本文件,则为真
-B bin 例如, -B 'unkonw' :'unkonw'为二进制文件,则为真
-M 例如, -M 'foo' : 返回'foo'文件被修改后经过的时间


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13323421.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-14
下一篇 2023-07-14

发表评论

登录后才能评论

评论列表(0条)

保存