{
  "version": "https://jsonfeed.org/version/1", 
  "title": "Perl", 
  "description": "There is more than one way to do it.", 
  "home_page_url": "https://www.v2ex.com/go/perl", 
  "feed_url": "https://www.v2ex.com/feed/perl.json", 
  "icon": "https://cdn.v2ex.com/navatar/202c/b962/123_large.png?m=1439985149", 
  "favicon": "https://cdn.v2ex.com/navatar/202c/b962/123_normal.png?m=1439985149", 
  "items": [
    {
      "author": {
        "url": "https://www.v2ex.com/member/dfgddgf", 
        "name": "dfgddgf", 
        "avatar": "https://cdn.v2ex.com/avatar/02b2/8955/498257_large.png?m=1663237494"
      }, 
      "url": "https://www.v2ex.com/t/880334", 
      "date_modified": "2022-09-18T08:22:20+00:00", 
      "content_html": "<pre><code class=\"language-perl\">#cpan https://cpan.metacpan.org/authors/id/S/SR/SRI/Mojolicious-7.31.tar.gz\n#cpanm -n Mojolicious@7.31\nuse feature ':5.10';\nuse strict;\nuse warnings;\nuse utf8;\nuse Mojo;\nuse Encode qw(decode encode);\n##########################################################################\n$ENV{MOJO_REACTOR} = 'Mojo::Reactor::EV';\n\n#\u4f7f\u7528 EV \u5177\u6709\u66f4\u597d\u7684\u6027\u80fd\nmy $ua = Mojo::UserAgent-&gt;new;\n$ua-&gt;inactivity_timeout(60);\n$ua-&gt;connect_timeout(60);\n$ua-&gt;request_timeout(60);\n\n#\u9002\u5f53\u5ef6\u957f\u8d85\u65f6\u7684\u65f6\u95f4\uff0c\u963b\u6b62\u8fc7\u65e9\u7684 http \u8bf7\u6c42\u5931\u8d25\uff0c\u4f1a\u6709\u66f4\u597d\u7684\u6027\u80fd\n$ua-&gt;max_connections(1000);\n\n#\u6700\u5927\u8fde\u63a5\u6570 1000\n$ua-&gt;max_redirects(0);\n\n#\u963b\u6b62 http3xx \u91cd\u5b9a\u5411\n$ua-&gt;transactor-&gt;name('Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0');\n\n#\u4f7f\u7528\u6b63\u5e38\u6d4f\u89c8\u5668\u7684 user agent\n$ua-&gt;cookie_jar-&gt;ignore( sub { 1 } );\n#\u7981\u7528 Mojo::UserAgent \u81ea\u52a8\u5904\u7406 cookie\n$ua-&gt;proxy-&gt;http('http://127.0.0.1:8080')-&gt;https('http://127.0.0.1:8080');\n#\u4f7f\u7528\u4ee3\u7406\u670d\u52a1\u5668\n\n##########################################################################\nmy @list = ();\n\n#\u539f\u59cb\u961f\u5217\nmy @urllist = ();\n\n#\u4e0b\u8f7d\u961f\u5217\nmy $n = 0;\n\n#\u4e0b\u8f7d\u6570\u91cf\nmy $m = 0;\n\n#\u51fa\u9519\u6570\u91cf\nmy $produce_num = 0;\n\n#\u751f\u4ea7\u8005\u6570\u91cf\nmy $consumer_num = 0;\n\n#\u6d88\u8d39\u8005\u6570\u91cf\nmy $cookie_num = 0;\n\n#cookie \u6570\u91cf\nmy @cookielist = ();\n\n#\u4f7f\u7528\u7684 cookie \u961f\u5217\nmy %cookieinvalid = ();\n\n#\u5931\u6548\u7684 cookie \u6563\u5217\n##########################################################################\nopen FILEIN, '&lt;', \"./url.txt\" or die \"$!\";\nwhile (&lt;FILEIN&gt;) {\n    my $content = $_;\n    chomp($content);\n    $content =~ s/\\r//;\n    push( @list, $content );\n}\nclose FILEIN;\n\n#\u5bfc\u5165\u4e0b\u8f7d\u5217\u8868\n##########################################################################\nsub append_txt_to_file {\n    my $file_name = $_[0];\n    my $txt       = $_[1];\n    local *FH;\n    open FH, '&gt;&gt;', $file_name;\n    print FH $txt;\n    close FH;\n}\n\nsub write_txt_to_file {\n    my $file_name = $_[0];\n    my $txt       = $_[1];\n    local *FH;\n    open FH, '&gt;', $file_name;\n    print FH $txt;\n    close FH;\n}\nmy %safe_character = (\n    '&lt;'  =&gt; '\uff1c',\n    '&gt;'  =&gt; '\uff1e',\n    ':'  =&gt; '\uff1a',\n    '\"'  =&gt; '\uff02',\n    '/'  =&gt; '\uff0f',\n    '\\\\' =&gt; '\uff3c',\n    '|'  =&gt; '\uff5c',\n    '?'  =&gt; '\uff1f',\n    '*'  =&gt; '\uff0a',\n);\n\nsub repace_safe {\n    my $per_char = $_[0];\n    my $one_txt  = $_[1];\n    my $output_char;\n    if ( exists $safe_character{$per_char} ) {\n        $output_char = $safe_character{$per_char};\n    }\n    else {\n        $output_char = $per_char;\n    }\n    return $output_char;\n}\n\nsub find {\n    my $html_bin = $_[0];\n    my $id       = $_[1];\n    if ( $html_bin =~ m/&lt;\\/html&gt;/ ) {\n        return '####';\n    }\n    else {\n        return '@@@';\n    }\n}\n##########################################################################\nsub get_multiplex {\n    my $id    = $_[0];\n    my $delay = Mojo::IOLoop-&gt;delay( sub { get_multiplex($id) } );\n\n    #get_multiplex \u9012\u5f52\u8fed\u4ee3\u7684\u5f00\u59cb\u6807\u8bb0\n    #$id \u662f\u6bcf\u4e00\u4e2a\u7ebf\u7a0b\uff08\u7aef\u53e3\u7684\u5e8f\u53f7\uff09\n    my $end = $delay-&gt;begin;\n    Mojo::IOLoop-&gt;timer( 0.1 =&gt; $delay-&gt;begin );\n\n    #\u6bcf\u4e2a http \u8bf7\u6c42\u524d\u6682\u505c 0.1s\n    if ( scalar @urllist == 0 ) {\n        if ( $produce_num == $consumer_num ) {\n            Mojo::IOLoop-&gt;stop;\n\n            #\u5f02\u6b65\u5faa\u73af\u7ed3\u675f\n            #\u5f53\u961f\u5217\u6570\u91cf\u4e3a 0 \uff0c\u4e14\u6240\u6709\u7684\u7ebf\u7a0b\u6570\u636e\u90fd\u5904\u7406\u5b8c\u6bd5\u7684\u65f6\u5019\uff0c\u7ec8\u6b62\u4e8b\u4ef6\u5faa\u73af\n            #return \u5b58\u5728\u4e00\u4e2a\u9012\u5f52\u8fd4\u56de\u94fe\uff0c\u8fd9\u91cc\u53ef\u4ee5\u66f4\u5feb\u5730\u7ed3\u675f\n        }\n        return;\n\n        #\u8fd9\u91cc\u8fd4\u56de\u540e\u5f02\u6b65\u4efb\u52a1\u6570\u91cf\u4e3a 0 \u65f6\uff0c\u7cfb\u7edf\u4f1a\u81ea\u52a8\u7ed3\u675f\u5f02\u6b65\u5faa\u73af\uff0c\u4e0d\u8fc7\u901f\u5ea6\u8f83\u6162\n        #return \u8fd4\u56de\u95ed\u5305\u51fd\u6570\u7684\u5f00\u59cb\uff0c\u5e76\u7ed3\u675f\u95ed\u5305\u51fd\u6570\uff0c\u4e0b\u9762\u4e0d\u5f00\u542f\u9012\u5f52\u81ea\u8eab\n    }\n    else {\n        my $object = shift @urllist;\n        $produce_num++;\n        my $url      = $object;\n        my $filename = $object;\n        $filename =~ s/^http:\\/\\/www\\.bing\\.com\\/w\\///m;\n        $filename =~ s/(.)/repace_safe($1)/eg;\n        $filename = \"./www.bing.com/\" . $filename . \".html\";\n        if ( -e $filename ) {\n            syswrite STDERR, encode( 'utf8', $n . \"\\t\" . $object . \"\\t   \u8df3\u8fc7\\n\" );    #STDOUT \u7f16\u7801\u5df2\u6539\uff0c\u8f93\u9001\u5230 STDOUT \u4f1a\u51fa\u73b0\u9519\u8bef\n            $consumer_num++;\n            $end-&gt;();\n        }\n        else {\n            my $build_tx = $ua-&gt;build_tx( GET =&gt; $url );\n            $build_tx-&gt;req-&gt;headers-&gt;remove('Accept-Encoding');\n\n            #\u963b\u6b62\u7f51\u9875\u538b\u7f29\uff0c\u4fdd\u8bc1\u66f4\u597d\u7684\u6027\u80fd\n            $build_tx-&gt;req-&gt;headers-&gt;add( 'Accept'          =&gt; 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' );\n            $build_tx-&gt;req-&gt;headers-&gt;add( 'Accept-Language' =&gt; 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2' );\n            $ua-&gt;transactor-&gt;name( 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:' . int( rand(900) ) . ') Gecko/' . int( rand(40000001) ) . ' Firefox/' . int( rand(900) ) . '.0' );\n\n            #\u4f7f\u7528 2 \u4e07\u4e2a cookie\n            $ua-&gt;start(\n                $build_tx =&gt; sub {\n                    my ( $ua, $tx ) = @_;\n                    if ( !$tx-&gt;is_finished ) {\n                        push( @urllist, $object );\n                        syswrite STDERR, \"http \u4f20\u8f93\u672a\u5b8c\u6210\" . \"\\n\";\n                        syswrite STDERR, encode( 'utf8', $url . \"\\t\" . $tx-&gt;error-&gt;{message} . \"\\n\" );\n                    }\n                    else {\n                        my $code = '';\n                        $code = $tx-&gt;res-&gt;code if defined $tx-&gt;res-&gt;code;\n                        if ( $code =~ /\\A2/ ) {\n                            my $size           = $tx-&gt;res-&gt;content-&gt;asset-&gt;size;\n                            my $content_length = $tx-&gt;res-&gt;headers-&gt;to_hash-&gt;{'Content-Length'};\n                            if ( ( $size == $content_length ) || !( defined $content_length ) ) {\n                                my $outnum = find( $tx-&gt;res-&gt;body, $id );\n                                if ( $outnum ne '@@@' ) {\n                                    append_txt_to_file( \"url.txt\", $object . \"\\t\" . $outnum . \"\\n\" );\n                                    write_txt_to_file( $filename, $tx-&gt;res-&gt;body );\n                                    $n++;\n                                    syswrite STDERR, encode( 'utf8', $n . \"\\t\" . $object . \"\\n\" );\n                                }\n                                else {\n                                    $n++;\n                                    syswrite STDERR, encode( 'utf8', $m . \"\\t\" . $object . \"\\t \u7f51\u9875\u4e0b\u8f7d\u5b8c\u6574\u4f46\u672a\u63d0\u53d6\u5230\u6570\u636e\\n\" );\n                                }\n                            }\n                            else {\n                                $m++;\n                                push( @urllist, $object );\n                                syswrite STDERR, encode( 'utf8', $m . \"\\t\" . $object . \"\\t \u7f51\u9875\u672a\u4e0b\u8f7d\u5b8c\u6574\\n\" );\n                            }\n                        }\n                        elsif ( $code =~ /\\A4/ ) {\n                            syswrite STDERR, encode( 'utf8', $m . \"\\t\" . $object . \"\\thttp 4xx\\n\" );\n                            push( @urllist, $object );\n                            Mojo::IOLoop-&gt;timer( 0.5 =&gt; $delay-&gt;begin );\n\n                            #http 404\n                        }\n                        else {\n                            $m++;\n                            push( @urllist, $object );\n                            syswrite STDERR, encode( 'utf8', $m . \"\\t\" . $object . \"\\t \u672a\u53d1\u73b0 http code, http 3xx, http 5xx\\n\" );\n\n                            #\u6807\u8bb0\u5931\u6548\u7684\u4ece cookie http 3xx\n                            Mojo::IOLoop-&gt;timer( 0.5 =&gt; $delay-&gt;begin );\n\n                            #\u670d\u52a1\u5668\u8fd4\u56de 5xx \uff0c\u6682\u505c 0.5s\n                            #\u672a\u53d1\u73b0 http code, http 302, http 503\n                        }\n                    }\n                    $consumer_num++;\n                    $end-&gt;();\n\n                    #get_multiplex \u9012\u5f52\u8fed\u4ee3\u7684\u7ed3\u675f\u6807\u8bb0\n                    #\u4ece\u8fd9\u91cc\u8df3\u8f6c\u5230\u4e0b\u4e00\u4e2a get_multiplex\n                }\n            );\n        }\n    }\n}\n##########################################################################\n$produce_num  = 0;\n$consumer_num = 0;\n@urllist      = @list;\n\n#\u5f02\u6b65\u4e0b\u8f7d\u524d\u7684\u53d8\u91cf\u51c6\u5907\nforeach my $id ( 1 .. 50 ) { get_multiplex($id) }\n\n#\u4f7f\u7528 50 \u4e2a\u7ebf\u7a0b\uff08\u7aef\u53e3\uff09\u4e0b\u8f7d\n#\u5982\u679c\u7ebf\u7a0b\u6570\u662f 100 \uff0c\u9650\u5236\u6700\u5927 cookie \u6570\u65e0\u6cd5\u751f\u6548\uff0c\u5e76\u4e14 EV \u4f1a\u51fa\u73b0\u9519\u8bef\nMojo::IOLoop-&gt;start;\n\n#\u5f02\u6b65\u5faa\u73af\u542f\u52a8\n##########################################################################\n\n</code></pre>\n", 
      "date_published": "2022-09-15T10:28:30+00:00", 
      "title": "\u4e00\u6bb5 perl \u4ee3\u7801\u5c55\u793a\u5982\u4f55 all in one \u4f18\u96c5\u5730\u7f16\u5199\u4e00\u4e2a\u5f02\u6b65\u722c\u866b", 
      "id": "https://www.v2ex.com/t/880334"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/alexecn", 
        "name": "alexecn", 
        "avatar": "https://cdn.v2ex.com/avatar/72cd/5bef/46081_large.png?m=1598327848"
      }, 
      "url": "https://www.v2ex.com/t/827149", 
      "title": "Perl \u6000\u65e7\u7fa4", 
      "id": "https://www.v2ex.com/t/827149", 
      "date_published": "2022-01-09T09:48:10+00:00", 
      "content_html": "<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.v2ex.co/aoaXO34U.jpeg\"/></p>\n<p>\u8fd8\u6709\u559c\u6b22 Perl \u7684\u670b\u53cb\uff0c\u53ef\u4ee5\u52a0\u7fa4\u3002</p>\n<p>\u5c0f\u4f17\u7fa4</p>\n<p>\u957f\u671f\u8fdb\u7fa4\uff0c\u52a0\u5fae\u4fe1\uff1awwmm9ww</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/xiaoming1992", 
        "name": "xiaoming1992", 
        "avatar": "https://cdn.v2ex.com/avatar/c7e9/042b/284747_large.png?m=1753418917"
      }, 
      "url": "https://www.v2ex.com/t/813465", 
      "date_modified": "2021-11-06T04:15:02+00:00", 
      "content_html": "<p>\u5b89\u88c5 vscode latex \u63d2\u4ef6\u65f6\u9700\u8981 perl, \u6240\u4ee5\u4ece perl \u5b98\u7f51\u627e\u5230\u4e86 windows \u793e\u533a\u7248, <a href=\"https://www.activestate.com/products/perl/\" rel=\"nofollow\">https://www.activestate.com/products/perl/</a>, \u4e0b\u8f7d\u9700\u8981\u6ce8\u518c\uff0c\u70b9\u51fb github \u6ce8\u518c\u65f6, \u63d0\u793a\u9700\u8981\u8bbf\u95ee\u6211\u7684\u79c1\u6709\u5e93\u7684\u53ea\u8bfb\u6743\u9650, \u6211\u4e0d\u77e5\u9053\u662f\u4e0d\u662f\u6211\u7406\u89e3\u6709\u8bef\uff1f\u8fd8\u662f\u8bf4\u4ed6\u786e\u5b9e\u9700\u8981\u6211\u6388\u6743\u8bbf\u95ee\u6211\u7684\u79c1\u6709\u5e93\uff1f\u5982\u679c\u662f\uff0c\u6211\u4e0d\u592a\u660e\u767d\u4e3a\u4ec0\u4e48\u8981\u8bbf\u95ee\u6211\u7684\u79c1\u6709\u5e93...</p>\n<p><img alt=\"\u7533\u8bf7\u6388\u6743\u622a\u56fe\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://tytcn.cn/static/tuchuang/active-state-accece-private-repo.jpg\"/></p>\n", 
      "date_published": "2021-11-06T04:14:26+00:00", 
      "title": "\u5b89\u88c5\u793e\u533a\u7248 perl \u65f6\u7684\u6ce8\u518c\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/813465"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/zjq123", 
        "name": "zjq123", 
        "avatar": "https://cdn.v2ex.com/gravatar/0ab917c5705e715b4585188ad679f029?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/644665", 
      "date_modified": "2020-02-14T15:50:09+00:00", 
      "content_html": "", 
      "date_published": "2020-02-14T14:48:20+00:00", 
      "title": "\u6709\u6ca1\u6709\u4e1a\u4f59\u5b66 perl \u4f5c\u4e3a\u7231\u597d\u7684", 
      "id": "https://www.v2ex.com/t/644665"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/jiafaner", 
        "name": "jiafaner", 
        "avatar": "https://cdn.v2ex.com/avatar/864a/f39f/132827_large.png?m=1531849479"
      }, 
      "url": "https://www.v2ex.com/t/497535", 
      "title": "perl \u8fd8\u503c\u5f97\u5b66\u5417", 
      "id": "https://www.v2ex.com/t/497535", 
      "date_published": "2018-10-14T09:25:26+00:00", 
      "content_html": "\u5de5\u4f5c\u9700\u8981\uff0c\u8981\u628a\u4e00\u4e2a perl \u7684\u7a0b\u5e8f\u91cd\u65b0\u505a\u4e00\u5957\u624b\u673a\u7248\u51fa\u6765\uff0c\u529f\u80fd\u633a\u591a\u7684\uff0c\u597d\u51e0\u5341\u4e2a\u6a21\u5757\uff0c\u8001\u677f\u7684\u610f\u601d\u662f perl \u7684\u7a0b\u5e8f\u4e0d\u8981\u52a8\uff0c\u6269\u5c55 perl \u7684\u63a5\u53e3\u51fa\u6765\u6211\u4eec\u7528 vue \u5199\u5ba2\u6237\u7aef\uff0c\u53ef\u6ca1\u4eba\u4f1a perl<br /><br />\u73b0\u5728\u662f\u4e24\u4e2a\u65b9\u6848\uff0c\u4e00\u4e2a\u662f\u8001\u677f\u7684\u65b9\u6848\uff0c\u53e6\u4e00\u4e2a\u662f\u7528 PHP \u91cd\u5199\uff0c\u8001\u677f\u8bf4\u91cd\u5199\u7684\u98ce\u9669\u9ad8\u4e8e\u6269\u5c55\uff0c\u5efa\u8bae\u5b66\u70b9 perl<br /><br />\u7f51\u4e0a\u90fd\u627e\u4e0d\u5230 perl \u7684\u8d44\u6599\u4e86\uff0c\u8fd9\u4e2a\u8bed\u8a00\u8fd8\u503c\u5f97\u5b66\u5417\uff0c\u73b0\u5728\u8fd8\u6709\u4eba\u7528\u5417\uff0c\u8fd8\u6709\u4ec0\u4e48\u4f18\u52bf\u6ca1"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/araraloren", 
        "name": "araraloren", 
        "avatar": "https://cdn.v2ex.com/avatar/7288/9108/161303_large.png?m=1734688870"
      }, 
      "url": "https://www.v2ex.com/t/361473", 
      "title": "\u6765\u4e00\u8d77\u5b66\u4e60 Perl 6 \u963f", 
      "id": "https://www.v2ex.com/t/361473", 
      "date_published": "2017-05-15T09:01:29+00:00", 
      "content_html": "<p><code>Perl 6</code> \u7684\u5b9e\u73b0 rakudo \u5df2\u7ecf\u5f00\u53d1\u7684\u5f88\u597d\u4e86\uff0c\u6709\u4eba\u6709\u5174\u8da3\u4e00\u8d77\u6765\u5b66\u4e60 <code>Perl 6</code> \u4e48\uff1f</p>\n<p><a href=\"https://perl6.org/\" rel=\"nofollow\">Perl 6 \u4e3b\u9875</a></p>\n<p><a href=\"http://rakudo.org/\" rel=\"nofollow\">rakudo \u4e3b\u9875</a></p>\n<p>\u987a\u4fbf\u9644\u4e0a\u6211\u505a\u7684\u6a21\u5757\u5730\u5740\uff0c\u6b22\u8fce\u5404\u4f4d <strong>star</strong></p>\n<p><a href=\"https://github.com/araraloren/perl6-terminal-table\" rel=\"nofollow\">https://github.com/araraloren/perl6-terminal-table</a></p>\n<p>\u4e0b\u9762\u7684\u4e1c\u897f\u6458\u81ea wiki</p>\n<pre><code>Perl 6 \u662f\u7f16\u7a0b\u8bed\u8a00 Perl \u8bed\u8a00\u7684\u540e\u7eed\u3002\u7531\u4e8e Perl 6 \u8bed\u8a00\u8bed\u6cd5\u4e0e Perl 5 \u4e0d\u540c\uff0c\u56e0\u6b64\uff0c\u53ef\u4ee5\u628a\u5b83\u770b\u4f5c\u4e00\u79cd\n\u65b0\u7684\u7f16\u7a0b\u8bed\u8a00\uff0c\u5c3d\u7ba1\u5176\u8ba1\u5212\u63d0\u4f9b Perl 5 \u7684\u517c\u5bb9\u6a21\u5f0f\u3002\n\nPerl 6 \u62e5\u6709\u4e30\u5bcc\u7684\u73b0\u4ee3\u8bed\u8a00\u7279\u5f81\uff0c\u62c9\u91cc\u00b7\u6c83\u5c14\u8ba1\u5212\u7528\u91cd\u65b0\u5b9a\u4e49\u6b63\u89c4\u8868\u8fbe\u5f0f\u548c\u589e\u52a0\u51fd\u6570\u5f0f\u7f16\u7a0b\u8bed\u8a00\u7684\u7279\n\u5f81\uff0c\u4f7f\u4e4b\u6210\u4e3a\u53ef\u6f14\u5316\u7684\u8bed\u8a00\u3002\u4e3a\u4fdd\u8bc1 Perl 6 \u548c Perl \u793e\u533a\u7684\u6301\u7eed\u7a33\u5b9a\u53d1\u5c55\uff0cPerl 6 \u7f16\u8bd1\u5668\u9700\u8981\u4f7f\u7528\nPerl 6 \u6765\u91cd\u5199\u3002\u4e3a\u4fdd\u8bc1 Perl \u8bed\u8a00\u539f\u6709\u5e93\u7684\u91cd\u7528\uff0c\u7f16\u8bd1\u5668\u8fd8\u8ba1\u5212\u63d0\u4f9b\u540c Perl 5 \u8bed\u8a00\u7684\u517c\u5bb9\u6a21\u5f0f\u3002\n\n\u7531\u4e8e Perl 6 \u8bed\u8a00\u7684\u8bed\u6cd5\u7279\u5f81\u548c\u8981\u6c42\uff0cPerl 6 \u7f16\u8bd1\u5668\u5b9e\u73b0\u975e\u5e38\u590d\u6742\uff0c\u540c\u65f6\uff0c\u81ea\u7531\u8f6f\u4ef6\u793e\u533a\u7684\u8d44\u6e90\u76f8\u5bf9\n\u8d2b\u4e4f\u3002\u56e0\u6b64\uff0cPerl 6 \u7f16\u8bd1\u5668\u7684\u5f00\u53d1\u663e\u5f97\u76f8\u5f53\u7f13\u6162\u3002\n</code></pre>\n<p>BTW: Perl \u771f\u7684\u597d\u51b7\u6e05\uff0c\u8fd9\u4e2a\u8282\u70b9\u4e00\u5e74\u4e5f\u5c31\u4e00\u4e2a\u5e16\u5b50</p>\n<p>BTW2: \u8fd8\u662f\u559c\u6b22 asciidoc</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/chenhui7373", 
        "name": "chenhui7373", 
        "avatar": "https://cdn.v2ex.com/avatar/d59d/9cee/76124_large.png?m=1489714856"
      }, 
      "url": "https://www.v2ex.com/t/260530", 
      "date_modified": "2016-03-02T07:45:32+00:00", 
      "content_html": "<a target=\"_blank\" href=\"http://perl.linuxtoy.org/contents.html\" rel=\"nofollow\">http://perl.linuxtoy.org/contents.html</a>\r<br />\r<br /><a target=\"_blank\" href=\"https://github.com/briandfoy/Learning-Perl-Sample-Files\" rel=\"nofollow\">https://github.com/briandfoy/Learning-Perl-Sample-Files</a>\r<br />\r<br /><a target=\"_blank\" href=\"http://perltricks.com/\" rel=\"nofollow\">http://perltricks.com/</a>\r<br />\r<br /><a target=\"_blank\" href=\"http://qntm.org/files/perl/perl_cn.html\" rel=\"nofollow\">http://qntm.org/files/perl/perl_cn.html</a>\r<br />\r<br />deerchao.net/tutorials/regex/regex.htm\r<br />\r<br /><a target=\"_blank\" href=\"http://www.chengxuyuans.com/manual/perl/\" rel=\"nofollow\">http://www.chengxuyuans.com/manual/perl/</a>", 
      "date_published": "2016-03-02T07:44:56+00:00", 
      "title": "Perl \u5b66\u4e60\u5730", 
      "id": "https://www.v2ex.com/t/260530"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/sinux", 
        "name": "sinux", 
        "avatar": "https://cdn.v2ex.com/avatar/f39b/2034/111150_large.png?m=1680504227"
      }, 
      "url": "https://www.v2ex.com/t/189425", 
      "date_modified": "2015-05-08T03:40:15+00:00", 
      "content_html": "\u7ec8\u7aef\u662fzsh\u3002", 
      "date_published": "2015-05-08T03:35:52+00:00", 
      "title": "\u65b0\u624b\u5b66 perl\uff0c\u60f3\u95ee\u4e00\u4e0b print \u6570\u5b57\u7684\u65f6\u5019\uff0c\u4e3a\u4ec0\u4e48\u540e\u9762\u603b\u662f\u8ddf\u7740\u4e00\u4e2a\u201c%\u201d", 
      "id": "https://www.v2ex.com/t/189425"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/tychio", 
        "name": "tychio", 
        "avatar": "https://cdn.v2ex.com/avatar/dbda/540c/22704_large.png?m=1403687480"
      }, 
      "url": "https://www.v2ex.com/t/122863", 
      "title": "perl \u7684\u6253\u5305\u90e8\u7f72\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/122863", 
      "date_published": "2014-07-16T02:25:14+00:00", 
      "content_html": "\u63a5\u624b\u4e86\u4e00\u4e2a\u8001\u9879\u76ee\u7528perl\u5199\u7684\uff0c\u4fee\u6539tmpl\u6a21\u7248\u6587\u4ef6\u5728\u9875\u9762\u4e0a\u80fd\u9a6c\u4e0a\u663e\u793a\u51fa\u53d8\u5316\uff0c\u4f46\u662f\u4fee\u6539\u6240\u6709\u7684pl\u6216pm\u6587\u4ef6\u90fd\u4e0d\u8d77\u4f5c\u7528\uff0c\u751a\u81f3\u628a\u5176\u4ed6\u6587\u4ef6\u5939\u90fd\u6539\u540d\u4e86\uff0c\u53ea\u8981css\u548ctemplate\u8fd8\u5728\u5c31\u6ca1\u5f71\u54cd\u3002<br /><br />\u521d\u6b65\u63a8\u65ad\u5e94\u8be5\u662f\u6253\u5305\u8fc7\u7684\uff0c\u4f46\u662f\u6ca1\u627e\u5230\u6253\u5305\u540e\u7684\u4ee3\u7801\u548c\u6587\u4ef6\uff0c\u4e5f\u6ca1\u627e\u5230\u76f8\u5173\u7684\u811a\u672c\u6216\u914d\u7f6e\u6587\u4ef6\u7528\u4e8e\u6253\u5305\u3002\u76ee\u5f55\u91cc\u53ea\u6709\u4e00\u4e2abuild.yml\uff0c\u4e0d\u8fc7\u8c8c\u4f3c\u662f\u5b89\u88c5\u7b2c\u4e09\u65b9\u5305\u7528\u7684\u3002<br /><br />\u6709\u4eba\u9047\u5230\u8fc7\u8fd9\u79cd\u72b6\u51b5\u5417"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/akagi", 
        "name": "akagi", 
        "avatar": "https://cdn.v2ex.com/gravatar/e3338e92d28b192cf7685b4d20ded705?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/120329", 
      "title": "Perl \u722c\u53d6\u5185\u5bb9\u5931\u8d25", 
      "id": "https://www.v2ex.com/t/120329", 
      "date_published": "2014-06-30T16:07:54+00:00", 
      "content_html": "\u4f7f\u7528\u7684\u662f Mojo::UserAgent, \u7528\u6765\u722c\u53d6\u67d0\u7f51\u7ad9\u7684\u7528\u6237\u56de\u7b54\u5217\u8868\uff0c\u4f46\u662f\u722c\u53d6\u65f6\u4f1a\u968f\u673a\u5728\u67d0\u7f51\u9875\u505c\u6b62\uff0c\u663e\u793a<br /><br />\"Can't call method \"all_text\" on an undefined value at core.pl line 188.\"<br /><br />\u5b9e\u73b0\u5982\u4e0b\uff0c<br /><br />sub get_keyword_list {<br />  my ($ua, @<a href=\"/member/list\">list</a>, $keyword) = @<a href=\"/member/_\">_</a>;<br />  <br />  foreach my $l (@list) {<br />    my $tx = $ua-&gt;get($l-&gt;[0]);<br />    say $l-&gt;[0];<br />    # what should it be?<br />    my $answer = $tx-&gt;res-&gt;dom-&gt;at('div.zm-editable-content.clearfix')-&gt;all_text;<br />    my $timestamp = $tx-&gt;res-&gt;dom-&gt;at('a.answer-date-link.meta-item')-&gt;text;<br />    open my ($tmp), '&gt;&gt;', 'tmp.txt' or die;<br />    say $tmp $answer;<br />    say $tmp $timestamp;<br />  }<br />}<br /><br />\u5176\u4e2d $l-&gt;[0] \u53d6\u5230\u5217\u8868\u4e2d\u5404\u7f51\u9875 url, \u7c7b\u4f3c\u5982\u4e0b\u5f62\u5f0f\uff1a <a target=\"_blank\" href=\"http://www.zhihu.com/question/20304733/answer/25775012\" rel=\"nofollow\">http://www.zhihu.com/question/20304733/answer/25775012</a><br /><br />\u4e3a\u4ec0\u4e48\u4f1a\u51fa\u73b0\u9519\u8bef\uff0c\u65e0\u6cd5\u7406\u89e3ing, \u6c42\u89e3\u3002"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/dongsheng", 
        "name": "dongsheng", 
        "avatar": "https://cdn.v2ex.com/avatar/1fc2/1400/864_large.png?m=1752407892"
      }, 
      "url": "https://www.v2ex.com/t/15364", 
      "date_modified": "2012-04-22T15:47:25+00:00", 
      "content_html": "\u521a\u5728HN\u4e0a\u770b\u5230Learning Perl\u7b2c\u516d\u7248\u51fa\u7248\u4e86\uff0c\u4f46perl 6\u8fd8\u662f\u6ca1\u53d1\u5e03\u3002\u5f53\u4eba\u4eec\u95ee\u8d77perl6\u4ec0\u4e48\u65f6\u5019\u53d1\u5e03\uff0c\u7b54\u6848\u603b\u662f\uff1aPerl 6 will be released when it&#39;s done\r\n<br />\r\n<br />\u4e00\u5e74\u524d\u6211\u5de5\u4f5c\u7684\u4e00\u4e2a\u9879\u76ee\u4e5f\u7528\u540c\u6837\u7684\u7b54\u6848\u56de\u7b54\u5f00\u6e90\u793e\u533a\uff0c\u4f46\u8fd9\u79cd\u7b54\u6848\u5176\u5b9e\u662f\u50b2\u6162\u4e14\u4e0d\u8d1f\u8d23\u4efb\u7684\u3002\u4e00\u4e2a\u628a\u5f00\u53d1\u5468\u671f\u62d6\u5f97\u5982\u6b64\u957f\u7684\u9879\u76ee\u5bf9\u8fd9\u4e2a\u8bed\u8a00\u672c\u8eab\u548c\u5f00\u6e90\u793e\u533a\u7684\u4f24\u5bb3\u90fd\u662f\u5f88\u5927\u7684\u3002", 
      "date_published": "2011-07-05T08:37:17+00:00", 
      "title": "\u8fde\u6c38\u8fdc\u7684\u6bc1\u706d\u516c\u7235\u90fd\u53d1\u5e03\u4e86 perl6\u8fd8\u6ca1\u6709\u5b8c\u5de5", 
      "id": "https://www.v2ex.com/t/15364"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/itopidea", 
        "name": "itopidea", 
        "avatar": "https://cdn.v2ex.com/avatar/2633/7353/470_large.png?m=1729832618"
      }, 
      "url": "https://www.v2ex.com/t/1098", 
      "date_modified": "2012-04-22T21:28:58+00:00", 
      "content_html": "RT", 
      "date_published": "2010-07-29T09:56:57+00:00", 
      "title": "perl6\u5c31\u8981\u51fa\u6765\u4e86\uff0c\u5927\u5bb6\u6709\u671f\u5f85\u7684\u5417\uff1f", 
      "id": "https://www.v2ex.com/t/1098"
    }
  ]
}