如何更新文件中的每一行

时间:2015-06-05 08:59:42

标签: perl perl-module

我有文件,我有一行像{<pN_SLOT>,<pN_Port>},用户将给出值N,例如N = 9;然后这些行应该在文件中打印9次,增加N值。 示例:输入文件包含一行,如此{<pN_SLOT>,<pN_Port>},然后在输出文件中,它应更新为{<p0_SLOT>,<p0_Port>}{<p1_SLOT>,<p1_Port>}{<p2_SLOT>,<p2_Port>},...高达{<p8_SLOT>,<p8_Port>} 。 如果有任何perl模块请建议 任何帮助/想法将是值得的,谢谢你

1 个答案:

答案 0 :(得分:0)

这样的事情会做到:

#!/usr/bin/perl

use strict;
use warnings;

my $count = 9;
for my $num ( 0 .. $count ) {
    print "{<p${num}_SLOT>,<p${num}_Port>},\n";
}

如果您正在接收输入文件,并希望将“N”替换为“数字”,那么您需要*是正则表达式:

#!/usr/bin/perl

use strict;
use warnings;

my $line = '{<pN_SLOT>,<pN_Port>}';
my $count = 9;
for my $num ( 0 .. $count ) {
    my $newline = ( $line =~ s/N/$num/gr ); 
    print "$newline\n";
}

perlre页面将为您提供更多可用于转换文本的正则表达式。

至于从文件和数字中读取 - 这实际上是同样的问题。 STDIN是一个“标准输入”文件句柄。

您可以使用<STDIN>阅读。

e.g。

print "Enter Number:\n"; 
my $response = <STDIN>; 
chomp ( $response ); #necessary, because otherwise it includes a linefeed. 

或者从磁盘上的文件中读取:

open ( my $input_file, "<", "your_file_name" ) or die $!; 
my $line = <$input_file>;  #note - reads just ONE LINE here. 
chomp ( $line ); 
close ( $input_file ); 

如果您想在第二个示例中阅读多行,您可能需要查看perlvar,尤其是$/运算符。

*需求很强 - perl通常有很多方法可以做。所以在这种情况下 - “需要”意味着“我建议作为一种行动方针”。