积累的一些perl代码分享

以前的一下perl代码分享

今天去参加了开源中国的一个源创会,感觉好隆重的样子,近五百人,BAT的工程师都过来演讲了,可都是数据库相关的, 我一个的都没有听懂,但是茶歇的披萨我倒是吃了不少。

说到开源中国,我想起来了我以前在上面分享的代码,上去看了看,竟然有那么多的访问量了,让我蛮意外的,那些代码完全是我学习perl的历程的真实写照。

http://www.oschina.net/code/list_by_user?id=1990747

以前的一下perl代码分享289

 

我抽出几个代码共享给你大家,并简单讲讲。

首先是三行perl代码即可批量下载页面里面所有的图片

[perl]

$html=`curl http://www.u148.net/article/69164.html`;

@img=$html=~m{<img.*?src="([^"]*)".*?>}g;

#print "$_\n" foreach @img;这一行代码是注释,出现问题是可以打开看看捕获的下载地址到底是什么

map {`wget $_`} @img;

[/perl]

这个代码非常有用,其实很多浏览器现在也有这个功能,就是批量下载网页所有图片嘛。这个代码也非常简单。主要利用了curl和wget在两个linux自带的命令工具,然后用了匹配找寻源代码里面的图片标签及地址。

然后是根据一个ID列表文件来从一个fasta文件里面挑取符合要求的序列。

其中一个文件是ID列表,一个ID占一行,另一个文件是fasta格式的序列,一行是>开头的标记,该标记下所有行都是该标记的内容,直到下一个>开头的标记

[perl]

#!/usr/bin/perl -w 

if( @ARGV != 2  ) 

{

    print "Usage: we need two files\n";

    exit 0;

}

 my $ID=shift @ARGV;

 my $fasta=shift @ARGV;

 open FH1,"<$ID" or die "can not open the file,$!";

while (<FH1>)

{

chomp;

$hash{$_}=1;

}

#读取第一个参数,ID列表,每一行的ID都扫描进去hash表

open FH2,"$fasta" or die "can not open the file,$!";

while(defined($line=<FH2>))

{

chomp $line;

if($line =~ />/)

{

$key = (split /\s/,$line)[0];

$key =~ s/>//g;

$flag = exists $hash{$key}?1:0;

}#这个flag是用来控制这个标记下面的序列是否输出

print $line."\n" if $flag == 0;

}

[/perl]

这个代码的利用率非常高, 我经常在生物信息的各种数据转换中需要用到这个脚本。

接下来是一个非常有趣的代码,在window平台下自动截屏这个代码严格意义上来讲以及进入黑客的范畴了,因为它可以自动截屏,在电脑主人不在的时候你给他运行这个代码,然后静等结果,想想都觉得很黑!

需要安装两个win32的模块,然后截图很大,是bmp格式,我下一步研究如何转换bmp到png格式

[perl]

use Win32::Clipboard;

use Win32::GuiTest qw/SendKeys/;

while(1)

{

my @time = localtime(time);

my $file = sprintf "20%02d_%d_%d_%d_%d_%d.bmp", $time[5]%100, $time[4]+1, $time[3], $time[2], $time[1], $time[0];

my ($try_count, $screen) = (30, undef);

    SendKeys('{PRTSCR}');#调用键盘的print_screen这个键

    $screen = Win32::Clipboard::GetBitmap();#print_screen这个键会截图,存储在内存中,然后用这个剪切板来保存文件

if ($screen) {

    open    BITMAP, "> $file" or die;

    binmode BITMAP;

    print  BITMAP $screen; #在这里将截屏的内容写入文件

    close  BITMAP;

    }

sleep(15);

}

[/perl]

如果大家对我的其它代码感兴趣,可以去我的开源中国主页去查询,但是以后我新的代码只会在我自己的网站里面公布了。

http://www.oschina.net/code/list_by_user?id=1990747

 

Comments are closed.