免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1870 | 回复: 6
打印 上一主题 下一主题

intermediate perl 中看不懂的地方 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-12 14:50 |只看该作者 |倒序浏览
###############Destroy Barn1
#!/usr/bin/perl
{package Animal;
    sub speak {
        my $class=shift;
        print $class->name," goes ",$class->sound,"\n";
    }
    sub name{
                my $self=shift;
                ref $self
                ? $$self
                : $self;
        }
    sub named {
                my $class=shift;
                my $name=shift;
                bless \$name,$class;
    }
    sub DESTROY{
            my $self=shift;
            print '[',$self->name," has died.]\n";
    }
    sub eat {
            my $class=shift;
            my $food=shift;
            print $class->name," eat","  $food\n";
    }
}
{package Cow;
        @ISA=qw(Animal);
        sub sound{'neigh'};
        
}

sub feed_a_cow_named {
        my $name=shift;
        my $cow=Cow->named($name);
        $cow->eat('grass');
        print "Returning from the subroutine.\n";
}
{package Barn;
        sub new {bless [],shift};
        sub add {push @{+shift},shift};  =========>这句话什么意思,+号什么意思
        sub contents {@{+shift}};
        sub DESTROY {
                my $self=shift;
                print "$self->nameaa is being destroyed\n";
                for ($self->contents){
                        print ' ',$_->name," goes homeless.\n";
                }
        }
}
my $barn=Barn->new;
$barn->add(Cow->named('Bessie'));
$barn->add(Cow->named('Gwen'));
print "Burn the barn:\n";
$barn=undef;
print "End of program.\n";

论坛徽章:
8
双子座
日期:2013-08-31 07:37:12金牛座
日期:2013-09-09 18:49:12处女座
日期:2013-09-23 11:43:14处女座
日期:2013-10-09 19:48:21狮子座
日期:2014-03-24 18:22:12丑牛
日期:2014-04-22 22:07:51申猴
日期:2014-06-12 21:54:13双鱼座
日期:2014-06-13 21:52:31
2 [报告]
发表于 2012-12-12 15:44 |只看该作者
还在看perl语言入门……

论坛徽章:
0
3 [报告]
发表于 2012-12-12 15:51 |只看该作者
我快看了2年这本鸟书了,郁闷!!!实践太少!

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
4 [报告]
发表于 2012-12-12 16:30 |只看该作者
回复 1# fucj

they are the same
sub add {push @{+shift},shift};
sub add {push @{shift()},shift};

you will get error message if you write shift only in @{...}
sub add {push @{shift},shift};

Ambiguous use of @{shift} resolved to @shift at xxx.pl line 8.
Global symbol "@shift" requires explicit package name at xxx.pl line 8.

   

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
5 [报告]
发表于 2012-12-12 18:06 |只看该作者
sub add {push @{+shift},shift};  =========>这句话什么意思,+号什么意思

在函数定义中 shift 的默认参数是 @_,+ 是为了告诉编译器别把它当成变量 @shift。

论坛徽章:
0
6 [报告]
发表于 2012-12-12 19:14 |只看该作者
如果你看的是影印版的话,我记得那一页的最下面有小字的注释,解释的也很清楚呀。

论坛徽章:
1
CU大牛徽章
日期:2013-03-14 14:08:55
7 [报告]
发表于 2012-12-12 20:51 |只看该作者
俺也再看这本书。。。全是鸟语。。序言引言。。我共找到将近90个生词
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP