
PERL
文章平均质量分 54
ace_fei
调试的错误就是编程给你最好的东西,因为在每个错误上面都标志着前进的一步。
展开
-
博客迁移至github pages
优快云早已变味,以后新文章,请到https://acefei.github.io/上浏览! 如有任何问题,可以在acefei’ lobby上一起交流学习。原创 2017-11-21 17:19:03 · 691 阅读 · 0 评论 -
各种编程语言中屏蔽代码块
1. bash:<<EOFecho "This is content block"EOF2.perl=blockprint "This is content block"=cut3.python'''print "This is content block."'''4.c/c++#if 0cout << "This is cont原创 2012-09-14 16:41:17 · 1700 阅读 · 0 评论 -
gvim 多标签页打开
编辑gvim.reg文件Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\Edit with Vim]@="用 gVim 多标签编辑(&g)"[HKEY_CLASSES_ROOT\*\shell\Edit with Vim\command]@="\"D:\\Program Files\\Vim\\v原创 2012-09-04 17:41:42 · 2338 阅读 · 0 评论 -
在shell中调用sed中替换斜杠的问题
工作中,经常试用shell调用sed命令做匹配替换工作。我们知道替换用s///这样的格式,如果pattern中包含斜杠,就需要转义。如果不想转义,就可以使用s### ,s::: 之类的来替换。但是,如果我们在替换之前想匹配一下,发现只能用//来匹配,怎么办?比如 sed -n ‘/'$pattern'/s/a/b/p' filename,shell变量$pattern中包原创 2012-07-13 14:19:24 · 9225 阅读 · 1 评论 -
关于在perl中调用awk的问题
虽然perl可以完成awk,sed的功能,但是有些人还是习惯将已经可用的awk,sed脚本嵌入到perl中。但是光复制粘贴的话,经常会出错:sed "/[FHOT STKREC]/s/[()]/;/g" /home/lottery/blts/keno/log/ltsapp.p8756.txt.log |awk -F\; '{if($2>="14:27:20" && $2这是因为原创 2011-09-08 10:48:03 · 2954 阅读 · 0 评论 -
我理解的断言
正则表达式中常用的分组语法有以下几种:1.(exp) 匹配exp,并捕获文本到自动命名的组里2.(?exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)3.(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号#!/usr/bin/perl -wuse strict;while(){if (/123(?:aa|bb)/){原创 2011-02-28 23:20:00 · 847 阅读 · 0 评论 -
在《大耳朵英语》的播客上,批量下载MP3
上回我写过了一篇文章,在《大耳朵英语》的播客上,批量获取MP3地址。后来发现将这些MP3地址导入迅雷批量下载都会失败,后来调试了一下程序发现,原来是因为大耳朵英语网站上下载MP3是有用户鉴权的,而且有cookies校验。所以这次决定再写一段程序,实现下载功能。#!/use/bin/perl -wuse strict;use warnings;use HTTP::Cookie原创 2012-01-29 21:56:46 · 2389 阅读 · 0 评论 -
LWP(Library for WWW in Perl)的基本使用
LWP (“Library for WWW in Perl” 的缩写) 是一个由多个模块组成,用来获取网络数据的的模块组。 和很多 Perl 的模块一样。每一个 LWP 模块都自带详细的文档,做为对这个模块的完整介绍。可是面对 LWP 里的众多模块,有时候即使是完成最简单的工作,新手们也常常不知道从那里开始。要对 LWP 做全面的介绍需要一整本书,很幸运,Perl转载 2012-02-14 16:39:20 · 3258 阅读 · 0 评论 -
关于print reverse的问题
#!/usr/bin/perl$a = "1234";@b = reverse($a);$c = reverse($a);print @b,"\n"; #1234print $c,"\n"; #4321print reverse($a),"\n"; #1234 print scalar rever原创 2012-02-21 16:50:44 · 3306 阅读 · 0 评论 -
在《大耳朵英语》的播客上,批量获取MP3地址
先不废话了,直接上代码#!C:\Perl\bin\perl.exeuse strict;use warnings;use LWP::Simple;++$|;my $BaseUrl = 'http://oral.ebigear.com';#以后需要添加新的播客时,就在这里添加信息就可以了#http://oral.ebigear.com/mypodcastlist-306599原创 2012-01-20 10:58:36 · 1842 阅读 · 0 评论 -
条款二十九:使用正则表达式的捕获功能
转自:Perl高效编程(第2版)条款二十九:使用正则表达式的捕获功能 虽然使用正则表达式可以非常方便地判断字串之间的模式匹配,但其作用远不止于此——它尤其适合对文本内容的分析和处理。而借助正则表达式的捕获功能,我们还可以从字串中自由提取感兴趣的部分。1. 捕获变量:$1,$2,$3…在使用正则表达式解析并捕获文本时,经常用到捕获变量$1, $2, $3等,依次类推。捕获变量转载 2012-02-08 15:21:54 · 2451 阅读 · 0 评论 -
~/.cpan/CPAN/MyConfig.pm
$CPAN::Config = { 'applypatch' => q[], 'auto_commit' => q[0], 'build_cache' => q[100], 'build_dir' => q[/root/.cpan/build], 'build_dir_reuse' => q[0], 'build_requires_install_policy'原创 2012-10-17 18:41:18 · 1452 阅读 · 0 评论 -
总结常用perl或awk命令行
过滤重复字符perl -e '$_=; @in = split; if (@in 统计全文单词数 (同awk '{for (i=1;i)perl -ne 'map {++$hash{$_}} (split); END{for (keys(%hash)) { print("$_: $hash{$_}\n")}}' input统计文本中某段中的单词数 (awk ' NR>1原创 2012-06-20 10:54:17 · 5505 阅读 · 0 评论 -
perl grep在条件语句中使用遇到的问题
我们在处理数据时,经常会遇到,在一个列表中过滤出不符合某一条件的内容,并组成新的列表。比如 @array = ("a", "null", "c", "d");这时候用grep实现如下:my @newArray = grep { $_ ne "null"} @array;但是如果放在条件语句中就会有问题。@array_tmp = ( "a", "b", "c");for my原创 2013-01-08 13:51:35 · 1370 阅读 · 0 评论 -
后PPT时代
现在都流行用markdown+reveal.js (reveal-md)来做presentation,效果各种炫, 突然有了写slides的冲动。 So,我也想跟风折腾一回,顺便拾起我的perl,试试App::revealup 在CentOS上的安装步骤$sudo yum group install 'Development Tools'$sudo yum install perl-ExtUt原创 2016-02-02 22:21:16 · 723 阅读 · 0 评论 -
perl获取时间
sub getDate { my $DATE = "0"; # Get the date ($day, $month, $year, $hour, $min, $sec) = (localtime)[3, 4, 5, 2, 1, 0]; # Reformat numbers to have two digits $day =翻译 2015-11-17 10:48:40 · 1471 阅读 · 0 评论 -
欢迎使用优快云-markdown编辑器
“` perl sub getDate { my $DATE = "0"; ($day, $month, $year, $hour, $min, $sec) = (localtime)[3, 4, 5, 2, 1, 0]; # Reformat numbers to have two digits $day = sprintf ( "%.2d", $day % 100原创 2015-11-27 23:24:02 · 385 阅读 · 0 评论 -
Term::ANSIColor 使用
推荐用法:use Term::ANSIColor qw(:constants); $Term::ANSIColor::AUTORESET = 1; print BOLD BLUE "This text is in bold blue.\n"; print "This text is normal.\n"; 运行一下脚本,就可以查看常用的颜色属性use Te原创 2015-07-29 11:08:47 · 3015 阅读 · 0 评论 -
【perl】使用LWP获取带cookie验证的HTTPS网页
最近想到公司网站下一些文档,结果网站上做了下载总大小限制,没办法只好写个脚本来获取。 运行环境1:Windows XP StrawberryPerl 5.10 (WIKI:http://win32.perl.org/wiki/index.php?title=Strawberry_Perl) 运行环境2:Linux perl 5.8.8原创 2012-02-16 15:16:29 · 6150 阅读 · 5 评论 -
抓取腾讯股票信息
根据http://blog.youkuaiyun.com/ustbhacker/article/details/8457341上的提示,我把他的程序改了一下,主要实现了显示自定义我的股票,通过设置购买价格和持有量,来粗略计算自己的盈利。use utf8;use Encode;use strict;use warnings;use LWP::UserAgent;use consta原创 2015-03-31 09:33:31 · 3444 阅读 · 0 评论 -
perl 如何将多个map的结果返回给数组
Map的用法想必大家都很熟悉,比如想把数字前面加上一个“num”前缀,然后返回。my @list = map {"num$_"} (1 .. 10);但是如果我想再增加一个把所有的字母前面加一个“str”前缀,该怎么写,这时候,我们可以用匿名函数来返回每一个map的结果。my @list = ( sub{ map {"num$_"} (1 .. 10)}->(),原创 2015-01-14 11:31:36 · 979 阅读 · 0 评论 -
IPv4 正则表达式的写法
首先我们知道IPV4的范围是 0.0.0.0 - 255.255.255.255,那么我们需要对0到255范围的数字进行分段匹配: 1. 匹配0-9之间的数 [0-9] 或 \d 2. 匹配10-99之间的数 [1-9][0-9] 或 [1-9]\d 3. 匹配100-199之间的数 1[0-9][0-9] 或 1\d原创 2012-02-07 12:09:09 · 6702 阅读 · 0 评论 -
计算时间差(date和perl实现)
#!/bin/bashcurrent_sec=`date +%s`get_time=$1get_time_sec=`date -d "$1" +%s`sec_diff=$((current_sec - get_time_sec))echo "Second difference is $sec_diff"day_diff=$((sec_diff / 86400))echo "原创 2011-12-28 12:38:01 · 5841 阅读 · 0 评论 -
Schwartzian Transform(施瓦茨变换)
先普及下概念,看http://en.wikipedia.org/wiki/Schwartzian_transform 或者 看IntermediatePerl 中的9.4在平时工作中,我们会经常接触到一些对文件内容做排序的工作。像一般的升序排序,我会用sort命令来完成。但是有些复杂的排序,比如,按第一列升序,再按第二列降序排,...等这种多级排序,我们就需要用到Schwartz原创 2012-06-20 14:41:50 · 4411 阅读 · 0 评论 -
XML parse error: not well-formed (invalid token)
我在用perl解析从网页上下载的xml时候,报错XML parse error: not well-formed (invalid token),我试着把这个xml用firefox打开,发现有个tag的命名里有个空格。重命名一下就好了。原创 2013-10-15 17:07:36 · 13154 阅读 · 0 评论 -
关于代码中的密码维护
公司的域密码是统一管理,经常会提醒换密码,但是我在很多程序中都需要用到这个密码,每次换完密码后都要改很多地方。为了减少麻烦,其实只需把密码放到环境变量中,以后每次只用修改环境变量的值就好了。BASH/KSHexport MYPWD='DomainPWD'CSHsetenv MYPWD 'DomainPWD'下面是我常用语言读取环境变量的方法C/C++#i原创 2013-05-18 12:05:53 · 1061 阅读 · 0 评论 -
发送HTML邮件 行颜色不显示的问题
今天试了很久发现,outlook查看html邮件的时候,不支持tr bgcolor, 只支持td bgcolor.也就是说,生成html邮件内容的时候,只能逐个地设置列背景颜色,不能一次性给行设置样色。sub RGBTransfer{ my $self = shift; my ($red,$green,$blue) = @_; my $red_hex =原创 2013-03-21 16:20:55 · 2008 阅读 · 0 评论 -
perl最佳实践(Perl Best Practices )重点摘要(转)
转载自:扶凯[http://www.php-oa.com]对岸台湾的朋友写的perl最佳实践的重点.这本书可是不可多得的好书,无论是做为新手,还是老手都非常有用,做为团队开发更加是好得不得了.如果每个写perl的人都能照这个要求写.perl就不会在被讲人讲成不可读的程序了.原文链接:http://nkfust.twbbs.org/cgi-bin/bbscon?board=perl&转载 2011-04-25 17:35:00 · 1349 阅读 · 0 评论 -
[Perl]管道、进程及其他
版权声明:可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2008/09/04/perl-pipe-process-etc/以及本声明。 昨天一个同事问我关于Perl中的 -| 描述符的问题。他的程序大概是这样的:unless (open FH, "-|") { exec "foo bar"; # 用转载 2011-06-27 13:09:00 · 757 阅读 · 0 评论 -
【总结】关于运行脚本问题
当我们有一个脚本test.pl放在/home/aaa/bbb下面时,我们运行它有两种方式: 1. cd /home/aaa/bbb;perl test.pl 2. perl /home/aaa/bbb/test.pl 这个想必大家都知道,但是如果test.pl中嵌套调用了其他的脚本test2.pl,而其他的脚本test2.pl又正好跟test原创 2011-06-24 17:18:00 · 618 阅读 · 0 评论 -
处理大容量文件
<br /> 工作中,经常会遇到一些大容量的文件需要处理,如果逐行处理可能消耗比较大,需要一段一段处理。<br /> use strict; open my $fh,"<","your_file"; my @lines; while (<$fh>) { chomp; push @lines,$_; if (not $.%2) { do_your_thing(@lines);原创 2011-04-22 17:48:00 · 857 阅读 · 0 评论 -
正确传递hash引用
大家应该知道哈希引用需要初始化,这我就不多说了。 我就主要分享下传入哈希引用有两种方式 #!/usr/bin/perluse Data::Dumper;sub foo { my $h = shift; $h->{hello} = World!;}my $a;my $b = {};foo($a); print Dumper(原创 2011-06-10 09:47:00 · 1263 阅读 · 0 评论 -
[总结]IPC之管道
#!/usr/bin/perl -wuse strict;use warnings;use IO::Socket;my $server = IO::Socket::INET->new( Proto => 'tcp', LocalPort => 8125, Listen => 1, Reuse => 1,) or die $!; while (my $client = $server->accept()){ $client->a原创 2011-05-31 14:20:00 · 691 阅读 · 0 评论 -
perl常用的批量改名
<br />foreach my $file (glob "*.old"){ my $newfile = $file; $newfile =~ //.old$//.new$/; if (-e $newfile) { warn "$newfile exists/n"; } elsif (rename $file $newfile){} else { warn "rename $file t转载 2011-04-13 15:18:00 · 791 阅读 · 0 评论 -
关于在DESTROY方法中执行命令的问题
#!/usr/bin/perl package test;sub new(){ my $ref = shift; my $class = ref($ref) || $ref; my $self = {}; bless($self, $class); return $self;} sub DESTROY(){ my $self = shift; print "this is destroy/n";原创 2011-04-12 09:49:00 · 1612 阅读 · 0 评论 -
匹配多行文本 /m用法
<br />1<br />00:00:09,855 --> 00:00:14,724<br />Britain was an object of desire.<br /><br />2<br />00:00:26,295 --> 00:00:31,847<br />Tacitus declared it worth the conquest,<br /><br />3<br />00:00:32,015 --> 00:00:35,803<br />the best compliment<br />that原创 2011-04-09 20:35:00 · 1158 阅读 · 0 评论 -
关于Net::FTP
通常我们写FTP的时候使用以下方法<br />$ftp= Net::FTP->new("some.host.name", Debug =>0) or die"Cannot connect to some.host.name: $@";<br /> 但是现在上头要求我在FTP失败时发邮件,or die是一种不负责任的方式,<br /> 所以需要捕获ftp异常,上句可以改为<br />$ftp= Net::FTP->new("some.host.name", Debug原创 2011-04-07 10:27:00 · 570 阅读 · 0 评论 -
[Perl]FTP自动上传文件的脚本以及配置文件
<br />本应用程序设计的几个基本理念是:<br />工具箱再利用: 尽可能利用已有的工具;<br />简化运行步骤; 不引入过多的业务逻辑,满足的需求越简单越好。<br />所以,我们定义了本应用程序依赖于以下几个工具的运行:<br />ActivePerl-5.8.4.810-MSWin32-x86<br />Upload.pl<br />Upload.config<br /><br />我们将主要的执行逻辑都放在Perl源文件Upload.pl中了,配置文件为Upload.config。<br转载 2011-04-07 10:29:00 · 1146 阅读 · 0 评论 -
上下文
<br /> 大家都知道在子程序中可以通过my ($a, $b) = @_;来获取参数,<br /> 但是当参数为一个的时候,经常有人会写成 my $a = @_;<br /> 这时候是标量上下文,$a的值始终为@_的个数,因此在你搞错的时候,perl无法提出警告。<br /> 想要获取入参时,要改为my ($a) = @_; 这才是列表上下文, <br /> 所以记住在获取子程序的参数时,无论有多少个入参,都应该写为my () = @_。<br /> <b原创 2011-03-24 15:57:00 · 854 阅读 · 0 评论 -
管道、进程及其他
<br />原作者charlee、原始链接http://tech.idv2.com/2008/09/04/perl-pipe-process-etc/<br /> <br />昨天一个同事问我关于Perl中的 -| 描述符的问题。他的程序大概是这样的:unless (open FH, "-|") { exec "foo bar"; # 用exec执行另一个程序 exit;}while (<FH>) { ...}close FH;$ret = $? >> 8转载 2011-03-12 11:45:00 · 636 阅读 · 0 评论