加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

你好世界在perl中的OOP示例?

发布时间:2020-12-15 23:31:48 所属栏目:大数据 来源:网络整理
导读:我正在读一本perl书,但只看过sub关键字的函数示例. 有定义和使用我自己的类的例子吗? 如何将下面的PHP重写为perl? class name { function meth() { echo 'Hello World'; }}$inst = new name;$inst-meth(); 解决方法 basic-perl方式是: 在’Foo.pm’文件中
我正在读一本perl书,但只看过sub关键字的函数示例.

有定义和使用我自己的类的例子吗?

如何将下面的PHP重写为perl?

class name {

   function meth() {
     echo 'Hello World';
   }
}

$inst = new name;
$inst->meth();

解决方法

basic-perl方式是:

在’Foo.pm’文件中:

use strict;
use warnings;
package Foo;
sub new {
   my $class = shift;
   my $self = bless {},$class;
   my %args = @_;
   $self->{_message} = $args{message};

   # do something with arguments to new()
   return $self;
}

sub message {
   my $self = shift;
   return $self->{_message};
}

sub hello {
   my $self = shift;
   print $self->message(),"n";
}
1;

在你的脚本中:

use Foo;
my $foo = Foo->new(message => "Hello world");
$foo->hello();

你可能更喜欢使用Moose,在这种情况下文件’Foo.pm’是:

package Foo;
use Moose;
has message => (is => 'rw',isa => 'Str');
sub hello {
    my $self = shift;
    print $self->message,"n";
}
1;

因为Moose为您制作了所有的访问器.你的主文件是完全一样的……

或者你可以使用Moose扩展来使一切变得更漂亮,在这种情况下,Foo.pm变为:

package Foo;
use Moose;
use MooseX::Method::Signatures;
has message => (is => 'rw',isa => 'Str');

method hello() {
    print $self->message,"n";
}
1;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读