Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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
perloop传递变量_Perl - Fatal编程技术网

perloop传递变量

perloop传递变量,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, '&

我是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, '<$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);