如果txt1和txt2是两个文件的话,编程如下
#!/usr/bin/perl
use strict;
# 定义一个哈希变量存放结果
my %hash;
open TXT1, "foreach my $line ( )
{
# 去除文件的回车换行符
chop($line) while ($line =~ /[\r\n]$/);
# 拆分每一行
my ($name, $path) = split(/::/, $line);
# 忽略空白内容
next if (!$name);
next if (!$path);
# 将结果赋值为变量
$hash{$name}->{path} = $path;
}
close TXT1;
# 同理,读取另一个文件中的内容
open TXT2, "foreach my $line ( )
{
chop($line) while ($line =~ /[\r\n]$/);
my ($name, $number) = split(/::/, $line);
next if (!$name);
next if (!$number);
$hash{$name}->{number} = $number;
}
close TXT2;
open TXT3, ">txt3";
# 输出内容,如果按name排序,使用下面这一行
#foreach my $name (sort keys %hash)
# 如果按number排序,使用下面这一行
foreach my $name (sort {$hash{$a}->{number} cmp $hash{$b}->{number} } keys %hash)
{
print TXT3 $hash{$name}->{number};
print TXT3 "::";
print TXT3 $name;
print TXT3 "::";
print TXT3 $hash{$name}->{path};
print TXT3 "\n";
}
close TXT3;