如何将每行添加到txt文件中的单行Perl?
我有问题,这部分我的代码COSE:如何将每行添加到txt文件中的单行Perl?
foreach my $line(keys %results){
print Dump($post) if $results{$line} == 1;
}
我需要它只是一个时间打印“打印转储($ POST)”
这里是所有部分
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;
}
$帖子包含同样喜欢它行,但哈希我得到randomed行,如果我打印一行一行的COSE ...
如果我运行代码,它将repat印刷后4-5 TI MES它取决于线路有多少在它后(线来dinamicly),但我需要后进行打印只是一个时间......
如何:
my $dump_done = 0;
foreach my $line(keys %results){
if ($results{$line} == 1 and !$dump_done) {
print Dump($post);
$dump_done = 1;
}
}
谢谢队友!它的工作 – Hellena 2013-02-19 13:40:24
这听起来像你想只打印一次,只要你的结果至少有一行等于一行。
如果这是正确的,你可以让这个简单的修改代码:
foreach my $line(keys %results){
if ($results{$line} == 1)
{
print Dump($post);
last;
}
}
这会尽快退出循环,你找到一个匹配。
如果因为其他原因需要完成整个循环,请使用M42的解决方案。
这也是正确的,谢谢! – Hellena 2013-02-19 13:46:52
你目前有什么问题? – 2013-02-19 13:02:29
您正在尝试查找'data.txt'中的行,而不是'ini.txt'中的行,对吗? – simbabque 2013-02-19 13:03:19
你还没有分配任何东西给你正在倾销的变量'$ post'。因此,如果您按原样运行此代码,它将只打印一堆空的(未定义的)行。 – TLP 2013-02-19 13:12:49