perl的pm包里如何调用其他perl文件里的方法?

因为历史遗留问题,系统中会有一些自建的非面向对象的公共函数包。
现在我在现有平台上搭建新的东西,建了个pm包,在测试的服务器上,pm包里只要require了其他的perl函数包(如require('xxx/xx/xx.pl);),就可以直接用其中函数(如&getxxx();)。
但是整体搬到另一个服务器之后,这种调用就失效了。
也考虑过重新写那些老的函数包,但是考虑到时间问题,还是想试试能否直接调用。
请教这是为什么?如何才能调用?

1) 你说的 "调用失效", 是你的 pm 包, 还是 main ?

2) 怎麼个失效法 ? 报甚麼错 ?

3) 看看你放 pm 包的位置是否在这里

print $_.$/ foreach @INC


4) require('xxx/xx/xx.pl), 你这是 linux 还是 windows, 如果是 linux, 那看放其他 .pl 包的路径是否已有读取权限

5) 重新检查一次, 个别 package / pl 中所需要的其他 module 是否也已在新系统上配置妥当

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-23
如下:
set array("a") 1
set array("b") 2
然后在另一个文件里面可以通过source 命令,然后test.tcl就能访问array 如下:
source test.tcl
puts "$array($a)"
第2个回答  2013-05-02
1、确认你的其他的*.pl文件也在其他服务器上有部署;
2、确认文件的路径是否一致,字符大小写,以及引用的是绝对还是相对路径;
3、如果排出上述问题,那么重新在新服务器上直接本地也做一个pm运行试试看追问

感谢帮助!
1、其他的pl文件在另外的服务器上有,这个可以确定
2、这个也可以确定...
3、这个意思是直接做个pm包做测试?
另外这个是否是开发环境配置的原因?

追答

有怀疑的,但是试验过了才知道阿

perl的pm包里如何调用其他perl文件里的方法?
1) 你说的 "调用失效", 是你的 pm 包, 还是 main ?2) 怎麼个失效法 ? 报甚麼错 ?3) 看看你放 pm 包的位置是否在这里 print $_.$\/ foreach @INC4) require('xxx\/xx\/xx.pl), 你这是 linux 还是 windows, 如果是 linux, 那看放其他 .pl 包的路径是否已有读取权限 5) 重新检查...

perl如何调用其他的perl文件?
可以使用两种方法:1.require "xxx.pl";2.use xxx.pm;加入require或者use在perl中相当于将文件xxx.pl\/pm整个文件都添加到调用它的文件中;例如:gettime.pl !\/usr\/bin\/perl print "gettime is 2011-07-25 14:40:10\\n";showtime.pl !\/usr\/bin\/perl require "gettime.pl";print "get ti...

Perl文件里如何调用另一个文件里边的命令
require命令就可以啊,或者自己封装成pm库用use命令导进来

什么是OOP
print "\\nEveryone says: ", $global_sound; # prints "pigs do it better" 请注意,可以在所有三个包(“main”、“Pig”和“Cow”)中访问文件作用域内的词法变量 $extra_sound ,因为在该示例中它们是在同一文件中定义的。通常,每个包在它自己文件内部定义,以确保词法变量为该包所私有。这样就可以实现封装。

谁能解释下这句perl中main后面的::。 这个main是什么?
首先你得明白 perl 里面所有的脚本, 包括模组(.pm) 或是主程序 (youscript.pl) 其实都是包 (package).因此, 你的主程序其实就是一个默认叫做 main 的包.另一个你要知道的是, 如果我们想从主程序得到另一个包的内容或涵数时, 我们会写成 output = &some::package::method( $argv );或者...

后缀为.prl的文件时perl文件么?
是的,保存成perl文件可以存成.prl 、.pl或者直接就是文件名什么后缀都不用加。

perl语言中的.pm文件和.pl文件有何区别
椤@�� Socket.pm .pl 应该保存 Perl Library,也就是 Perl 库文件。例如 perldb.pl .plx 应该保存 Perl 脚本。可是实际上大家都习惯用 .pl 来保存 Perl 脚本。另外,use 语句会自动搜索后缀为 .pm 的文件,因此如果你想要写一个模块,那么最好还是以 .pm 做后缀好了。

查看安装了哪些perl模块
如果你用的是 ActivePerl, 那你可以直接用 ppm, 打开图形界面,这里告诉了你, 你系统上已安网了那些模块 但如果你用的不是 ActivePerl, 那就得用手动的, 在 perl 的安装目录下, 有 lib\/ 和 \/site\/lib 这两个资料夹. 在没有其他设定干扰的情况下, \/lib 下放置了是安装 perl 的时候已自带了...

perl如果正常安装DBI和DBD::mysql模块,以及怎么用perlapp去编译它...
右点一下 Bound file , 你可以加入自己想加入的档案. perlapp 其实只是将你的代码和目录结构打包, 所以, 只要你能把的要的档案成功加到你要的目录下, 应该就没问题了.而如果遇到找不到 module 的时候, 就在 added modules 上加点一下, 再手动加入你想要的 module 就可以了...最後, 你还得在...

如何从CPAN安装Perl模块
cpan> install HTML::Template 或者用这个方法亦可以 sudo perl -MCPAN -e 'install HTML::Template'要是上面的所给的命令发出“Can't locate CPAN.pm in @INC“的错误提示,你首先想到是应该用标准的Linux包管理器命令来安装CPAN 对于 CentOS, Fedora 或者 RHEL:sudo yum -y install perl-CPAN ...

相似回答