我有文件,我有一行像{<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模块请建议
任何帮助/想法将是值得的,谢谢你
答案 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通常有很多方法可以做。所以在这种情况下 - “需要”意味着“我建议作为一种行动方针”。