$count = split /:/, "tile:lll:dd"
就可以得到有多少个元素了啊


On 11/02/2012 08:18 AM, 郭俊杰 wrote:
给力

在 2012年11月1日 下午8:45,Jacky Xu <[email protected] <mailto:[email protected]>>写 道:

    深刻,给力。

    发自我的 iPhone

    在 2012-11-1,20:38,"李 鎮(Zhen Li)" <[email protected]
    <mailto:[email protected]>> 写道:

    Hi,

    做了个小实验, 明白了一些事情,拿来分享。
    Q1:
    > 书中说,split 函数返回结果有多少个元素可以用下面的方法
    >   my $count = ( ) = split /:/, $line;
    >  但是我测试,发现$count的值只是为1

    my $line = "this:is:test:line:for:split.";
    my $cnt =  () = (split /:/, $line);
    返回值为1,

    这里的奥妙在split这里,
    split这个函数,需要别人告诉它,分割数是多少(就是它要返回多少个数
    值)。
    但是()代表空list,
    () = (split /:/, $line)这种情况下,split不清楚分割数是多少。
    我猜测它在这里返回的是个布尔值的结果。

    接着,
    my $cnt = () = (split /:/, $line, -1);
    返回值为6,
    这里添加的-1, 明确告诉split, 最大分割数是无限,
    所以这时侯split把数组返回来了。

    Q2,
    >书上还有一个例子,如书所说返回。
    >     my $elements = ( ) = localtime;
    这里结果是9,
    localtime返回日期内容的数组,什么年月日的都在里面。
    看一下它的说明就知道了。

    localtime返回的数组,首先被()这个空列表捕获,
    因为$elements = ( ) 这个表达式,代表sclar context,
    这样,数组的数量,就赋给了$elements。

    以上,
    希望我得解释容易理解,能对大家有所帮助。
    呵呵。

    2012/10/27 Robin Lee <[email protected]
    <mailto:[email protected]>>

        没用过这种表达方式

        my $count = split /:/, $line;
        不就可以了吗?

        如果要强制使用 List Context,应该推荐这样写:
        my $elements = @{[localtime]};


        2012/10/26 x2x4 <[email protected] <mailto:[email protected]>>

            Hi 各位
                最近在看Perl高效编程,其中的=()=让我疑惑

                书中说,split 函数返回结果有多少个元素可以用下面的方法
                my $count = ( ) = split /:/, $line;

                但是我测试,发现$count的值只是为1

                my $line = "this:is:test:line:for:split.";
                my $count = ( ) = split /:/, $line;
                print "split = $count\n";

                如果换成
                my $count = my @test = split /:/, $line;
                返回为6

                书上还有一个例子,如书所说返回。
                 my $elements = ( ) = localtime;

                 疑惑,求解。

            --
            您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina
            Mongers 讨论组”论坛。
            要向此网上论坛发帖,请发送电子邮件至
            [email protected]
            <mailto:[email protected]>。
            要取消订阅此网上论坛,请发送电子邮件至
            [email protected]
            <mailto:perlchina%[email protected]>。
            若有更多问题,请通过
            http://groups.google.com/group/perlchina?hl=zh-CN 访问此
            网上论坛。


-- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina
        Mongers 讨论组”论坛。
        要向此网上论坛发帖,请发送电子邮件至
        [email protected] <mailto:[email protected]>。
        要取消订阅此网上论坛,请发送电子邮件至
        [email protected]
        <mailto:perlchina%[email protected]>。
        若有更多问题,请通过
        http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上
        论坛。




-- +++++++_++++++++
    李 鎮
    株式会社ディー・エヌ・エー
    ソーシャルプラットフォーム事業本部 システム部
    〒150-8510
    東京都渋谷区渋谷2丁目21番1号渋谷ヒカリエ
    Shibuya Hikarie 2-21-1, Shibuya, Shibuya-ku, Tokyo 150-8510
    ++++++ *-* +++++++

-- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨
    论组”论坛。
    要向此网上论坛发帖,请发送电子邮件至 [email protected]
    <mailto:[email protected]>。
    要取消订阅此网上论坛,请发送电子邮件至
    [email protected]
    <mailto:[email protected]>。
    若有更多问题,请通过
    http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
-- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨
    论组”论坛。
    要向此网上论坛发帖,请发送电子邮件至 [email protected]
    <mailto:[email protected]>。
    要取消订阅此网上论坛,请发送电子邮件至
    [email protected]
    <mailto:perlchina%[email protected]>。
    若有更多问题,请通过
    http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。


--
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组” 论坛。
要向此网上论坛发帖,请发送电子邮件至 [email protected]
要取消订阅此网上论坛,请发送电子邮件至 [email protected]若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

--
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 [email protected]。
要取消订阅此网上论坛,请发送电子邮件至 [email protected]。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

回复