#!/usr/bin/perl
open (FILE, 'data.txt');
while (<FILE>) {
($ip,$me,$id) = split(" ");
print "Ip: $ip\n";
open(F,'>ip.txt') || die $!;
print F "$ip \n" ;
close(F);
print "me: $me\n";
print "ID: $id\n";
print "---------\n";
}
close (FILE);
exit;
我希望perl在其编写的文件的换行符中输出print
。如何检查输入文件中的行是否为空。
我希望输出看起来像这样(在ip.txt
中):
123.121.121.0
545.45.45.45
..
..
etc
答案 0 :(得分:2)
您的data.txt中的每一行都会打开ip.txt的文件句柄。那太可怕了并且覆盖了所有内容。你打开它写作(>
),而不是追加(>>
)。这是一个更好的代码。请使用3参数open
,不要使用裸字作为文件句柄。
#!/usr/bin/perl
use strict;
use warnings;
my $file = 'data.txt'
my $ip_file = 'ip.txt';
open( my $FILE, '<',$file ) || die "Can't open $file for reading $!";
open( my $F, '>',$ip_file ) || die "Can't open $ip_file for writing $!";
while ( my $line = <$FILE> ) {
my ( $ip, $me, $id ) = split( " ", $line );
print "Ip: $ip\n";
print $F "$ip \n";
print "me: $me\n";
print "ID: $id\n";
print "---------\n";
}
close ($F);
close( $FILE );