perl调用自定义pm问题

ma_zmin 2009-12-04 04:33:31
问题1:
被调用的pm文件需要注意什么。
#!/usr/bin/perl
package HelloWorld;

sub hw{
print "Hello, World...\n";
}
1;

就只有这样可以么?文件名是HelloWorld.pm
问题2:
如果问题1成立,那么在一个pl文件中怎么调用?
use HelloWorld;
...
my $hw = new HelloWorld;
$hw->hw();

这样可以么?
我这里运行出错,麻烦哪位高人帮我看看,我是新注册用户,什么也没有,请帮我一下,谢谢!
...全文
786 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxlfh 2009-12-07
  • 打赏
  • 举报
回复
package HelloWorld;
sub new{
my $class = shift;
my $self = {};
return bless $self, $class;
}
sub hw {
print "Hello, World...\n";
}


package main;
my $hw = HelloWorld->new;
$hw->hw;


这样也可以的。
ma_zmin 2009-12-07
  • 打赏
  • 举报
回复
谢谢大家!了
mjk 2009-12-06
  • 打赏
  • 举报
回复
请参照如下代码:
构造一个叫 Bestiary 的模块,创建一个看着象下面这样的叫 Bestiary.pm 的文件:


package Bestiary;
require Exporter;

our @ISA =qw(Exporter);
our @EXPORT =qw(camel); # 缺省输出的符号
our @EXPORT_OK =qw($weight); # 按要求输出的符号
our $VERSION = 1.00; # 版本号

### 在这里包含你的变量和函数

sub camel { print "One-hump dromedary" }

$weight = 1024;

1;
wxlfh 2009-12-04
  • 打赏
  • 举报
回复
忘了说了,你得把这部分
package HelloWorld;
sub new{
my $class = shift;
my $self = {};
return bless $self, $class;
}
sub hw {
print "Hello, World...\n";
}
1;

存为一个名为HelloWorld.pm的文件,并把它放在@INC里的其中一个目录中。
wxlfh 2009-12-04
  • 打赏
  • 举报
回复
use HelloWorld;
my $hw = HelloWorld->new;
$hw->hw;


package HelloWorld;
sub new{
my $class = shift;
my $self = {};
return bless $self, $class;
}
sub hw {
print "Hello, World...\n";
}
1;


帮你改写一下,现在你应该能按照你调用的方式运行了,呵呵。
wxlfh 2009-12-04
  • 打赏
  • 举报
回复
你自己写的包是不支持OO的,但你调用的方式却是OO的,肯定要出错啦。

建议你看看《Perl语言编程》这本书的相关章节,肯定会有所收获。

37,744

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧