首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在txt文件Perl中将每一行添加到一行?

如何在txt文件Perl中将每一行添加到一行?
EN

Stack Overflow用户
提问于 2013-02-19 20:51:04
回答 2查看 98关注 0票数 0

我对这部分的代码有问题:

代码语言:javascript
复制
foreach my $line(keys %results){
     print Dump($post) if $results{$line} == 1;
}

我需要它只打印一次‘打印转储($post)’

这就是所有的部分

代码语言:javascript
复制
my $f1 = "/home/shaman/Desktop/data.txt";
my $f2 = "/home/shaman/Desktop/ini.txt";


my %results = (); 
open FILE1, "$f1" or die "Could not open file: $! \n";

while(my $line = <FILE1>){
    $results{$line}=1;
}
close(FILE1); 


open FILE2, "$f2" or die "Could not open file: $! \n";
while(my $line =<FILE2>) {  
    $results{$line}++;
}
close(FILE2);  

foreach my $line(keys %results){
    print Dump($post) if $results{$line} == 1;
}

$post包含相同的行,但由于散列的原因,如果我逐行打印,我会得到随机行…

如果我运行代码,它将重新打印post 4-5次,这取决于它的post中有多少行(行来二次),但我需要post只打印一次…

EN

回答 2

Stack Overflow用户

发布于 2013-02-19 21:35:18

这样如何:

代码语言:javascript
复制
my $dump_done = 0;
foreach my $line(keys %results){
    if ($results{$line} == 1 and !$dump_done) {
        print Dump($post);
        $dump_done = 1;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2013-02-19 21:38:23

这听起来像是您只想打印一次,只要您的结果中至少有一行等于1。

如果这是正确的,您可以对您的代码进行以下简单的修改:

代码语言:javascript
复制
foreach my $line(keys %results){
     if ($results{$line} == 1)
     {
          print Dump($post);
          last;
     }
}

一旦找到一个匹配项,它就会退出循环。

如果您出于其他原因需要完成整个循环,请使用M42的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14957965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档