Perl 为什么使用以下脚本时输出不同?
我的输入文件:Perl 为什么使用以下脚本时输出不同?,perl,Perl,我的输入文件: 103M:A|PDBID|CHAIN|SEQUENCE MVLSEGEWQLVLHVWAKVEADVAGHGQDILIRLFKSHPETLEKFDRFKHLKTEAEMKASEDLKKAGVTVLTALGAILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISEAIIHVLHSRHPGNFGADAQGAMNKALELFRKDIAAKYKELGYQG 脚本1: open(FH,"103m.txt")||die "error"; while(<FH>) {
103M:A|PDBID|CHAIN|SEQUENCE
MVLSEGEWQLVLHVWAKVEADVAGHGQDILIRLFKSHPETLEKFDRFKHLKTEAEMKASEDLKKAGVTVLTALGAILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISEAIIHVLHSRHPGNFGADAQGAMNKALELFRKDIAAKYKELGYQG
脚本1:
open(FH,"103m.txt")||die "error";
while(<FH>)
{
print <FH>;
}
脚本2输出:
103M:A|PDBID|CHAIN|SEQUENCE
MVLSEGEWQLVLHVWAKVEADVAGHGQDILIRLFKSHPETLEKFDRFKHLKTEAEMKASEDLKKAGVTVLTALGAILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISEAIIHVLHSRHPGNFGADAQGAMNKALELFRKDIAAKYKELGYQG
这实际上是一个有趣的问题,因为有两个不同的perl概念在起作用 第一个是-
导致从文件中读取一行
因此,如果你:
while ( <FH> ) {
以及:
这将输出:
Loop count 1
$_ is "line 1
"
Printing <DATA>
line 2
line 3
line 4
line 5
注意-上面没有chomp
,因此$\uu
包含换行符
当我们在做这件事的时候,那种形式的open
并不是一种好的做法。相反,我建议:
open ( my $input, '<', "103m.txt" ) or die $!;
open(我的$input,'
while ( defined $_ = <FH> ) {
}
my $line = <FH>;
my @lines = <FH>;
#!/usr/bin/env perl
use strict;
use warnings;
my $count;
while ( <DATA> ) {
print "Loop count ", ++$count,"\n";
print '$_ is "', $_,"\"\n";
print "Printing <DATA>\n";
print <DATA>;
}
__DATA__
line 1
line 2
line 3
line 4
line 5
Loop count 1
$_ is "line 1
"
Printing <DATA>
line 2
line 3
line 4
line 5
#!/usr/bin/env perl
use strict;
use warnings;
my $count;
while ( <DATA> ) {
print "Loop count ", ++$count,"\n";
print '$_ is "', $_,"\"\n";
print 'printing $_',"\n";
print $_;
}
__DATA__
line 1
line 2
line 3
line 4
line 5
Loop count 1
$_ is "line 1
"
printing $_
line 1
Loop count 2
$_ is "line 2
"
printing $_
line 2
Loop count 3
$_ is "line 3
"
printing $_
line 3
Loop count 4
$_ is "line 4
"
printing $_
line 4
Loop count 5
$_ is "line 5"
printing $_
line 5
open ( my $input, '<', "103m.txt" ) or die $!;