Posted on 15-01-2009
Filed Under (技术) by waterlin

每天工作都要监视某些网页,一但这些网页有更新,就做相应的工作。

当然不能每天人工去查看每个网页了!于是我写了一个Perl脚本去自动检查。每天上班运行一下,就知道是否有更新;有更新的话,自动把内容拷贝下来,按相应的格式存到特定的文件里。

但有的时候,我需要直接把这个内容复制到其它地方,比如邮件。我同样用Perl脚本实现了这个功能:在完成了自动检查后,符合情况就自动复制到Windows的剪切板。

我觉得这里有三点值得总结一下:

1) 用Win32::Clipboard实现与Windows剪切板互动

使用这个模板,可以在命令行里直接把内容拷贝到剪切板。

use Win32::Clipboard;$CLIP = Win32::Clipboard();

print “Clipboard contains: “, $CLIP->Get(), “\n”;

$CLIP->Set(“some text to copy into the clipboard”);

$CLIP->Empty();

$CLIP->WaitForChange();
print “Clipboard has changed!\n”;

不过这玩意在Cygwin里死活装不上,只能在Strawberry Perl里用了~~

2) 让cmd或是MSYS输出中文

在Windows下,不管是cmd还是MSYS,如果直接在里面打印出中文,几乎都会乱码;而在cmd或是MSYS下,用Win32::Clipboard拷贝东西到剪切板,也同样会乱码。

需要用类似于下面的方法来改进编码的问题:

use Encode;
$infor = encode(“gbk”, decode(“UTF-8”, $_));
print $infor;

3) 响应用户的确定操作

当把内容复制到剪切板,则输出一行提示,让用户知道复制已经完成,并等待用户输入任意的一个键以示确认,再继续。这个功能很简单,可以用这个语句轻松地实现:

<STDIN>

这样的一个不起眼的小工具,却省下了我一大串繁琐的工作(比如打开文件、判断、复制内容),不亦乐乎!

© 2009, 浏忙大爆炸. All rights reserved.
除非注明,浏忙大爆炸文章均为原创,转载请以链接形式标明本文地址。

Post a Comment
Name:
Email:
Website:
Comments: