Perl碎碎念
1. 如何去重
#!/usr/bin/perl use strict; my %hash; while(<>){ chomp; print "$_\n" unless exists $hash{$_}; $hash{$_}+=1; }
刚开始没有$hash{$_}+=1这一行,结果发现无论怎么执行,文本都是原样输出,不会去重。加上这一行后就没有问题了,推测如果没有对$hash{$_}进行操作的话,在判断完它的键是否存在以后即会被丢弃掉,不会保存留待下一次判断。
2. 如何输出中文
binmode(STDOUT, ':encoding(gbk)');
3. 无法启动此程序,因为计算机中丢失perl514.dll。
Perl for windows的下载地址为:https://www.perl.org/get.html#win32
在安装DWIM Perl for Windows后,打开Padre,the perl IDE 报以下错误:
通过搜索,发现C:\Dwimperl\perl\bin下明明就有perl514.dll文件。
于是通过 开始->运行->输入regsvr32 perl514.dll,提示以下错误:
怀疑是C:\Dwimperl\perl\bin不在环境变量PATH中,在cmd环境下输入perl -v,提示“不是内部或外部命令”。
于是果断重启,打开Padre,the perl IDE,没有报丢失perl514.dll错误。
4. 如果以value开头并且以'或者中文)结尾,则删除换行符
use strict; open(in, "< 1.sql"); open(out, "> g.result.sql"); while(<in>){ if( /^values/ && /['|)]$/ ) { $_=~ s/\n//g; } print out $_; } close in; close out;