很久以前,我遇到了一个描述编写一个简单命令行Perl脚本的引用,该脚本充当了Web浏览器。演示脚本的冲击因素是它只是一行Perl。我不记得引用的内容。
有人会这样做吗?或者,你知道我所指的参考吗?
答案 0 :(得分:4)
您可以尝试使用Perl的现代Web客户端:
perl -MMojo::Client -e "print Mojo::Client->new->get('http://www.example.com')->res->body;"
灵感来自: http://www.slideshare.net/marcusramberg/mojo-as-aclient
答案 1 :(得分:3)
Perl的一行? 没有的
一行Perl和一堆包含更多Perl行的模块? 是的
你可以从CPAN下载一行Perl和一堆这样的模块吗?也许。
非常基本的HTML渲染器可能如下所示:
perl -Mv5.10 -MLWP::Simple -MHTML::TreeBuilder::XPath -e"say HTML::TreeBuilder::XPath->new->parse(LWP::Simple::get('http://example.com'))->eof->as_text();"
答案 2 :(得分:1)
我不知道你可以在一行Perl中编写一个Web浏览器是合理的,尽管你可以在一个(长)Perl行中编写一个非常简单的HTTP客户端。
perl -MIO::Socket::INET -e 'die unless ($host, $path) = shift =~ m{http://(\w+(?:.\w+)*)(/.*)}; my $sock = IO::Socket::INET->new(PeerAddr=>$host,Proto=>"tcp",PeerPort=>80) or die; print $sock "GET $path HTTP/1.0\nHost: $host\n\n"; while (<$sock>) { print }' http://www.google.com/
使用IO::Socket::INET
可能有点作弊,因为它的源代码中有多行,但它永远是核心,并节省了大约5个cookie切割器函数调用来设置套接字。
虽然说实话,我通常用于简单的Perl HTTP客户端的一行是
GET http://www.google.com/