Perl 如何在每行末尾添加字母表,并在下一行增加字母表,依此类推
我的代码如下:Perl 如何在每行末尾添加字母表,并在下一行增加字母表,依此类推,perl,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" ; foreach my $line (@results) {
#!/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";
}
}
#/usr/local/bin/perl
使用警告;
严格使用;
my$inputfile=“file1.txt”;
打开FH,$inputfile;
我的@results=;
关闭FH;
打印“\n------类型n------\n”;
foreach my$行(@results){
如果($line=~m/(^Mgn\d\.qna.*)/i)
{
打印“$1\n”;
}
}
打印“\n------类型p------\n”;
foreach my$行(@results){
如果($line=~m/(^Mgp\d\.qpa.*)/i)
打印“$1\n”;
}
}
输出:来自上述脚本
---------n型--------------
Mg1.qna无vss n 0.36 0.03 mult=4
$$UNI
Mg3.qna无vss n 0.36 0.03 mult=8
$$UNI
Mg5.qna无vss n 0.36 0.03 mult=6
$$UNI
Mg7.qna无vss n 0.36 0.03 mult=4
$$UNI
Mg9.qna无vss n 0.36 0.03
mult=34$$UNI
---------p型--------------
Mg2.qpa o a vcc vcc p 0.36 0.03 mult=6
$$UNI
Mg4.qpa o a vcc vcc p 0.36 0.03 mult=4
$$UNI
Mg6.qpa o a vcc vcc p 0.36 0.03 mult=8
$$UNI
Mg8.qpa o a vcc vcc p 0.36 0.03
mult=34$$UNI
我需要如下输出
---------n型--------------
Mg1.qna无vss n 0.36 0.03 mult=4
$$UNI a
Mg3.qna无vss n 0.36 0.03 mult=8
$$UNI b
Mg5.qna无vss n 0.36 0.03 mult=6
$$UNI c
Mg7.qna无vss n 0.36 0.03 mult=4
$$UNI d
Mg9.qna无vss n 0.36 0.03
mult=34$$UNI e
---------p型--------------
Mg2.qpa o a vcc vcc p 0.36 0.03 mult=6
$$UNI f
Mg4.qpa o a vcc vcc p 0.36 0.03 mult=4
$$UNI g
Mg6.qpa o a vcc vcc p 0.36 0.03 mult=8
$$UNI h
Mg8.qpa o a vcc vcc p 0.36 0.03
mult=34$$UNI i
<>这并不能解决你可能需要考虑的所有问题,但是这里有一个不同的方法来考虑你的脚本:
my @regexes = (
qr/(...)/,
qr/(...)/,
);
for my $r (@regexes){
my $letter = 'a';
my @matches = map { $_ =~ $r ? $1 : () } @results;
print join(' ', $_, $letter ++), "\n" for @matches;
}
让代码编译。解决了你的问题。介绍了一些现代Perl习惯用法
#!/usr/bin/env perl
use warnings;
use strict;
my $inputfile = 'file1.txt';
open my $infh, '<', $inputfile or die "Can't open $inputfile: $!\n";
my (@type_n, @type_p);
while (<$infh>) {
push @type_n, $_ if /(^Mgn\d\.qna.*)/i;
push @type_p, $_ if /(^Mgp\d\.qpa.*)/i;
}
close $infh;
my $chr = 'a';
print "\n---------type n--------------\n" ;
foreach (@type_n) {
print "$_ " . $chr++ . "\n";
}
print "\n---------type p--------------\n" ;
foreach (@type_p) {
print "$_ " . $chr++ . "\n";
}
#/usr/bin/env perl
使用警告;
严格使用;
my$inputfile='file1.txt';
打开我的$infh,“你可以使用类似的东西
bash-3.2$ cat /tmp/$$
Mg1.qna o a vss vss n 0.36 0.03 mult=4 $$UNI
Mg3.qna o a vss vss n 0.36 0.03 mult=8 $$UNI
Mg5.qna o a vss vss n 0.36 0.03 mult=6 $$UNI
Mg7.qna o a vss vss n 0.36 0.03 mult=4 $$UNI
Mg9.qna o a vss vss n 0.36 0.03 mult=34 $$UNI
Mg2.qpa o a vcc vcc p 0.36 0.03 mult=6 $$UNI
Mg4.qpa o a vcc vcc p 0.36 0.03 mult=4 $$UNI
Mg6.qpa o a vcc vcc p 0.36 0.03 mult=8 $$UNI
Mg8.qpa o a vcc vcc p 0.36 0.03 mult=34 $$UNI
bash-3.2$ perl -lne 'BEGIN{$val=a} print "$_", " $val"; ++$val' /tmp/$$
Mg1.qna o a vss vss n 0.36 0.03 mult=4 $$UNI a
Mg3.qna o a vss vss n 0.36 0.03 mult=8 $$UNI b
Mg5.qna o a vss vss n 0.36 0.03 mult=6 $$UNI c
Mg7.qna o a vss vss n 0.36 0.03 mult=4 $$UNI d
Mg9.qna o a vss vss n 0.36 0.03 mult=34 $$UNI e
Mg2.qpa o a vcc vcc p 0.36 0.03 mult=6 $$UNI f
Mg4.qpa o a vcc vcc p 0.36 0.03 mult=4 $$UNI g
Mg6.qpa o a vcc vcc p 0.36 0.03 mult=8 $$UNI h
Mg8.qpa o a vcc vcc p 0.36 0.03 mult=34 $$UNI i
请格式化这篇文章(),如果你发布的代码确实可以编译,那就太好了。如果您希望我们帮助您,那么请帮助我们帮助您;打印$x++1。。26'
bash-3.2$ cat /tmp/$$
Mg1.qna o a vss vss n 0.36 0.03 mult=4 $$UNI
Mg3.qna o a vss vss n 0.36 0.03 mult=8 $$UNI
Mg5.qna o a vss vss n 0.36 0.03 mult=6 $$UNI
Mg7.qna o a vss vss n 0.36 0.03 mult=4 $$UNI
Mg9.qna o a vss vss n 0.36 0.03 mult=34 $$UNI
Mg2.qpa o a vcc vcc p 0.36 0.03 mult=6 $$UNI
Mg4.qpa o a vcc vcc p 0.36 0.03 mult=4 $$UNI
Mg6.qpa o a vcc vcc p 0.36 0.03 mult=8 $$UNI
Mg8.qpa o a vcc vcc p 0.36 0.03 mult=34 $$UNI
bash-3.2$ perl -lne 'BEGIN{$val=a} print "$_", " $val"; ++$val' /tmp/$$
Mg1.qna o a vss vss n 0.36 0.03 mult=4 $$UNI a
Mg3.qna o a vss vss n 0.36 0.03 mult=8 $$UNI b
Mg5.qna o a vss vss n 0.36 0.03 mult=6 $$UNI c
Mg7.qna o a vss vss n 0.36 0.03 mult=4 $$UNI d
Mg9.qna o a vss vss n 0.36 0.03 mult=34 $$UNI e
Mg2.qpa o a vcc vcc p 0.36 0.03 mult=6 $$UNI f
Mg4.qpa o a vcc vcc p 0.36 0.03 mult=4 $$UNI g
Mg6.qpa o a vcc vcc p 0.36 0.03 mult=8 $$UNI h
Mg8.qpa o a vcc vcc p 0.36 0.03 mult=34 $$UNI i