我的代码如下:
#!/usr/local/bin/perl
use warnings;
use strict;
my $inputfile = "file1.txt";
open FH,$inputfile;
my @results = <FH>;
close FH;
print "\n---------type n--------------\n" ;
foreach my $line (@results) {
if ($line =~ m/(^Mgn\d\.qna.*)/i)
{
print "$1\n";
}
}
print "\n---------type p--------------\n" ;
foreach my $line (@results) {
if ($line =~ m/(^Mgp\d\.qpa.*)/i)
print "$1\n";
}
}
以下代码打印从Mg1.qna开始的行.....现在我要在每行的末尾添加一个字母作为a,b,c,......有人可以启发我此
答案 0 :(得分:0)
我做了一些改变:
chomp
以删除每行末尾的\n
字符。它可能没有任何区别,但它可以。请记住,当您读入输入时,它可能包含最后的\n
字符。$code++;
。关于Perl的一个好处是,自动递增功能非常聪明。您尝试使用其中的字母自动递增,Perl假定您要按字母顺序更新它。
因此,我只需将$n_code
和$p_code
设置为“a”,然后让Perl处理递增。
你不太清楚你在寻找什么,所以我希望这就是你的意思。
下次,包括一些示例输入和输出。每行六打都会非常有用。
#!/usr/local/bin/perl
use warnings;
use strict;
my $inputfile = "file1.txt";
open FH,$inputfile;
my @results = <FH>;
close FH;
print "\n---------type n--------------\n" ;
my $n_code = "$a";
foreach my $line (@results) {
chomp $line; # Remove possible NL
if ($line =~ m/(^Mgn\d\.qna.*)/i)
{
print "$1 $n_code\n";
$n_code++; #Increment code to next alphabet character
}
}
print "\n---------type p--------------\n" ;
my $p_code = a;
foreach my $line (@results) {
chomp $line; #Remove possible NL
if ($line =~ m/(^Mgp\d\.qpa.*)/i)
print "$1 $p_code\n";
$p_code++; #Increment code to next letter of alphabet
}
}
答案 1 :(得分:0)
my @type_p;
my $l='a'; # ++ op will increment it
print "\n---------type n--------------\n" ;
foreach my $line (@results) {
if ($line =~ m/(^Mgn\d\.qna.*)/i) {
print $1.($l++)."\n";
} elsif ($line =~ m/(^Mgp\d\.qpa.*)/i) { #avoid the 2nd foreach loop
push @type_p,$1;
}
}
print "\n---------type p--------------\n" ;
#$l='a'; #reset counter
print $_.($l++)."\n" for (@type_p);