从文件中正确读取,处理输入并将输出写入第二个文件的最佳方法

时间:2013-07-04 17:27:17

标签: perl

#!/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

1 个答案:

答案 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 );