perloop传递变量
我是SeqIO.pmperloop传递变量,perl,Perl,我是SeqIO.pm package SeqIO; use strict; use Carp; use warnings; use vars('@ISA'); use vars('@EXPORT_OK'); require Exporter; @ISA = qw(Exporter); @EXPORT_OK = qw(readSeq writeSeq); sub readSeq { my ($var1)= @_; print "$var1\n"; open IN, '&
package SeqIO;
use strict;
use Carp;
use warnings;
use vars('@ISA');
use vars('@EXPORT_OK');
require Exporter;
@ISA = qw(Exporter);
@EXPORT_OK = qw(readSeq writeSeq);
sub readSeq {
my ($var1)= @_;
print "$var1\n";
open IN, '<$var1' or die "Cannot open file : $!";
while(<IN>) {
chomp $_;
print "$_\n";
}
close IN
}
sub writeSeq {}
sub new {
my $this = {};
bless $this;
return $this;
}
1;
但是当我使用readSeq时,它会显示SeqIO=HASH(0x38ba34),有什么问题吗?当您使用
->
操作符调用Perl子例程作为方法时,invocant(即->
左侧的内容)会作为第一个参数传递到子例程中。因此,将您的方法更改为:
sub readSeq {
my ($self, $var1) = @_;
print "$var1\n";
open my $in, '<', $var1 or die "Cannot open file : $!";
while(<$in>) {
chomp $_;
print "$_\n";
}
}
当您使用
->
操作符作为方法调用Perl子例程时,invocant(即->
左侧的内容)将作为第一个参数传递到子例程中。因此,将您的方法更改为:
sub readSeq {
my ($self, $var1) = @_;
print "$var1\n";
open my $in, '<', $var1 or die "Cannot open file : $!";
while(<$in>) {
chomp $_;
print "$_\n";
}
}
旁白:应该有一个
local$代码>在那里,以避免重击调用者中的数据代码>以避免在调用者中重击数据。
use vars('@ISA');
use vars('@EXPORT_OK');
require Exporter;
@ISA = qw(Exporter);
@EXPORT_OK = qw(readSeq writeSeq);