Archives for Perl

POST地狱

Today is not my day! 整整一天调试一个Spring MVC的绑定request的parameter的问题。本来是个很简单的问题,就是把Request里的paramenter那出来。最基础最基础的问题了。但是在form里有一个上传文件的input [code lang="html"] <input type="text" name="businessDomain"/> <input type="file" name="version"/> [/code] Spring MVC 2.5 有简单的几种方法,获得request里的paramenter的方法,例如 [code lang="java"] protected ModelAndView checkinAndShow(@RequestParam("businessDomain") String businessDomain){ .... } [/code] 当request的方法为POST的时候,request里的paramenter就是空的,什么都得不到。翻来覆去的检查,连HTTP的header和内容都看了,确实发出去了阿。调试的时候web的request的参数始终为0。因为这次是用spring 2.5的annotation重构,以前的代码都是测试过得。由于问题出现在request中,这是最底层的问题了。估计出现在web.xml或者是spring的web bean的配置中。于是一步一步的回归到老的代码,终于发现了在spring的配置文件中少了 [code lang="xml"] <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- one of the properties available; the maximum file size in bytes --> <property name="maxUploadSize" value="100000" /> [...]

mediawiki export import 顺序问题

mediawiki中导出的xml是顺序敏感的,也就是说兄弟元素之间的顺序是重要的,顺序不对就不能导入。 大晕阿, 实在是不明白顺序在这里的意义,估计是开始设计的时候是用dtd设计的,耳dtd如果设计为顺序不敏感的很麻烦,于是就索性让他顺序敏感了。 perl的simple xml对xml又是对顺序不敏感的,老半天写的东西没有了。

MediaWiki::API edit

最近的项目需要批量的把access或是excel里的内容加入到mediawiki里, 于是研究了一下mediawiki的api。 下面是一个perl的程序,用到了MediaWiki::API. 可以很方便的操作MediaWiki里的文章。 首先是创建一个Mediawiki的对象, 配置要使用的wiki,以及脚本调用的用户和密码 [code lang="perl"] my $mw = MediaWiki::API->new(); $mw->{config}->{api_url} = "http://wikisaddress.com/api.php"; $mw->login( { lgname => 'username', lgpassword => 'password' } ) || die $mw->{error}->{code} . ': ' . $mw->{error}->{details}; [/code] 之后就可以操作wiki里的文章了 [code lang="perl"] $mw->edit({ action => 'edit', #this must be set, even the method name is edit title => "title of [...]

Write a UTF8 file

open F, “>:utf8″, “file”;

Perl中unicode的问题

下面的程序会检测灵山的最新内容 两点需要注意: use utf8; 这句使得这个程序中的字符编码为utf8 $doc = Encode::decode(“gbk”, $doc); 这句的作用是把gbk的字符转换为utf8 #! /usr/bin/env perl use warnings; use LWP::Simple; use Encode; use utf8; $doc = get ‘http://www.birdsee.com/files/article/info/88/88291.htm’; $doc = Encode::decode(“gbk”, $doc); #print $doc; if ($doc =~ /.*回、(.*)<\/a>.*/) { print $1.”\n”; }

批量修改文件名字的Perl脚本

用法如下: 移动到你要修改文件名的目录下 rename.pl -l 会把该目录下的所有文件名改为小写,例如 Abcd.xx 会改为 abcd.xx rename.pl -u 会把该目录下的所有文件名改为大写,例如 AbcD.xx 会改为 ABCD.xx rename.pl -c 会把该目录下的所有文件名改为瘦子母大写,例如 abcd.xx 会改为Abcd.xx rename.pl -p  yourPrefix 会把该目录下的所有文件名加前缀 yourPrefix, 例如 rename.pl -pimage_ 会把 abcd.xx 改为 image_abcd.xx rename.pl -s yourSuffix 同 -p 不过是添加后缀。 #!/usr/bin/env perl use Getopt::Std; sub usage { return “rename \n options: -l -u -c\n\t-l lowcase name\n\t-u upcase name\n\t-c [...]