Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 为什么使用以下脚本时输出不同?_Perl - Fatal编程技术网

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 $!;