【问题标题】:While loop is not working to read file in perl script虽然循环无法读取 perl 脚本中的文件
【发布时间】:2014-10-05 05:57:45
【问题描述】:

我正在编写一个 perl 脚本,我正在尝试读取两个差异文件..

第一个文件

open my $data1, "<", "/tmp/CSI_to_PROD_111111_20141004_225038/att_application.properties"
    or die "Unable to open prod file";

while (<$data1>) {
    chomp();
    foreach $line (<$data1>) {
        next if ( $line =~ /(^\s*#|^$)/ );
        chomp($line);
        foreach $token (@csitokens) {
            if ( $line =~ /$token=/ ) {
                my ( $tok, @val ) = split( /=/, $line, 2 );
                print "@val\n";
            }
        }
    }
}
close($data1) or warn "Not able to close fil: \n";

第二个文件

open my $data2, "<", "/opt/app/d1ebl1m5/dv02/cingbt02/J2EEServer/config/AMSS/application/properties/att_application.properties_try"
    or die "unable to open file: $!";

while (<$data2>) {
    foreach $line1 (<$data2>) {
        print "$line1";
    }
}
close($data2) or warn "Not able to close fil: \n";

第一个文件的循环工作正常并显示输出,但第二个循环不显示任何内容..

【问题讨论】:

  • 同时从文件中读取一行。 Foreach 也是如此。所以你正在跳槽。

标签: perl scripting while-loop


【解决方案1】:

whileforeach 循环太多。您只需要其中之一:

open my $data2, "<" , "/opt/app/d1ebl1m5/dv02/cingbt02/J2EEServer/config/AMSS/application/properties/att_application.properties_try"  
   or die "unable to open file: $!";

while( my $line1 = <$data2> ) {
    print "$line1";
} 
close($data2);

这同样适用于第一个循环。文件打开后,您的 die-check 也有错误

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 2011-07-07
    相关资源
    最近更新 更多