小编jue*_*ann的帖子

Perl 使用变量来引用模块会混淆传递参数

我在使用变量引用模块时遇到问题,它似乎混淆了变量的传递:

多多.pm

package TOTO;

use Data::Dumper;

sub print {
       print Dumper(@_);
}
Run Code Online (Sandbox Code Playgroud)

Perl程序

package main;

TOTO::print('Hello World');
print ">>>>>>>>>>>\n";
my $package = 'TOTO';

$package->print('Hello World');
Run Code Online (Sandbox Code Playgroud)

输出是:

$VAR1 = 'Hello World';
>>>>>>>>>>>
$VAR1 = 'TOTO';
$VAR2 = 'Hello World';
Run Code Online (Sandbox Code Playgroud)

关于如何避免TOTO作为第一个变量传递的任何建议?

perl perl-module

5
推荐指数
1
解决办法
846
查看次数

在eval中使用时,Perl要求无法在@INC中找到库


根据是否可以加载某个模块,我想决定是否使用它:

BEGIN {
  eval {
    require "Bio::EnsEMBL::HDF5";
    $hdf5 = "Bio::EnsEMBL::HDF5";
  };
  if ($@) {
    require "Bio::EnsEMBL::HDF5_mockup";
    $hdf5 = "Bio::EnsEMBL::HDF5_mockup";
  }
}
Run Code Online (Sandbox Code Playgroud)

结果
Can't locate Bio::EnsEMBL::HDF5_mockup in @INC

然而:

use Bio::EnsEMBL::HDF5; 
use Bio::EnsEMBL::HDF5_mockup;
Run Code Online (Sandbox Code Playgroud)

工作良好.此外,当我在BEGIN块中切换HDF5和HDF5_mockup时,它始终找到我首先需要的那个,并且找不到第二个.
谢谢你的指针.

perl

1
推荐指数
1
解决办法
186
查看次数

标签 统计

perl ×2

perl-module ×1