【Perl 脚本分享】【原创】命令行在线词典-LWP 例子

1020阅读 0评论2013-03-17 ulovko
分类:BSD

今天吃完午饭回来,看到同事在用  来查单词,看见这个网站的页面很简洁,所以心想用 Perl 做这件事想必很不错。
于是便有了下面的脚本:

  1. # 名称:在线词典
  2. # 用法:$0 <word>
  3. # 作者:flw
  4. # 日期:2006.01.20
  5. # 适用性:平台无关
  6. # 依赖性:需要 HTML::TreeBuilder 模块(非标准模块,需要另行安装)

  7. use strict;
  8. use warnings;
  9. use LWP;
  10. use HTML::TreeBuilder;

  11. my $word = shift || die "$0 \n";

  12. my $ua = new LWP::UserAgent;

  13. my $res = $ua->get( "" );

  14. die $res->status_line . "\n" unless $res->is_success;

  15. my $tree = HTML::TreeBuilder->new; # empty tree
  16. my $html = $res->content;
  17. $html =~ s/&.*?;//sg;
  18. $html =~ s{<font color=#.+?>(.+?)</font>}{$1}sg;
  19. $html =~ s{<span class=pronounce>[^<>]+</span>}{}sg;
  20. $html =~ s{<object.+?</object>}{}sg;
  21. $tree->parse( $html ) || return undef;

  22. my $content = $tree->{_content}[1]->{_content}[1]->{_content}[0]->{_content}[0]->{_content}[0]->{_content}[1]->{_content}[0]->{_content}[0];

  23. &get_content( $content );

  24. sub get_content{
  25.     my $content = shift;
  26.     foreach my $e ( $content->content_list() ){
  27.         if ( ref $e ){
  28.             &get_content( $e );
  29.         }
  30.         else{
  31.             print "$e\n";
  32.         }
  33.     }
  34. }
运行效果:

  1. D:\MoChou>dict
  2. D:\MoChou\dict.pl <word>

  3. D:\MoChou>dict china
  4. Define

  5. china
  6. :

  7. n. 中国,瓷器

  8. 例句与用法:
  9. 1.
  10. China is an oriental country with a long history.
  11. 中国是一个有着悠久历史的东方国家。
  12. 2.
  13. This set of ancient china is invaluable.
  14. 这套古瓷器非常珍贵。
  15. 3.
  16. China is a developing country.
  17. 中国是一个发展中国家。
  18. 4.
  19. I
我已经把它放到 PerlChina 协作开发平台 上了,需要获得更新版本的朋友们请访问此链接:


FROM: http://blog.chinaunix.net/uid-45332-id-2400709.html
上一篇:购买域名、VPS全记录
下一篇:Raspberry Pi 获取公网地址