利用Perl查找匹配打印字符串

txt1:
name1::path1
name2::path2
txt2:
name1::number1
name2::number2
txt3:
number1::name1::path1
number2::name2::path2
如上,怎样利用Perl语言实现输入txt1和txt2,输出txt3??求各位大神赐教啊

如果txt1和txt2是两个文件的话,编程如下

#!/usr/bin/perl
use strict;

# 定义一个哈希变量存放结果
my %hash;

open TXT1, "<txt1";
foreach my $line (<TXT1>)
{
    # 去除文件的回车换行符
    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, "<txt2";
foreach my $line (<TXT2>)
{
    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;
温馨提示:答案为网友推荐,仅供参考