{ "version": "https://jsonfeed.org/version/1", "title": "Perl", "description": "There is more than one way to do it.", "home_page_url": "go/perl", "feed_url": "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": "member/dfgddgf", "name": "dfgddgf", "avatar": "https://cdn.v2ex.com/avatar/02b2/8955/498257_large.png?m=1663237494" }, "url": "t/880334", "date_modified": "2022-09-18T08:22:20+00:00", "content_html": "
#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->new;\n$ua->inactivity_timeout(60);\n$ua->connect_timeout(60);\n$ua->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->max_connections(1000);\n\n#\u6700\u5927\u8fde\u63a5\u6570 1000\n$ua->max_redirects(0);\n\n#\u963b\u6b62 http3xx \u91cd\u5b9a\u5411\n$ua->transactor->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->cookie_jar->ignore( sub { 1 } );\n#\u7981\u7528 Mojo::UserAgent \u81ea\u52a8\u5904\u7406 cookie\n$ua->proxy->http('http://127.0.0.1:8080')->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, '<', \"./url.txt\" or die \"$!\";\nwhile (<FILEIN>) {\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, '>>', $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, '>', $file_name;\n print FH $txt;\n close FH;\n}\nmy %safe_character = (\n '<' => '\uff1c',\n '>' => '\uff1e',\n ':' => '\uff1a',\n '\"' => '\uff02',\n '/' => '\uff0f',\n '\\\\' => '\uff3c',\n '|' => '\uff5c',\n '?' => '\uff1f',\n '*' => '\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/<\\/html>/ ) {\n return '####';\n }\n else {\n return '@@@';\n }\n}\n##########################################################################\nsub get_multiplex {\n my $id = $_[0];\n my $delay = Mojo::IOLoop->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->begin;\n Mojo::IOLoop->timer( 0.1 => $delay->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->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->();\n }\n else {\n my $build_tx = $ua->build_tx( GET => $url );\n $build_tx->req->headers->remove('Accept-Encoding');\n\n #\u963b\u6b62\u7f51\u9875\u538b\u7f29\uff0c\u4fdd\u8bc1\u66f4\u597d\u7684\u6027\u80fd\n $build_tx->req->headers->add( 'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' );\n $build_tx->req->headers->add( 'Accept-Language' => '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->transactor->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->start(\n $build_tx => sub {\n my ( $ua, $tx ) = @_;\n if ( !$tx->is_finished ) {\n push( @urllist, $object );\n syswrite STDERR, \"http \u4f20\u8f93\u672a\u5b8c\u6210\" . \"\\n\";\n syswrite STDERR, encode( 'utf8', $url . \"\\t\" . $tx->error->{message} . \"\\n\" );\n }\n else {\n my $code = '';\n $code = $tx->res->code if defined $tx->res->code;\n if ( $code =~ /\\A2/ ) {\n my $size = $tx->res->content->asset->size;\n my $content_length = $tx->res->headers->to_hash->{'Content-Length'};\n if ( ( $size == $content_length ) || !( defined $content_length ) ) {\n my $outnum = find( $tx->res->body, $id );\n if ( $outnum ne '@@@' ) {\n append_txt_to_file( \"url.txt\", $object . \"\\t\" . $outnum . \"\\n\" );\n write_txt_to_file( $filename, $tx->res->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->timer( 0.5 => $delay->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->timer( 0.5 => $delay->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->();\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->start;\n\n#\u5f02\u6b65\u5faa\u73af\u542f\u52a8\n##########################################################################\n\n
\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": "t/880334" }, { "author": { "url": "member/alexecn", "name": "alexecn", "avatar": "https://cdn.v2ex.com/avatar/72cd/5bef/46081_large.png?m=1598327848" }, "url": "t/827149", "title": "Perl \u6000\u65e7\u7fa4", "id": "t/827149", "date_published": "2022-01-09T09:48:10+00:00", "content_html": "

\"\"

\n

\u8fd8\u6709\u559c\u6b22 Perl \u7684\u670b\u53cb\uff0c\u53ef\u4ee5\u52a0\u7fa4\u3002

\n

\u5c0f\u4f17\u7fa4

\n

\u957f\u671f\u8fdb\u7fa4\uff0c\u52a0\u5fae\u4fe1\uff1awwmm9ww

\n" }, { "author": { "url": "member/xiaoming1992", "name": "xiaoming1992", "avatar": "https://cdn.v2ex.com/avatar/c7e9/042b/284747_large.png?m=1753418917" }, "url": "t/813465", "date_modified": "2021-11-06T04:15:02+00:00", "content_html": "

\u5b89\u88c5 vscode latex \u63d2\u4ef6\u65f6\u9700\u8981 perl, \u6240\u4ee5\u4ece perl \u5b98\u7f51\u627e\u5230\u4e86 windows \u793e\u533a\u7248, https://www.activestate.com/products/perl/, \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...

\n

\"\u7533\u8bf7\u6388\u6743\u622a\u56fe\"

\n", "date_published": "2021-11-06T04:14:26+00:00", "title": "\u5b89\u88c5\u793e\u533a\u7248 perl \u65f6\u7684\u6ce8\u518c\u95ee\u9898", "id": "t/813465" }, { "author": { "url": "member/zjq123", "name": "zjq123", "avatar": "https://cdn.v2ex.com/gravatar/0ab917c5705e715b4585188ad679f029?s=73&d=retro" }, "url": "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": "t/644665" }, { "author": { "url": "member/jiafaner", "name": "jiafaner", "avatar": "https://cdn.v2ex.com/avatar/864a/f39f/132827_large.png?m=1531849479" }, "url": "t/497535", "title": "perl \u8fd8\u503c\u5f97\u5b66\u5417", "id": "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

\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

\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": "member/araraloren", "name": "araraloren", "avatar": "https://cdn.v2ex.com/avatar/7288/9108/161303_large.png?m=1734688870" }, "url": "t/361473", "title": "\u6765\u4e00\u8d77\u5b66\u4e60 Perl 6 \u963f", "id": "t/361473", "date_published": "2017-05-15T09:01:29+00:00", "content_html": "

Perl 6 \u7684\u5b9e\u73b0 rakudo \u5df2\u7ecf\u5f00\u53d1\u7684\u5f88\u597d\u4e86\uff0c\u6709\u4eba\u6709\u5174\u8da3\u4e00\u8d77\u6765\u5b66\u4e60 Perl 6 \u4e48\uff1f

\n

Perl 6 \u4e3b\u9875

\n

rakudo \u4e3b\u9875

\n

\u987a\u4fbf\u9644\u4e0a\u6211\u505a\u7684\u6a21\u5757\u5730\u5740\uff0c\u6b22\u8fce\u5404\u4f4d star

\n

https://github.com/araraloren/perl6-terminal-table

\n

\u4e0b\u9762\u7684\u4e1c\u897f\u6458\u81ea wiki

\n
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
\n

BTW: Perl \u771f\u7684\u597d\u51b7\u6e05\uff0c\u8fd9\u4e2a\u8282\u70b9\u4e00\u5e74\u4e5f\u5c31\u4e00\u4e2a\u5e16\u5b50

\n

BTW2: \u8fd8\u662f\u559c\u6b22 asciidoc

\n" }, { "author": { "url": "member/chenhui7373", "name": "chenhui7373", "avatar": "https://cdn.v2ex.com/avatar/d59d/9cee/76124_large.png?m=1489714856" }, "url": "t/260530", "date_modified": "2016-03-02T07:45:32+00:00", "content_html": "http://perl.linuxtoy.org/contents.html\r
\r
https://github.com/briandfoy/Learning-Perl-Sample-Files\r
\r
http://perltricks.com/\r
\r
http://qntm.org/files/perl/perl_cn.html\r
\r
deerchao.net/tutorials/regex/regex.htm\r
\r
http://www.chengxuyuans.com/manual/perl/", "date_published": "2016-03-02T07:44:56+00:00", "title": "Perl \u5b66\u4e60\u5730", "id": "t/260530" }, { "author": { "url": "member/sinux", "name": "sinux", "avatar": "https://cdn.v2ex.com/avatar/f39b/2034/111150_large.png?m=1680504227" }, "url": "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": "t/189425" }, { "author": { "url": "member/tychio", "name": "tychio", "avatar": "https://cdn.v2ex.com/avatar/dbda/540c/22704_large.png?m=1403687480" }, "url": "t/122863", "title": "perl \u7684\u6253\u5305\u90e8\u7f72\u95ee\u9898", "id": "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

\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

\u6709\u4eba\u9047\u5230\u8fc7\u8fd9\u79cd\u72b6\u51b5\u5417" }, { "author": { "url": "member/akagi", "name": "akagi", "avatar": "https://cdn.v2ex.com/gravatar/e3338e92d28b192cf7685b4d20ded705?s=73&d=retro" }, "url": "t/120329", "title": "Perl \u722c\u53d6\u5185\u5bb9\u5931\u8d25", "id": "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

\"Can't call method \"all_text\" on an undefined value at core.pl line 188.\"

\u5b9e\u73b0\u5982\u4e0b\uff0c

sub get_keyword_list {
my ($ua, @list, $keyword) = @_;

foreach my $l (@list) {
my $tx = $ua->get($l->[0]);
say $l->[0];
# what should it be?
my $answer = $tx->res->dom->at('div.zm-editable-content.clearfix')->all_text;
my $timestamp = $tx->res->dom->at('a.answer-date-link.meta-item')->text;
open my ($tmp), '>>', 'tmp.txt' or die;
say $tmp $answer;
say $tmp $timestamp;
}
}

\u5176\u4e2d $l->[0] \u53d6\u5230\u5217\u8868\u4e2d\u5404\u7f51\u9875 url, \u7c7b\u4f3c\u5982\u4e0b\u5f62\u5f0f\uff1a http://www.zhihu.com/question/20304733/answer/25775012

\u4e3a\u4ec0\u4e48\u4f1a\u51fa\u73b0\u9519\u8bef\uff0c\u65e0\u6cd5\u7406\u89e3ing, \u6c42\u89e3\u3002" }, { "author": { "url": "member/dongsheng", "name": "dongsheng", "avatar": "https://cdn.v2ex.com/avatar/1fc2/1400/864_large.png?m=1752407892" }, "url": "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's done\r\n
\r\n
\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": "t/15364" }, { "author": { "url": "member/itopidea", "name": "itopidea", "avatar": "https://cdn.v2ex.com/avatar/2633/7353/470_large.png?m=1729832618" }, "url": "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": "t/1098" } ] } ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86