[Perl Other] perl打包成一个文件的建议
转载本站文章请注明,转载自:扶凯[http://www.php-oa.com]
本文链接: http://www.php-oa.com/2009/11/05/perl-par-packer.html
近来为公司写一个程序需要跑在公司几k的服务器,因为担心有问题测试了无数次.最后还是要上线之前,还是坚持拿到线上测试一下,看看有没有问题,果然,给Perl做成rpm包后.还是有些小问题..还好坚持做完所有的测试.
有什么问题啦?这些问题主要是由于pp打包后产生的(pp -c -o Get Get.pl).我们都知道Perl中有个超级好的模块,叫PAR::Packer.这个可以给Perl写的程度打包成一个程序,这样在别的机器上就不用安装.它相当于一个perl捆绑机..哈哈..
写的程序出了什么问题啦?
在测试的过程中,我怎么感觉都没有问题了,后来发现提示二个错,第一个.
1.任务xml解析时出错 Can’t locate object method "new" via package "XML::LibXML::SAX" at XML/SAX/ParserFactory.pm line 43.
这个主要是因为我使用了二个xml解析和写xml的软件,如下,大多pp打包只要显示的use一下就行了
use XML::Simple;
use XML::Writer;
修复
use XML::Simple;
use XML::Writer;
use XML::LibXML::SAX;
2.Unknown encoding ‘gb2312′ at script/ccTAd.pl line 395
提示没有gb2312.因为我使用了Encode 这个模块.所以如上,也需要显示的加入中文的Encode不然打包会出问题.
use Encode;
use Encode::CN;
总结:1.打包时,要注意动态加载的模块,需要显示的use.2.多测试,多测试
PP 命令的使用
PP来生成PAR文件(相当于JAVA的JAR文件,可用RAR打开来查看),PAR里包含了可运行脚本及其依赖,然后用PARL来运行PAR里的可运行 脚本:
"pp -p -B -I ./src -o ./ebnms.par ./test/test_svr/start_svr.pl ./src/scp.pl"
-p 生成PAR
-B 将各种依赖项打进去
-I 加入到@INC
-o 生成的文件名


















