Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.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 pdl导出pdl()_Perl_Export_Pdl - Fatal编程技术网

仅从perl pdl导出pdl()

仅从perl pdl导出pdl(),perl,export,pdl,Perl,Export,Pdl,我只想从pdl导出pdl()函数,以避免与其他自动导出的函数(如max,median,sum,intersect等)发生命名空间冲突。但是,当我尝试 use PDL qw(pdl); 它不起作用,因为前面提到的函数仍然会被导出(并且我会收到关于正在重新定义的函数的警告) 另一方面,如果我这样做 use PDL qw(); 碰撞没有发生。但是,当我试图通过pdl::pdl()在程序中使用pdl()函数时,失败并显示以下错误消息: Can't call method "new" on unble

我只想从
pdl
导出
pdl()
函数,以避免与其他自动导出的函数(如
max
median
sum
intersect
等)发生命名空间冲突。但是,当我尝试

use PDL qw(pdl);
它不起作用,因为前面提到的函数仍然会被导出(并且我会收到关于正在重新定义的函数的警告)

另一方面,如果我这样做

use PDL qw();
碰撞没有发生。但是,当我试图通过
pdl::pdl()
在程序中使用
pdl()
函数时,失败并显示以下错误消息:

Can't call method "new" on unblessed reference at Basic/Core/Core.pm.PL (i.e. PDL::Core.pm) line 934.
此外,我还尝试了脚本内部

{
     require PDL;
     pdl();
}
我收到了相同的错误消息

有人能告诉我如何只导出pdl()吗?谢谢

概要 使用PDL;#相当于以下内容:

   use PDL::Core;
   use PDL::Ops;
   use PDL::Primitive;
   use PDL::Ufunc;
   use PDL::Basic;
   use PDL::Slices;
   use PDL::Bad;
   use PDL::MatrixOps;
   use PDL::Math;
   use PDL::Version;
   use PDL::IO::Misc;
   use PDL::IO::FITS;
   use PDL::IO::Pic;
   use PDL::Lvalue;
我想如果您只导入PDL::Core,您将只获得此模块中的函数

概要 使用PDL;#相当于以下内容:

   use PDL::Core;
   use PDL::Ops;
   use PDL::Primitive;
   use PDL::Ufunc;
   use PDL::Basic;
   use PDL::Slices;
   use PDL::Bad;
   use PDL::MatrixOps;
   use PDL::Math;
   use PDL::Version;
   use PDL::IO::Misc;
   use PDL::IO::FITS;
   use PDL::IO::Pic;
   use PDL::Lvalue;

我想如果您只导入PDL::Core,您将只获得此模块中的函数。

我实际上有点惊讶于
使用PDL qw()
使用PDL
有什么不同。事实上,我不明白它是如何做到的:来自
PDL::import
的代码没有注意到它的参数。为此创建了一个不同的模块,称为
PDL::Lite
,相当于:

use PDL::Core '';
use PDL::Ops '';
use PDL::Primitive '';
use PDL::Ufunc '';
use PDL::Basic '';
use PDL::Slices '';
use PDL::Bad '';
use PDL::Version;
use PDL::Lvalue;
从通常的
使用PDL
中删除一些附加功能,并且不导入任何功能。(
PDL::Lvalue
PDL::Version
不导出任何内容。)


关于第二个问题,当您
使用PDL::Lite
时,您仍然可以使用
PDL->PDL(1,2,3)
访问
PDL
构造函数。您不能说
PDL::PDL(1,2,3)
,因为构造函数实际上是在
PDL::Core
包中定义的。所以,
PDL::Core::PDL(1,2,3)
符合你的意思,但不是显而易见的选择。

事实上,我有点惊讶于
使用PDL qw()
使用PDL
有什么不同。事实上,我不明白它是如何做到的:来自
PDL::import
的代码没有注意到它的参数。为此创建了一个不同的模块,称为
PDL::Lite
,相当于:

use PDL::Core '';
use PDL::Ops '';
use PDL::Primitive '';
use PDL::Ufunc '';
use PDL::Basic '';
use PDL::Slices '';
use PDL::Bad '';
use PDL::Version;
use PDL::Lvalue;
从通常的
使用PDL
中删除一些附加功能,并且不导入任何功能。(
PDL::Lvalue
PDL::Version
不导出任何内容。)


关于第二个问题,当您
使用PDL::Lite
时,您仍然可以使用
PDL->PDL(1,2,3)
访问
PDL
构造函数。您不能说
PDL::PDL(1,2,3)
,因为构造函数实际上是在
PDL::Core
包中定义的。所以,
PDL::Core::PDL(1,2,3)
符合您的意思,但不是明显的选择。

不,不要只导入PDL::Core。这些模块中的许多都假设其他模块已加载,因此您必须使用
使用PDL
来完成整个过程。不,不要只导入PDL::Core。这些模块中的许多都假设其他模块已加载,因此您必须使用
使用PDL
来完成整个过程。