仅从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
来完成整个过程。