知者无忧

NOThing Is Impossible! —— 原创文章,谢绝转载!

RSS Feed

Daily Archives: 2007-08-24

每天学习 Perl 多一点

0 Comments

当你觉得你已经了解Perl的一切的时候,总会有一些你不知道的东西跳出来。
如下的类似代码你写过几次?

my $filename = "/path/to/file.txt";
my @dir_parts = split('/', $filename);
my $file = pop( @dir_parts );
my $path = join('/', @dir_parts );

或者

my ($name) = $filename =~ s//(.*?)$/o;

当我知道有 File::Basename 模块存在的时候, 它还不属于Perl的核心模块。但现在已经是Perl的标准模块了,做上面的事情已经是小菜一碟了:

use File::Basename;
# 只取文件名
my $filename_only = basename($filename);
# 只取路径部分
my $path_only     = dirname($filename);

这个模块中提供的fileparse()函数会给你更奇妙的功能:

my ($base, $path, $suffix) = fileparse( $filename );

将会在$base只存放文件名, $path中存放路径, $suffix中为空. 这是因为我们没有提供任何正则表达式来匹配。

相反,如果我们用:

my ($base, $path, $suffix) = fileparse( $filename, qr{.txt} );

然后我们对 $filename = '/home/frank/test.txt' 和
$filename2 = '/home/frank/test.doc' 来运行程序,将会得到如下结果:

Base: test
      Path: /home/frank
      Type: .txt

Base: test.doc
      Path: /home/frank
      Type:      

如果传递给fileparse()的$filename与指定模式不匹配,那么这部分就不会从basename上剥离下来。

这里就是想说,无论你用Perl多久,或者觉得你知道得多么多,总有一些东西你还不知道。
http://blog.revsys.com/2006/04/learn_something.html

Filed under 计算机技术
Aug 24, 2007

《Beginning Perl》变成了一个wiki

0 Comments

Perl Buzz,《Beginning Perl》、《Perl高级编程》的作者Simon Cozens,把他的一本旧书《Beginning Perl》放在一个wiki上,想通过这种方式进行修整。这本书的全文原本是在perl.org的。同时放在wiki上的书还包括:《Perl 5 Internals》《Contextual leadership development training for Japanese Christians》,另外还有三本书在写作之中(包括翻译成日文)。

他同时表示,他平时在TeX和DocBook环境下写作,但是他发现mediawiki更方便单独处理每一章节,并同时看到整体结构图。

Simon Cozens 是一个开源程序员和作者,他发布了超过100个的Perl模块,包括Email::Simple, Mail::Audit, Maypole,Plucene, 和 B::Generate 等。他是《Beginning Perl》 (Wrox)和《Extending and Embedding Perl》 (Manning)的作者之一,并于2001-2004担任 Perl.com 的主编。 他喜欢日本菜,现在日本工作。

Filed under 计算机技术
Aug 24, 2007

功能

  • 登录
  • 日志 RSS
  • 评论 RSS
  • 中国博客网