2009年12月5日星期六

[PerlChina] Re: CN Perl Advent Day 6: ack

非常好,先打个标记,抽空慢慢看。
2009/12/6 Fayland Lam <fayland@gmail.com>:
> http://perlchina.org/advent/2009/ack.html
>
> =for advent_year 2009
>
> =for advent_day 6
>
> =for advent_title ack
>
> =for advent_author Fayland Lam
>
> A<ack> 类似 grep, 能做 99% grep 做的事情。
>
> =begin pre
>
> [fayland@perl .cpan]$ ack --perl XXX .
> build/Config-INI-MVP-0.024-ntIMhU/inc/Module/Install/Makefile.pm
> 241:    # XXX - This is currently unused; not sure if it breaks other MM-users
>
> build/Config-INI-MVP-0.024-ntIMhU/lib/Config/INI/MVP/Reader.pm
> 96:# XXX: These should be attributes with builders and blah blah blah,
> but I just
>
> build/Pod-Weaver-3.093130-CWMqF_/lib/Pod/Weaver/Plugin/EnsurePod5.pm
> 18:  # XXX: This is really stupid. -- rjbs, 2009-10-24
>
> build/Pod-Weaver-3.093130-CWMqF_/t/ini-config.t
> 80:# XXX: This test is extremely risky as things change upstream.
>
> build/Pod-Weaver-3.093130-CWMqF_/t/basic.t
> 80:# XXX: This test is extremely risky as things change upstream.
>
> build/Email-Sender-0.093110-x5M__z/lib/Email/Sender/Transport/Test.pm
> 72:  # XXX: We must report partial success (failures) if applicable.
>
> =end pre
>
> A<http://betterthangrep.com/>
>
> 十大理由使用 ack:
>
> * 快速。比 grep 快多了
>
> * 使用 Perl 编写
>
> * 能在 Windows 下运行
>
> * 默认忽略您不要的东西。比如 .svn .git 目录,vim 的临时文件等。
>
> * 支持文件类型,比如 --perl 或者 --nohtml 等,无需 find -type
>
> * 可以得到某种类型文件的列表,比如得到 perl 文件的列表
>
> =begin pre
>
> $ ack -f --perl > all-perl-files
>
> =end pre
>
> * 语法加亮。
>
> * 使用我们最熟悉的 Perl 正则
>
> * 支持大部分 grep 参数如 -w -c -l
>
> * ack 只有三个字符,grep 有四个,而 grep -r 是六个。
>
> 最后,它能合并到流行的编辑器中,如 Vim, Emacs 和 TextMate. 参考
> A<http://search.cpan.org/perldoc?ack#ACK_&_OTHER_TOOLS>
>
> 而 Perl 编辑器 A<Padre> 就是使用 ack 来做文件搜索。
>
> 最后,感谢牛人 Andy Lester (petdance) 给我们带来了 ack.
>
> 谢谢。
>
> --
> Fayland Lam // http://www.fayland.org/
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] CN Perl Advent Day 6: ack

http://perlchina.org/advent/2009/ack.html

=for advent_year 2009

=for advent_day 6

=for advent_title ack

=for advent_author Fayland Lam

A<ack> 类似 grep, 能做 99% grep 做的事情。

=begin pre

[fayland@perl .cpan]$ ack --perl XXX .
build/Config-INI-MVP-0.024-ntIMhU/inc/Module/Install/Makefile.pm
241: # XXX - This is currently unused; not sure if it breaks other MM-users

build/Config-INI-MVP-0.024-ntIMhU/lib/Config/INI/MVP/Reader.pm
96:# XXX: These should be attributes with builders and blah blah blah,
but I just

build/Pod-Weaver-3.093130-CWMqF_/lib/Pod/Weaver/Plugin/EnsurePod5.pm
18: # XXX: This is really stupid. -- rjbs, 2009-10-24

build/Pod-Weaver-3.093130-CWMqF_/t/ini-config.t
80:# XXX: This test is extremely risky as things change upstream.

build/Pod-Weaver-3.093130-CWMqF_/t/basic.t
80:# XXX: This test is extremely risky as things change upstream.

build/Email-Sender-0.093110-x5M__z/lib/Email/Sender/Transport/Test.pm
72: # XXX: We must report partial success (failures) if applicable.

=end pre

A<http://betterthangrep.com/>

十大理由使用 ack:

* 快速。比 grep 快多了

* 使用 Perl 编写

* 能在 Windows 下运行

* 默认忽略您不要的东西。比如 .svn .git 目录,vim 的临时文件等。

* 支持文件类型,比如 --perl 或者 --nohtml 等,无需 find -type

* 可以得到某种类型文件的列表,比如得到 perl 文件的列表

=begin pre

$ ack -f --perl > all-perl-files

=end pre

* 语法加亮。

* 使用我们最熟悉的 Perl 正则

* 支持大部分 grep 参数如 -w -c -l

* ack 只有三个字符,grep 有四个,而 grep -r 是六个。

最后,它能合并到流行的编辑器中,如 Vim, Emacs 和 TextMate. 参考
A<http://search.cpan.org/perldoc?ack#ACK_&_OTHER_TOOLS>

而 Perl 编辑器 A<Padre> 就是使用 ack 来做文件搜索。

最后,感谢牛人 Andy Lester (petdance) 给我们带来了 ack.

谢谢。

--
Fayland Lam // http://www.fayland.org/

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 16 google wave invites left

2009/12/5 钱徵 <qian357549004@gmail.com>:
>
>
done.
> 2009/11/27 Alex <xjdengz@gmail.com>
>>
>> On Fri, Nov 27, 2009 at 04:47:16PM +0800, longbow0 wrote:
>> >需要的同学请回复,最好是 gmail 邮箱。
>> >
>>
>> the google wave invites have flooded, now there are 16 invites left,
>> if you want to get one, you also can contact me :)
>>
>> >
>> >>
>>
>> >> 还有吗?  我想要一个 麻烦了 邮箱是 qian357549004@gmail.com
>
>

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 16 google wave invites left

2009/12/5 zhihua zheng <zhihua.zheng@gmail.com>:
> Your Google Account has
> not yet been activated
> for Google Wave.
>

it is probable that google will confirm it after some days, please
wait for a moment.
keep patient

> ? why ??? 2009/12/4 Xiaojun Deng <xjdengz@gmail.com> ? :-<
>
> 2009/12/4 Xiaojun Deng <xjdengz@gmail.com>
>>
>> 2009/11/30 zhihua zheng <zhihua.zheng@gmail.com>:
>> > zhihua.zheng@gmail.com
>> >
>>
>> done.
>>
>> > THX
>> >
>> > 2009/11/29 Xiaojun Deng <xjdengz@gmail.com>
>> >>
>> >> 2009/11/29 PIG <addmyin@gmail.com>:
>> >> > 我也有wave号,不知道我还有没。不过不太好玩。一太监的webqq+推推。
>> >> >
>> >> 是的,没有的可能比较好奇而已吧。
>> >> 这个wave是搞什么飞机的我还不太清楚,而且速度慢。我知道的只是可以发发消息,那他和
>> >> gtalk,ym等有啥区别呢?
>> >>
>> >> > 2009/11/29 Xiaojun Deng <xjdengz@gmail.com>
>> >> >>
>> >> >> 2009/11/29 SuperM <mqfuuster@gmail.com>:
>> >> >> > 还有吗,能送我试试吗,O(∩_∩)O谢谢
>> >> >> >
>> >> >> done, now 10 invites left :)
>> >> >>
>> >> >> > 2009/11/27 Alex <xjdengz@gmail.com>
>> >> >> >>
>> >> >> >> On Fri, Nov 27, 2009 at 04:47:16PM +0800, longbow0 wrote:
>> >> >> >> >需要的同学请回复,最好是 gmail 邮箱。
>> >> >> >> >
>> >> >> >>
>> >> >> >> the google wave invites have flooded, now there are 16 invites
>> >> >> >> left,
>> >> >> >> if you want to get one, you also can contact me :)
>> >> >> >>
>> >> >> >> >
>> >> >> >> >>
>> >> >> >>
>> >> >> >> >>
>> >> >> >
>> >> >> >
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >> > >
>> >> >
>> >> >>
>> >
>>
>>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: Intermediate Perl 有翻译的中文版吗?

顺便查了下 “书非借不能读也” 的意思。。

袁枚的《黄生借书说》
黄生允修借书。随园主人授以书而告之曰:
“书非借不能读也。子不闻藏书者乎?七略四库,天子之书,然天子读书者有几?汗牛塞屋,富贵家之书,然富贵人读书者有几?其他祖父积、子孙弃者无论焉。非独书为然,天下物皆然。非夫人之物而强假焉,必虑人逼取,而惴惴焉摩玩之不已,曰:‘今日存,明日去,吾不得而见之矣。’若业为吾所有,必高束焉,庋藏焉,曰‘姑俟异日观’云尔。”
“余幼好书,家贫难致。有张氏藏书甚富。往借,不与,归而形诸梦。其切如是。故有所览辄省记。通籍后,俸去书来,落落大满,素蟫灰丝,时蒙卷轴。然后叹借者之用心专,而少时之岁月为可惜也。”
今黄生贫类予,其借书亦类予;惟予之公书与张氏之吝书若不相类。然则予固不幸而遇张乎,生固幸而遇予乎?知幸与不幸,则其读书也必专,而其归书也必速。
为一说,使与书俱。

翻译:
年轻人黄允修来借书。(随园主人)我把书借给他,并告诉他说:
“书要不是借来的就不会好好地读啊。你没有听说过(那些)藏书的人(不懂书的事)吗?《七略》《四库》,是天子的书,但是(自古以来)天子(肯认真)读书的有几个呢?书多得搬运时使牛马累得出汗,拖回来就堆满屋子,这是富贵人家的藏书,但是富贵之家的人能(认真)读书的(又)有几个?其余像祖父和父亲积藏,而儿子和孙子丢弃掉的情况,就更不用说了。不只是书籍是这样,世间的事物都是这样。不是那人自己的东西,而是勉强借了来的,必定担心人家催着要,就忧惧地忐忑(tǎntè)不安地摩挲抚摸不止,(心里)说:‘今天存放在我这里,明天就要拿走了,我不能再见到它了。’如果已经被我所拥有,必定(会)捆起来放在高处,搁起来藏着,说‘姑且等改日再看吧’,这样说罢了。”
“我小时候爱好读书,(但)家里穷,很难得到书读。有个姓张的人家,藏书很多。(我)到他家去借,(他)不借给我,回来以后我梦中还出现向他借书的情形。那种迫切求书的心情,竟然达到这样的程度。因此,只要看过的书就认真地去领会,牢牢地记在心里。做了官以后,官俸花掉了,书籍买来了,到处都堆放满了。(由于长期不翻阅,)以至白色的蠹虫和虫丝,时常沾满书本。这样一来我才慨叹借来的书看得是多么用心专一,并且感叹少年的时光是多么值得珍惜啊。”
如今姓黄的年轻人像我从前一样贫穷,他借书(苦读)也像我从前一样;只是我慷慨借书给人和那姓张的吝惜自己的书,舍不得借给人,这一点好像不大相同。既然如此,那么是我实在倒霉而碰上姓张的呢,还是黄生实在幸运而遇到我呢?懂得(借到书的)幸运和(借不到书的)不幸,那么他读书一定很专心,而他还书也一定会很快。
写了这一篇借书说,把它和书一起(交给黄生)。
黄生小儿,我是看你读书认真才借给你的,看完了记得早日还来啊!

。。
让俺恍然大悟

2009/12/5 钟声 <gh00920307@gmail.com>
虽然是英文,但还是谢谢了。

有空看看。就当学英文了

2009/12/5 PIG <addmyin@gmail.com>

joyo 有 书非借不能读也,看同学有没有买,借来看看。。
网上下了100多G书,惭愧惭愧。。这本正好有。。

在 09-12-5,钟声<gh00920307@gmail.com> 写道:
> 在图书馆看见一本《精通per》
> 发现作者还有一本《Intermediate Perl》
> 很想找来看看。
>
> >
>





--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: Intermediate Perl 有翻译的中文版吗?

虽然是英文,但还是谢谢了。

有空看看。就当学英文了

2009/12/5 PIG <addmyin@gmail.com>
joyo 有 书非借不能读也,看同学有没有买,借来看看。。
网上下了100多G书,惭愧惭愧。。这本正好有。。

在 09-12-5,钟声<gh00920307@gmail.com> 写道:
> 在图书馆看见一本《精通per》
> 发现作者还有一本《Intermediate Perl》
> 很想找来看看。
>
> >
>




--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 16 google wave invites left



2009/11/27 Alex <xjdengz@gmail.com>
On Fri, Nov 27, 2009 at 04:47:16PM +0800, longbow0 wrote:
>需要的同学请回复,最好是 gmail 邮箱。
>

the google wave invites have flooded, now there are 16 invites left,
if you want to get one, you also can contact me :)

>
>>

还有吗?  我想要一个 麻烦了 邮箱是 qian357549004@gmail.com
 

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: Intermediate Perl 有翻译的中文版吗?

joyo 有 书非借不能读也,看同学有没有买,借来看看。。
网上下了100多G书,惭愧惭愧。。这本正好有。。

在 09-12-5,钟声<gh00920307@gmail.com> 写道:
> 在图书馆看见一本《精通per》
> 发现作者还有一本《Intermediate Perl》
> 很想找来看看。
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 16 google wave invites left

Your Google Account has
not yet been activated
for Google Wave.

? why ??? 2009/12/4 Xiaojun Deng <xjdengz@gmail.com> ? :-<

2009/12/4 Xiaojun Deng <xjdengz@gmail.com>
2009/11/30 zhihua zheng <zhihua.zheng@gmail.com>:
> zhihua.zheng@gmail.com
>

done.

> THX
>
> 2009/11/29 Xiaojun Deng <xjdengz@gmail.com>
>>
>> 2009/11/29 PIG <addmyin@gmail.com>:
>> > 我也有wave号,不知道我还有没。不过不太好玩。一太监的webqq+推推。
>> >
>> 是的,没有的可能比较好奇而已吧。
>> 这个wave是搞什么飞机的我还不太清楚,而且速度慢。我知道的只是可以发发消息,那他和
>> gtalk,ym等有啥区别呢?
>>
>> > 2009/11/29 Xiaojun Deng <xjdengz@gmail.com>
>> >>
>> >> 2009/11/29 SuperM <mqfuuster@gmail.com>:
>> >> > 还有吗,能送我试试吗,O(∩_∩)O谢谢
>> >> >
>> >> done, now 10 invites left :)
>> >>
>> >> > 2009/11/27 Alex <xjdengz@gmail.com>
>> >> >>
>> >> >> On Fri, Nov 27, 2009 at 04:47:16PM +0800, longbow0 wrote:
>> >> >> >需要的同学请回复,最好是 gmail 邮箱。
>> >> >> >
>> >> >>
>> >> >> the google wave invites have flooded, now there are 16 invites left,
>> >> >> if you want to get one, you also can contact me :)
>> >> >>
>> >> >> >
>> >> >> >>
>> >> >>
>> >> >> >>
>> >> >
>> >> >
>> >>
>> >>
>> >
>> >
>> > >
>> >
>> >>
>




--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

2009年12月4日星期五

[PerlChina] Intermediate Perl 有翻译的中文版吗?

在图书馆看见一本《精通per》
发现作者还有一本《Intermediate Perl》
很想找来看看。

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 2009 CN Perl Advent Day 5: SSH::Batch

不错哈

On 12月5日, 上午7时30分, Fayland Lam <fayl...@gmail.com> wrote:
> http://perlchina.org/advent/2009/SSHBatch.html
>
> from cnhackTNT
>
> =for advent_year 2009
>
> =for advent_day 5
>
> =for advent_title SSH::Batch
>
> =for advent_author cnhackTNT
>
> 毫不夸张,SSH 已经成为我每天工作生活必备的工具之一了,相信很多做运维或者在 Linux/Unix 下做开发的朋友也一样,经常需要 SSH
> 到某台机器上去做点什么。当你只有一台服务器的时候,并不会觉得敲一串命令有啥不爽,但是当你有多台服务器,每台都需要你 SSH
> 上去做点什么的时候,如果还纯人工纯手动,那就太郁闷了。
>
> 于是,A<http://agentzh.spaces.live.com|agentzh++> 写了 M<SSH::Batch> 来拯救你了~!
>
> 用 cpan 来安装它吧!
>
> =begin pre
>
> $ sudo cpan SSH::Batch
>
> =end pre
>
> M<SSH::Batch> 是基于 M<Net::OpenSSH> 的,而 M<Net::OpenSSH> 是基于
> A<http://www.openssh.org|OpenSSH> 的二进制客户端的,所以只要你机器上装了 OpenSSH
> 客户端,此外没有其他太多的依赖模块,但正因为此,该模块在 Windows 上是无法使用的。事实上,在 perl 的世界里如果需要编程操纵
> SSH, M<Net::OpenSSH> 是首选的模块,而 M<Net::SSH::*>
> 系列的模块,我个人不是很推荐,一来依赖太多,二来有些模块缺人管理,也许以后情况会好些。
>
> 用 cpan 安装好 SSH::Batch 后,实际上给你提供了几个方便的 perl 程序,他们分别是: M<atnodes>,
> M<key2nodes>, M<tonodes>, M<fornodes>。
>
> =head4 fornodes
>
> 这个命令不做 SSH 操作,因为 M<SSH::Batch> 的这些命令使用特定格式的字符串来表示机器集群,B<fornodes>
> 命令就负责将这些字符串解析成具体一台台的服务器 IP 地址或者域名(也许你有点云里雾里,没关系,继续看下去)。
>
> =head4 atnodes
>
> 通过 SSH 在指定的机器集群上运行指定的命令。
>
> =head4 key2nodes
>
> 如果你使用密钥作为 SSH 登录验证的方式,这个程序可以很方便地帮你把你生成的公钥传输到指定的机器集群上去(方便的前提是,你在这些机器上用户名都一样,且用同一个密码)。
>
> =head4 tonodes
>
> 传输指定的文件到指定的机器集群上去。
>
> =head3 如何表示我要管理的机器集群?
>
> 前面说到过,M<SSH::Batch> 提供的这些命令用一种特定的方式来表示机器集群,举例来说:
>
> =begin pre
>
> 10.0.0.1 # 代表 IP 地址为 10.0.0.1 的机器
> 10.0.0.[1,2,9] # 代表 10.0.0.1, 10.0.0.2, 10.0.0.9 这三台不同 IP 的机器
> 192.168.1.[2-20] # 代表 192.168.1.2, 192.168.1.3 ... 192.168.1.20
> 这19台不同 IP 的机器
> [a-c].example.com # 代表 a.example.comb.example.comc.example.com 三台机器
> serv[1-2].example.com # 代表 serv1.example.comserv2.example.com 两台机器
>
> =end pre
>
> 这样,只要你的机器们拥有相似的 IP 地址或者域名,那么用例子中的形式,你就不需要把一个一个 IP 地址或者域名列出来来表示他们了。
>
> 前面提到过 B<fornodes>, 我们来验证一下:
>
> =begin pre
>
> $ fornodes '10.0.0.[1,2,9]'
> 10.0.0.1 10.0.0.2 10.0.0.9
>
> $ fornodes 'serv[1-2].example.com'
> serv1.example.com serv2.example.com
>
> =end pre
>
> 哦耶!
>
> Wait... 如果我想操作 I<foo[1-10].example.com> 但是不要其中的 foo4.example.com
> 怎么办?你当然可以用这种表示方法:
>
> =begin pre
>
> foo[1-3,5-10].example.com
>
> =end pre
>
> 或者还可以
>
> =begin pre
>
> foo[1-10].example.com - foo4.example.com
>
> =end pre
>
> 还能做减法?!当然!M<SSH::Batch>
> 将你不同的机器集群当作不同的集合,而其中的机器就是一个个的元素。你可以从集合中随意去掉或者增加一些元素,当然也可以取集合间的并集,交集,子集。
>
> 说到这里,不得不提一下 B<~/.fornodesrc> 这个文件,这是 B<fornodes>
> 命令默认读取的配置文件,里面包含你自定义的一些机器集合,比如说:
>
> =begin pre
>
> $ cat ~/.fornodesrc
> cluster1=admin.key.com worker[1-3].foo.com client[1-5].foo.com
> cluster2=admin.key.com worker[1-5].bar.com client[1-3].bar.com
> wk_and_cl={cluster1} + {cluster2} - admin.*.com
> allcluster={cluster1} + {cluster2}
> monitor=admin.key.com slave.admin.key.com
> keyserver={allcluster} * {monitor}
>
> =end pre
>
> 上面的文件中我们定义了6个机器集合:I<cluster1>, I<cluster2>, I<wk_and_cl>,
> I<allcluster>, I<monitor>, I<keyserver>。
>
> B<+> 代表求并集;
>
> B<-> 代表从集合中减去一个子集或者某些元素;
>
> B<*> 代表求交集
>
> B<{}> 代表集合
>
> B<空格> 分隔集合中的元素
>
> 我们来验证一下:
>
> =begin pre
>
> $ fornodes '{cluster1}'
> admin.key.com client1.foo.com client2.foo.com client3.foo.com
> client4.foo.com client5.foo.com worker1.foo.com worker2.foo.com
> worker3.foo.com
>
> $ fornodes '{cluster2}'
> admin.key.com client1.bar.com client2.bar.com client3.bar.com
> worker1.foo.com worker2.foo.com worker3.foo.com worker4.foo.com
> worker5.foo.com
>
> $ fornodes '{wk_and_cl}'
> client1.bar.com client1.foo.com client2.bar.com client2.foo.com
> client3.bar.com client3.foo.com client4.foo.com client5.foo.com
> worker1.foo.com worker2.foo.com worker3.foo.com worker4.foo.com
> worker5.foo.com
>
> $ fornodes '{allcluster}'
> admin.key.com client1.bar.com client1.foo.com client2.bar.com
> client2.foo.com client3.bar.com client3.foo.com client4.foo.com
> client5.foo.com worker1.foo.com worker2.foo.com worker3.foo.com
> worker4.foo.com worker5.foo.com
>
> $ fornodes '{keyserver}'
> admin.key.com
>
> =end pre
>
> 没错吧:-)!B<atnodes>,B<tonodes> 都使用 B<fornodes>
> 来解析你指定的集合,所以你可以把你常用的机器集群都像之前提到的写到 B<~/.fornodesrc>
> 文件中去,然后用上面例子中的方法来使用他们。
>
> =head3 atnodes 命令
>
> 比如我要取得所有机器的运行时间,当前负载信息:
>
> =begin pre
>
> $ atnodes -u cnhacktnt uptime '{allcluster}'
>
> =end pre
>
> 于是, B<atnodes> 会默认起20个进程,以 cnhacktnt 的身份登录到你的机器们上去执行 uptime 命令,你就会得到类似这样的信息:
>
> =begin pre
>
> ===================== worker1.foo.com =====================
> 12:29AM up 205 days, 11:58, 74 users, load averages: 0.00, 0.00, 0.00
>
> ===================== worker2.foo.com =====================
> 12:35AM up 8 days, 9:08, 4 users, load averages: 0.13, 0.09, 0.10
>
> ===================== client1.foo.com =====================
> 12:34AM up 847 days, 13:05, 0 users, load averages: 1.03, 0.75, 0.64
>
> ===================== worker3.bar.com =====================
> 12:35AM up 534 days, 15:08, 1 user, load averages: 0.21, 0.89, 1.23
>
> ===================== admin.key.com =====================
> 12:35AM up 210 days, 13:05, 20 users, load averages: 5.17, 4.30, 4.24
>
> ... 省略结果 ...
>
> =end pre
>
> 当然,你也可以在 B<atnodes> 的命令行上做集合加减,比如:
>
> =begin pre
>
> $ atnodes -u cnhacktnt uptime '{allcluster} - {wk_and_cl}'
>
> ===================== admin.key.com =====================
> 12:35AM up 210 days, 13:05, 20 users, load averages: 5.17, 4.30, 4.24
>
> =end pre
>
> I<'{allcluster} - {wk_and_cl}'> 刚好就和 I<'{keyserver}'> 一样,所以上面的命令得到的结果和
> I<atnodes -u cnhacktnt uptime '{keyserver}'> 也一样。
>
> =head3 tonodes 命令
>
> B<tonodes> 指定要操作的机器集合的方式和上面一样,只不过它的功能是通过 SSH 传文件到这些机器上去,具体使用方法你可以参看
> I<tonodes -h> 命令。
>
> =head3 key2nodes 命令
>
> 慢着!为啥你上面举的这些例子里面,都没见你输入用户密码阿?难道不需要?
>
> 呵呵,你真细心,实际上我不需要输密码是因为我采用了A<http://www.ibm.com/developerworks/cn/linux/security/openssh/part1/ind...密钥来登录
> SSH> 的缘故。
>
> =begin pre
>
> $ ssh-keygen -t rsa # 生成 RSA 加密的密钥一对,通常默认保存在 ~/.ssh 目录下
>
> $ ls ~/.ssh # id_rsa 是私钥,保存在你本地;id_rsa.pub 是公钥
> id_rsa id_rsa.pub
>
> =end pre
>
> 然后你只要把公钥 I<id_rsa.pub> 里的内容追加到远端服务器你的家目录下 I<~/.ssh/authorized_keys>
> 文件中,下次你再登录的时候就不用输密码了(用户名还是要指定的,不指定的话默认是当前用户)。
>
> 那我有那么多机器,我一个一个把公钥写到它们的 autorized_keys 文件中还不疯掉?
>
> 当然不用,M<SSH::Batch> 还提供了 B<key2nodes>
> 命令来帮你生成和分发你的密钥,如果你在机器集群上的用户名和密码都一样(一般管理集群,都有中心认证服务器吧,不然你哭死),你就可使用这个命令来帮助你,比-如说我想把公钥传到
> I<'{allcluster}'> 这个集合中的机器上去,我只需要:
>
> =begin pre
>
> $ key2nodes -u cnhacktnt '{allcluster}'
>
> =end pre
>
> 然后程序会问你一次密码,你输入就OK了。
>
> 如果有任何问题,请来 A<http://groups.google.com/group/perlchina|Perlchina
> 的邮件列表>询问。(或发送任意邮件到 B<perlchina+subscribe@googlegroups.com> 申请加入列表)
>
> Ok! Enjoy! :-)
>
> ====================================
> 我们还在寻求更多的文章支持。
>
> Thanks.
> --
> Fayland Lam //http://www.fayland.org/
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] !!! +18 KOREAN HOT GIRL HAVING LIVE SEX SHOW +18 !!!


 

 

!!! +18 KOREAN HOT GIRL HAVING LIVE SEX SHOW +18 !!!

 

 
 


Image
 



--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] 2009 CN Perl Advent Day 5: SSH::Batch

http://perlchina.org/advent/2009/SSHBatch.html

from cnhackTNT

=for advent_year 2009

=for advent_day 5

=for advent_title SSH::Batch

=for advent_author cnhackTNT

毫不夸张,SSH 已经成为我每天工作生活必备的工具之一了,相信很多做运维或者在 Linux/Unix 下做开发的朋友也一样,经常需要 SSH
到某台机器上去做点什么。当你只有一台服务器的时候,并不会觉得敲一串命令有啥不爽,但是当你有多台服务器,每台都需要你 SSH
上去做点什么的时候,如果还纯人工纯手动,那就太郁闷了。

于是,A<http://agentzh.spaces.live.com|agentzh++> 写了 M<SSH::Batch> 来拯救你了~!

用 cpan 来安装它吧!

=begin pre

$ sudo cpan SSH::Batch

=end pre

M<SSH::Batch> 是基于 M<Net::OpenSSH> 的,而 M<Net::OpenSSH> 是基于
A<http://www.openssh.org|OpenSSH> 的二进制客户端的,所以只要你机器上装了 OpenSSH
客户端,此外没有其他太多的依赖模块,但正因为此,该模块在 Windows 上是无法使用的。事实上,在 perl 的世界里如果需要编程操纵
SSH, M<Net::OpenSSH> 是首选的模块,而 M<Net::SSH::*>
系列的模块,我个人不是很推荐,一来依赖太多,二来有些模块缺人管理,也许以后情况会好些。

用 cpan 安装好 SSH::Batch 后,实际上给你提供了几个方便的 perl 程序,他们分别是: M<atnodes>,
M<key2nodes>, M<tonodes>, M<fornodes>。

=head4 fornodes

这个命令不做 SSH 操作,因为 M<SSH::Batch> 的这些命令使用特定格式的字符串来表示机器集群,B<fornodes>
命令就负责将这些字符串解析成具体一台台的服务器 IP 地址或者域名(也许你有点云里雾里,没关系,继续看下去)。

=head4 atnodes

通过 SSH 在指定的机器集群上运行指定的命令。

=head4 key2nodes

如果你使用密钥作为 SSH 登录验证的方式,这个程序可以很方便地帮你把你生成的公钥传输到指定的机器集群上去(方便的前提是,你在这些机器上用户名都一样,且用同一个密码)。

=head4 tonodes

传输指定的文件到指定的机器集群上去。

=head3 如何表示我要管理的机器集群?

前面说到过,M<SSH::Batch> 提供的这些命令用一种特定的方式来表示机器集群,举例来说:

=begin pre

10.0.0.1 # 代表 IP 地址为 10.0.0.1 的机器
10.0.0.[1,2,9] # 代表 10.0.0.1, 10.0.0.2, 10.0.0.9 这三台不同 IP 的机器
192.168.1.[2-20] # 代表 192.168.1.2, 192.168.1.3 ... 192.168.1.20
这19台不同 IP 的机器
[a-c].example.com # 代表 a.example.comb.example.comc.example.com 三台机器
serv[1-2].example.com # 代表 serv1.example.comserv2.example.com 两台机器

=end pre

这样,只要你的机器们拥有相似的 IP 地址或者域名,那么用例子中的形式,你就不需要把一个一个 IP 地址或者域名列出来来表示他们了。

前面提到过 B<fornodes>, 我们来验证一下:

=begin pre

$ fornodes '10.0.0.[1,2,9]'
10.0.0.1 10.0.0.2 10.0.0.9

$ fornodes 'serv[1-2].example.com'
serv1.example.com serv2.example.com

=end pre

哦耶!

Wait... 如果我想操作 I<foo[1-10].example.com> 但是不要其中的 foo4.example.com
怎么办?你当然可以用这种表示方法:

=begin pre

foo[1-3,5-10].example.com

=end pre

或者还可以

=begin pre

foo[1-10].example.com - foo4.example.com

=end pre

还能做减法?!当然!M<SSH::Batch>
将你不同的机器集群当作不同的集合,而其中的机器就是一个个的元素。你可以从集合中随意去掉或者增加一些元素,当然也可以取集合间的并集,交集,子集。

说到这里,不得不提一下 B<~/.fornodesrc> 这个文件,这是 B<fornodes>
命令默认读取的配置文件,里面包含你自定义的一些机器集合,比如说:

=begin pre

$ cat ~/.fornodesrc
cluster1=admin.key.com worker[1-3].foo.com client[1-5].foo.com
cluster2=admin.key.com worker[1-5].bar.com client[1-3].bar.com
wk_and_cl={cluster1} + {cluster2} - admin.*.com
allcluster={cluster1} + {cluster2}
monitor=admin.key.com slave.admin.key.com
keyserver={allcluster} * {monitor}

=end pre

上面的文件中我们定义了6个机器集合:I<cluster1>, I<cluster2>, I<wk_and_cl>,
I<allcluster>, I<monitor>, I<keyserver>。

B<+> 代表求并集;

B<-> 代表从集合中减去一个子集或者某些元素;

B<*> 代表求交集

B<{}> 代表集合

B<空格> 分隔集合中的元素

我们来验证一下:

=begin pre

$ fornodes '{cluster1}'
admin.key.com client1.foo.com client2.foo.com client3.foo.com
client4.foo.com client5.foo.com worker1.foo.com worker2.foo.com
worker3.foo.com

$ fornodes '{cluster2}'
admin.key.com client1.bar.com client2.bar.com client3.bar.com
worker1.foo.com worker2.foo.com worker3.foo.com worker4.foo.com
worker5.foo.com

$ fornodes '{wk_and_cl}'
client1.bar.com client1.foo.com client2.bar.com client2.foo.com
client3.bar.com client3.foo.com client4.foo.com client5.foo.com
worker1.foo.com worker2.foo.com worker3.foo.com worker4.foo.com
worker5.foo.com

$ fornodes '{allcluster}'
admin.key.com client1.bar.com client1.foo.com client2.bar.com
client2.foo.com client3.bar.com client3.foo.com client4.foo.com
client5.foo.com worker1.foo.com worker2.foo.com worker3.foo.com
worker4.foo.com worker5.foo.com

$ fornodes '{keyserver}'
admin.key.com

=end pre

没错吧:-)!B<atnodes>,B<tonodes> 都使用 B<fornodes>
来解析你指定的集合,所以你可以把你常用的机器集群都像之前提到的写到 B<~/.fornodesrc>
文件中去,然后用上面例子中的方法来使用他们。

=head3 atnodes 命令

比如我要取得所有机器的运行时间,当前负载信息:

=begin pre

$ atnodes -u cnhacktnt uptime '{allcluster}'

=end pre

于是, B<atnodes> 会默认起20个进程,以 cnhacktnt 的身份登录到你的机器们上去执行 uptime 命令,你就会得到类似这样的信息:

=begin pre

===================== worker1.foo.com =====================
12:29AM up 205 days, 11:58, 74 users, load averages: 0.00, 0.00, 0.00

===================== worker2.foo.com =====================
12:35AM up 8 days, 9:08, 4 users, load averages: 0.13, 0.09, 0.10

===================== client1.foo.com =====================
12:34AM up 847 days, 13:05, 0 users, load averages: 1.03, 0.75, 0.64

===================== worker3.bar.com =====================
12:35AM up 534 days, 15:08, 1 user, load averages: 0.21, 0.89, 1.23

===================== admin.key.com =====================
12:35AM up 210 days, 13:05, 20 users, load averages: 5.17, 4.30, 4.24

... 省略结果 ...

=end pre

当然,你也可以在 B<atnodes> 的命令行上做集合加减,比如:

=begin pre

$ atnodes -u cnhacktnt uptime '{allcluster} - {wk_and_cl}'

===================== admin.key.com =====================
12:35AM up 210 days, 13:05, 20 users, load averages: 5.17, 4.30, 4.24

=end pre

I<'{allcluster} - {wk_and_cl}'> 刚好就和 I<'{keyserver}'> 一样,所以上面的命令得到的结果和
I<atnodes -u cnhacktnt uptime '{keyserver}'> 也一样。

=head3 tonodes 命令

B<tonodes> 指定要操作的机器集合的方式和上面一样,只不过它的功能是通过 SSH 传文件到这些机器上去,具体使用方法你可以参看
I<tonodes -h> 命令。

=head3 key2nodes 命令

慢着!为啥你上面举的这些例子里面,都没见你输入用户密码阿?难道不需要?

呵呵,你真细心,实际上我不需要输密码是因为我采用了A<http://www.ibm.com/developerworks/cn/linux/security/openssh/part1/index.html|密钥来登录
SSH> 的缘故。

=begin pre

$ ssh-keygen -t rsa # 生成 RSA 加密的密钥一对,通常默认保存在 ~/.ssh 目录下

$ ls ~/.ssh # id_rsa 是私钥,保存在你本地;id_rsa.pub 是公钥
id_rsa id_rsa.pub

=end pre

然后你只要把公钥 I<id_rsa.pub> 里的内容追加到远端服务器你的家目录下 I<~/.ssh/authorized_keys>
文件中,下次你再登录的时候就不用输密码了(用户名还是要指定的,不指定的话默认是当前用户)。

那我有那么多机器,我一个一个把公钥写到它们的 autorized_keys 文件中还不疯掉?

当然不用,M<SSH::Batch> 还提供了 B<key2nodes>
命令来帮你生成和分发你的密钥,如果你在机器集群上的用户名和密码都一样(一般管理集群,都有中心认证服务器吧,不然你哭死),你就可使用这个命令来帮助你,比如说我想把公钥传到
I<'{allcluster}'> 这个集合中的机器上去,我只需要:

=begin pre

$ key2nodes -u cnhacktnt '{allcluster}'

=end pre

然后程序会问你一次密码,你输入就OK了。

如果有任何问题,请来 A<http://groups.google.com/group/perlchina|Perlchina
的邮件列表>询问。(或发送任意邮件到 B<perlchina+subscribe@googlegroups.com> 申请加入列表)

Ok! Enjoy! :-)

====================================
我们还在寻求更多的文章支持。

Thanks.
--
Fayland Lam // http://www.fayland.org/

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 16 google wave invites left

2009/11/30 zhihua zheng <zhihua.zheng@gmail.com>:
> zhihua.zheng@gmail.com
>

done.

> THX
>
> 2009/11/29 Xiaojun Deng <xjdengz@gmail.com>
>>
>> 2009/11/29 PIG <addmyin@gmail.com>:
>> > 我也有wave号,不知道我还有没。不过不太好玩。一太监的webqq+推推。
>> >
>> 是的,没有的可能比较好奇而已吧。
>> 这个wave是搞什么飞机的我还不太清楚,而且速度慢。我知道的只是可以发发消息,那他和
>> gtalk,ym等有啥区别呢?
>>
>> > 2009/11/29 Xiaojun Deng <xjdengz@gmail.com>
>> >>
>> >> 2009/11/29 SuperM <mqfuuster@gmail.com>:
>> >> > 还有吗,能送我试试吗,O(∩_∩)O谢谢
>> >> >
>> >> done, now 10 invites left :)
>> >>
>> >> > 2009/11/27 Alex <xjdengz@gmail.com>
>> >> >>
>> >> >> On Fri, Nov 27, 2009 at 04:47:16PM +0800, longbow0 wrote:
>> >> >> >需要的同学请回复,最好是 gmail 邮箱。
>> >> >> >
>> >> >>
>> >> >> the google wave invites have flooded, now there are 16 invites left,
>> >> >> if you want to get one, you also can contact me :)
>> >> >>
>> >> >> >
>> >> >> >>
>> >> >>
>> >> >> >>
>> >> >
>> >> >
>> >>
>> >>
>> >
>> >
>> > >
>> >
>> >>
>

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 哪位遇到过TT2的编码问题?

apache在win上可能需要关闭http头的默认编码。否则你怎么弄utf8都是乱码或者空白。

2009/12/4 Mike.G <hylinux@gmail.com>
这个不一样得。
你没有理解透彻

文件是UTF-8,同时你得HTML里要加上meta指明你得content-type charset
就不会有问题了。


2009/12/4 钟声 <gh00920307@gmail.com>
use utf8 并不能一直有效。

比如在DOS命令行里。只有GBK编码才能正常显示
但我的程序都是utf8的。
加了个
use encoding 'utf8',STDOUT=>'gbk';
如果用die输出中文,还是会出现乱码。

解决乱码的问题对我这样的菜鸟来说从没间断过。
后来我就一直保持使用utf8,确保方便找到问题。
有时是因为自己程序文件本身的编码错误和输出端错误的解码导致的。
像WEB,如果文件是utf8编码,但浏览器按GBK解码就会乱码。

哎。问题真的很多呀

2009/12/4 Mike.G <hylinux@gmail.com>
还真没试过。



2009/12/4 Beckheng Lam <bi.ken.lam@gmail.com>
这个,我知道。:)

顺路问一下,use utf8后,使用tt2的filter会不会乱码?


Mike.G wrote:
Mason?
我们讨论的是TT2.
use utf8;

就可以了。


2009/12/4 Beckheng Lam <bi.ken.lam@gmail.com>
小试了一下,貌似use encoding 'utf8'要放在各个Mason componment显式调用,才能生效







--  Perl乐事 -- http://www.perlersh.org 我的博客 -- http://www.perlersh.org/blog.html 揭谛揭谛,波罗揭谛,波罗僧揭谛,菩提萨婆诃。 













--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 哪位遇到过TT2的编码问题?

这个不一样得。
你没有理解透彻

文件是UTF-8,同时你得HTML里要加上meta指明你得content-type charset
就不会有问题了。


2009/12/4 钟声 <gh00920307@gmail.com>
use utf8 并不能一直有效。
比如在DOS命令行里。只有GBK编码才能正常显示
但我的程序都是utf8的。
加了个
use encoding 'utf8',STDOUT=>'gbk';
如果用die输出中文,还是会出现乱码。

解决乱码的问题对我这样的菜鸟来说从没间断过。
后来我就一直保持使用utf8,确保方便找到问题。
有时是因为自己程序文件本身的编码错误和输出端错误的解码导致的。
像WEB,如果文件是utf8编码,但浏览器按GBK解码就会乱码。

哎。问题真的很多呀

2009/12/4 Mike.G <hylinux@gmail.com>
还真没试过。



2009/12/4 Beckheng Lam <bi.ken.lam@gmail.com>
这个,我知道。:)

顺路问一下,use utf8后,使用tt2的filter会不会乱码?


Mike.G wrote:
Mason?
我们讨论的是TT2.
use utf8;

就可以了。


2009/12/4 Beckheng Lam <bi.ken.lam@gmail.com>
小试了一下,貌似use encoding 'utf8'要放在各个Mason componment显式调用,才能生效







--  Perl乐事 -- http://www.perlersh.org 我的博客 -- http://www.perlersh.org/blog.html 揭谛揭谛,波罗揭谛,波罗僧揭谛,菩提萨婆诃。 










--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 哪位遇到过TT2的编码问题?

use utf8 并不能一直有效。
比如在DOS命令行里。只有GBK编码才能正常显示
但我的程序都是utf8的。
加了个
use encoding 'utf8',STDOUT=>'gbk';
如果用die输出中文,还是会出现乱码。

解决乱码的问题对我这样的菜鸟来说从没间断过。
后来我就一直保持使用utf8,确保方便找到问题。
有时是因为自己程序文件本身的编码错误和输出端错误的解码导致的。
像WEB,如果文件是utf8编码,但浏览器按GBK解码就会乱码。

哎。问题真的很多呀

2009/12/4 Mike.G <hylinux@gmail.com>
还真没试过。



2009/12/4 Beckheng Lam <bi.ken.lam@gmail.com>
这个,我知道。:)

顺路问一下,use utf8后,使用tt2的filter会不会乱码?


Mike.G wrote:
Mason?
我们讨论的是TT2.
use utf8;

就可以了。


2009/12/4 Beckheng Lam <bi.ken.lam@gmail.com>
小试了一下,貌似use encoding 'utf8'要放在各个Mason componment显式调用,才能生效







--  Perl乐事 -- http://www.perlersh.org 我的博客 -- http://www.perlersh.org/blog.html 揭谛揭谛,波罗揭谛,波罗僧揭谛,菩提萨婆诃。 







--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: CN Perl Advent Day 4: autodie

COOL, day 5 我已经 push 上去了, fayland++ pull 一下吧:-)

2009/12/4 Fayland Lam <fayland@gmail.com>
http://perlchina.org/advent/2009/autodie.html

=for advent_year 2009

=for advent_day 4

=for advent_title autodie

=for advent_author Fayland Lam

在编写 Perl 脚本的时候,我们经常使用类似下面的代码来检查内置函数(如
open)是否成功。

=begin code

open(my $fh, '<', $filename) or die "Can't open $filename - $!";

=end code

我们经常发现有太多地方需要重复写,或者经常遗忘了这样写。想偷懒?找
A<autodie>.

=begin codeNNN

eval {
use autodie;
open(my $fh, '<', $some_file);
my @records = <$fh>;
# Do things with @records...
close($fh);
};

if ($@ and $@->isa('autodie::exception')) {
if ($@->matches('open')) { print "Error from open\n"; }
if ($@->matches(':io' )) { print "Non-open, IO error."; }
} elsif ($@) {
# A non-autodie exception.
}

=end codeNNN

autodie 不仅仅对系统函数起作用,还可以对自定义函数其作用。

=begin code

use File::Copy qw(move);
use autodie qw(move);

move('noexists.txt', 'another.txt');

=end code

当移动失败时会自动报错,如

=begin pre

Can't move('noexists.txt', 'another.txt'): Bad file descriptor at t.pl
line 9

=end pre

更多的请参考 A<autodie> doc 和
A<http://perltraining.com.au/tips/2008-08-20.html|Perl Training
Australia - autodie>

谢谢。

================================
我们还在寻求更多的文章支持,谢谢。

--
Fayland Lam // http://www.fayland.org/





--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

2009年12月3日星期四

[PerlChina] Re: 哪位遇到过TT2的编码问题?

还真没试过。


2009/12/4 Beckheng Lam <bi.ken.lam@gmail.com>
这个,我知道。:)

顺路问一下,use utf8后,使用tt2的filter会不会乱码?


Mike.G wrote:
Mason?
我们讨论的是TT2.
use utf8;

就可以了。


2009/12/4 Beckheng Lam <bi.ken.lam@gmail.com>
小试了一下,貌似use encoding 'utf8'要放在各个Mason componment显式调用,才能生效







--  Perl乐事 -- http://www.perlersh.org 我的博客 -- http://www.perlersh.org/blog.html 揭谛揭谛,波罗揭谛,波罗僧揭谛,菩提萨婆诃。 




--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 哪位遇到过TT2的编码问题?

这个,我知道。:)

顺路问一下,use utf8后,使用tt2的filter会不会乱码?

Mike.G wrote:
Mason?
我们讨论的是TT2.
use utf8;

就可以了。


2009/12/4 Beckheng Lam <bi.ken.lam@gmail.com>
小试了一下,貌似use encoding 'utf8'要放在各个Mason componment显式调用,才能生效







--  Perl乐事 -- http://www.perlersh.org 我的博客 -- http://www.perlersh.org/blog.html 揭谛揭谛,波罗揭谛,波罗僧揭谛,菩提萨婆诃。 

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 哪位遇到过TT2的编码问题?

Mason?
我们讨论的是TT2.
use utf8;

就可以了。


2009/12/4 Beckheng Lam <bi.ken.lam@gmail.com>
小试了一下,貌似use encoding 'utf8'要放在各个Mason componment显式调用,才能生效




--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 哪位遇到过TT2的编码问题?

小试了一下,貌似use encoding 'utf8'要放在各个Mason componment显式调用,才能生效

Mike.G wrote:
use utf8;
帮你省略decode了。
实际上是一个道理。


2009/12/4 Beckheng Lam <bi.ken.lam@gmail.com>
难 道是要像我现在这样,用decode('utf8', xxxx)才能显示正常?

Mike.G wrote:
> 哪位遇到过TT2的编码问题?
>
> 举个例子:你的模版文件是utf-8的,但是没有BOM标记。
> 当你从数据库里检索出来的数据也是UTF-8的,而且打开了mysql的use-utf8的标记,
> 会不会像我一样出现乱码?
>
>
>
>
>
>


--
Perl乐事 -- http://www.perlersh.org
我的博客 -- http://www.perlersh.org/blog.html
揭谛揭谛,波罗揭谛,波罗僧揭谛,菩提萨婆诃。









--  Perl乐事 -- http://www.perlersh.org 我的博客 -- http://www.perlersh.org/blog.html 揭谛揭谛,波罗揭谛,波罗僧揭谛,菩提萨婆诃。 

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 哪位遇到过TT2的编码问题?

特别是模版系统外部变量的process


2009/12/4 Mike.G <hylinux@gmail.com>
use utf8;
帮你省略decode了。
实际上是一个道理。


2009/12/4 Beckheng Lam <bi.ken.lam@gmail.com>

难道是要像我现在这样,用decode('utf8', xxxx)才能显示正常?

Mike.G wrote:
> 哪位遇到过TT2的编码问题?
>
> 举个例子:你的模版文件是utf-8的,但是没有BOM标记。
> 当你从数据库里检索出来的数据也是UTF-8的,而且打开了mysql的use-utf8的标记,
> 会不会像我一样出现乱码?
>
>
>
>
>
>


--
Perl乐事 -- http://www.perlersh.org
我的博客 -- http://www.perlersh.org/blog.html
揭谛揭谛,波罗揭谛,波罗僧揭谛,菩提萨婆诃。






--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 哪位遇到过TT2的编码问题?

use utf8;
帮你省略decode了。
实际上是一个道理。


2009/12/4 Beckheng Lam <bi.ken.lam@gmail.com>
难道是要像我现在这样,用decode('utf8', xxxx)才能显示正常?

Mike.G wrote:
> 哪位遇到过TT2的编码问题?
>
> 举个例子:你的模版文件是utf-8的,但是没有BOM标记。
> 当你从数据库里检索出来的数据也是UTF-8的,而且打开了mysql的use-utf8的标记,
> 会不会像我一样出现乱码?
>
>
>
>
>
>


--
Perl乐事 -- http://www.perlersh.org
我的博客 -- http://www.perlersh.org/blog.html
揭谛揭谛,波罗揭谛,波罗僧揭谛,菩提萨婆诃。





--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 哪位遇到过TT2的编码问题?

是,在代码里面我也是这么处理的。
另外对于tt2的配置里也可以加上:ENCODING=>UTF-8

我查了TT2的email list
发现这个问题还是很普遍的,不太理解,这是故意设计成这样的还是怎么的。
如果使用其他的编码,比如GB2312, 那么就感觉特别麻烦。
需要实用ENCODE什么的转码?


Mike

2009/12/4 钟声 <gh00920307@gmail.com>
一般情况下加个
use utf8;


2009/12/4 Mike.G <hylinux@gmail.com>

哪位遇到过TT2的编码问题?

举个例子:你的模版文件是utf-8的,但是没有BOM标记。
当你从数据库里检索出来的数据也是UTF-8的,而且打开了mysql的use-utf8的标记,
会不会像我一样出现乱码?










--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 哪位遇到过TT2的编码问题?

看来我也要试试。

钟声 wrote:
一般情况下加个
use utf8;


2009/12/4 Mike.G <hylinux@gmail.com>
哪 位遇到过TT2的编码问题?

举个例子:你的模版文件是utf-8的,但是没有BOM标记。
当你从数据库里检索出来的数据也是UTF-8的,而且打开了mysql的use-utf8的标记,
会不会像我一样出现乱码?










--  Perl乐事 -- http://www.perlersh.org 我的博客 -- http://www.perlersh.org/blog.html 揭谛揭谛,波罗揭谛,波罗僧揭谛,菩提萨婆诃。 

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 哪位遇到过TT2的编码问题?

难道是要像我现在这样,用decode('utf8', xxxx)才能显示正常?

Mike.G wrote:
> 哪位遇到过TT2的编码问题?
>
> 举个例子:你的模版文件是utf-8的,但是没有BOM标记。
> 当你从数据库里检索出来的数据也是UTF-8的,而且打开了mysql的use-utf8的标记,
> 会不会像我一样出现乱码?
>
>
>
>
>
>


--
Perl乐事 -- http://www.perlersh.org
我的博客 -- http://www.perlersh.org/blog.html
揭谛揭谛,波罗揭谛,波罗僧揭谛,菩提萨婆诃。


--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 哪位遇到过TT2的编码问题?

一般情况下加个
use utf8;


2009/12/4 Mike.G <hylinux@gmail.com>
哪位遇到过TT2的编码问题?

举个例子:你的模版文件是utf-8的,但是没有BOM标记。
当你从数据库里检索出来的数据也是UTF-8的,而且打开了mysql的use-utf8的标记,
会不会像我一样出现乱码?







--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: [zt] 架构之美 by 华章图书

不是已经上市了嘛,china-pub已经发了
--
blog: http://chenxiaoyu.org/blog/


2009/12/4 Qiang (James) <shijialee@gmail.com>
帮经常给咱们赞助的华章图书做下广告。。

架构之美 - 近期即将上市

“本书的作者们在介绍软件架构的基本实践和最佳实践方面干得很漂亮,他们也同
样漂亮地介绍了各式各样的现代系统。我特别喜欢他们谈及的架构的广泛性,从
Emacs到Facebook,从非常正式的系统到非常有灵气的系统。
简而言之,这是一本非常及时的书,对于软件架构的艺术、科学和实践是非常有益
的贡献。”
——Grady Booch,IBM院士

内容简介
本书围绕5个主题领域来组织本书的内容:概述、企业应用、系统、最终用户
应用和编程语言。本书让最优秀的设计师和架构师来描述他们选择的软件架构,剥
开架构的各层,展示他们如何让软件做到实现功能、可靠、易用、高效率、可维
护、可移植和优雅。

前三章节可以下载试阅:
http://perlchina.org/promote/Beatiful-Architecture-Sample.zip

Qiang




--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] [zt] 架构之美 by 华章图书

帮经常给咱们赞助的华章图书做下广告。。

架构之美 - 近期即将上市

"本书的作者们在介绍软件架构的基本实践和最佳实践方面干得很漂亮,他们也同
样漂亮地介绍了各式各样的现代系统。我特别喜欢他们谈及的架构的广泛性,从
Emacs到Facebook,从非常正式的系统到非常有灵气的系统。
简而言之,这是一本非常及时的书,对于软件架构的艺术、科学和实践是非常有益
的贡献。"
                       ——Grady Booch,IBM院士

内容简介
  本书围绕5个主题领域来组织本书的内容:概述、企业应用、系统、最终用户
应用和编程语言。本书让最优秀的设计师和架构师来描述他们选择的软件架构,剥
开架构的各层,展示他们如何让软件做到实现功能、可靠、易用、高效率、可维
护、可移植和优雅。

前三章节可以下载试阅:
http://perlchina.org/promote/Beatiful-Architecture-Sample.zip

Qiang

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] 哪位遇到过TT2的编码问题?

哪位遇到过TT2的编码问题?

举个例子:你的模版文件是utf-8的,但是没有BOM标记。
当你从数据库里检索出来的数据也是UTF-8的,而且打开了mysql的use-utf8的标记,
会不会像我一样出现乱码?




--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] CN Perl Advent Day 4: autodie

http://perlchina.org/advent/2009/autodie.html

=for advent_year 2009

=for advent_day 4

=for advent_title autodie

=for advent_author Fayland Lam

在编写 Perl 脚本的时候,我们经常使用类似下面的代码来检查内置函数(如
open)是否成功。

=begin code

open(my $fh, '<', $filename) or die "Can't open $filename - $!";

=end code

我们经常发现有太多地方需要重复写,或者经常遗忘了这样写。想偷懒?找
A<autodie>.

=begin codeNNN

eval {
use autodie;
open(my $fh, '<', $some_file);
my @records = <$fh>;
# Do things with @records...
close($fh);
};

if ($@ and $@->isa('autodie::exception')) {
if ($@->matches('open')) { print "Error from open\n"; }
if ($@->matches(':io' )) { print "Non-open, IO error."; }
} elsif ($@) {
# A non-autodie exception.
}

=end codeNNN

autodie 不仅仅对系统函数起作用,还可以对自定义函数其作用。

=begin code

use File::Copy qw(move);
use autodie qw(move);

move('noexists.txt', 'another.txt');

=end code

当移动失败时会自动报错,如

=begin pre

Can't move('noexists.txt', 'another.txt'): Bad file descriptor at t.pl
line 9

=end pre

更多的请参考 A<autodie> doc 和
A<http://perltraining.com.au/tips/2008-08-20.html|Perl Training
Australia - autodie>

谢谢。

================================
我们还在寻求更多的文章支持,谢谢。

--
Fayland Lam // http://www.fayland.org/


--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: CN Perl Advent Day 2: Perl 开发环境建议

很好

On 12月2日, 上午9时23分, Fayland Lam <fayl...@gmail.com> wrote:
> http://perlchina.org/advent/2009/PerlDevENV.html
>
> from cnhackTNT
>
> =for advent_year 2009
>
> =for advent_day 2
>
> =for advent_title Perl 开发环境建议
>
> =for advent_author cnhackTNT
>
> 尽管几乎所有的 Linux/Unix 发行版都附带了 Perl 和相关的模块,但作为一个
> Perl 开发者,在构建自己的开发环境时,有些很好的习惯可以遵循,这样不会因
> 为安装和尝试各种模块的时候将你的系统搞脏,也不需要你动不动就祭出 root 大
> 神往系统目录里写文件等等。
>
> P<2009-01|昨天> A<http://www.fayland.org|Fayland> 给我们介绍了非常方便的
> M<local::lib> 模块,你当然可以按照他介绍的方法来管理需要自己额外安装的模
> 块,但对于想搭建自己得心应手的 Perl 开发环境的同学,我这里有另一种比较好
> 的建议。
>
> 首先,大部分 Linux/Unix 发行版(我不是歧视温道士系统,只是我个人不用它作
> 为开发环境)都是追求稳定的,A<http: //www.ubuntu.com|Ubunut> 也才升到
> perl5.10 不久,而我使用的 A<http://www.gentoo.org|Gentoo>, 其上的
> perl5.10 至今都还被 Mask 着呢。对于 Perl 来说,新的版本不但有 bug 的修
> 复,性能上的提升,还有很多新特性被加入进来,之前
> A<http://agentzh.spaces.live.com|agentzh> 对 perl5.10 的某个版本有过测
> 试,结果是存在比较明显的内存泄漏,而换用最新开发版中的 5.11 版本,这些问
> 题就不存在了。而且生产环境证明,perl 最新的 devel 版本还是比较靠谱的,因
> 此对于 perl 开发者,我强烈建议您自己编译一套
> A<http://www.cpan.org/src/perl-5.11.2.tar.gz|perl5.11.2>,这样做的好处主
> 要有几点:
>
> 1. 你可以享受到最新 perl 版本带来的一系列优势,包括 bug 的修复,新特性的
> 支持,性能的提升等。
>
> 2. 你可以根据需要调整你的 perl 编译参数,以达到关闭/开启某些特性和优化编
> 译的目的。
>
> 3. 你可以打造一个干净的 perl 版本,除了核心模块外,其他的模块你可以根据
> 项目需要来安装,批量部署的时候(系统体系相同的情况下),大部分时候你只需
> 要把自己指定的这个 perl 版本的目录整个 COPY 过去就OK了。
>
> 4. 与系统自带的 perl 完全独立,你对自己编译的 perl 做的动作完全不会影响
> 到系统自带的 perl,这样你的系统不会因为自带的 perl 或其模块被改动,而在
> 升级的时候碰到问题。
>
> 5. 你可以在系统自带的 perl 和自己编译的 perl 间自由切换 :-).
>
> 那么,接下来让我们看看如何来打造一个自己的 Perl 开发环境吧!
>
> 首先,我们需要下载最新的 Perl 源码,你可以选择同步 perl.org
> A<http://perl5.git.perl.org/perl.git|git 仓库中的 Perl 源码>,也可以选择
> 使用官方打包好的 A<http://www.cpan.org/src/perl-5.11.2.tar.gz|5.11.2
> 本>。我们以后者为例:
>
> =begin pre
>
> $ wgethttp://www.cpan.org/src/perl-5.11.2.tar.gz
> $ tar xzvf perl-5.11.2.tar.gz
> $ cd perl-5.11.2
>
> =end pre
>
> 你可以选择直接运行 Configure 脚本来交互式地完成这一过程,当然在你比较熟
> 悉这一过程的情况下,也可以直接给出你的配置参数免得浪费时间:
>
> =begin pre
>
> $ Configure -Dusedevel -Dprefix=$HOME/perl -des
>
> =end pre
>
> 以上参数的意思分别是:
>
> =begin pre
>
> -Dusedevel 使用开发版本的 perl,因为我们这个是 devel 版本,所以得加上这个
> -Dprefix=$HOME/perl 指定我们自己编译的这个 perl 将被安装到当前用户家目录
> 下的 perl 目录中
> -des 指定其他配置参数采用 perl 默认配置
>
> =end pre
>
> 当然就像之前所说的,你可以根据自己的需求来对编译的 perl 做一些优化和定
> 制,比如要不要 thread, 要不要大文件支持...等等,具体可参看源码目录内的
> INSTALL 和 README 文档,我自己是加上了 "-fomit-frame-pointer" 的 ccflags
> 参数。
> 等配置完成后,就可以 make, make test, make install 了:
>
> =begin pre
>
> $ make
> $ make test
> $ make install
>
> =end pre
>
> 一般来说,整个配置编译过程还是会比较顺利的。
> 恭喜!至此,属于你的 perl 已经编译安装完成了,那下一步就让我们来实现它和
> 系统自带 perl 的自由切换吧!
>
> 实现非常简单,请编辑你的 B<~/.bashrc> 文件, 加入:
>
> =begin pre
>
> alias devperl='PATH=${PATH_NORMAL:-$PATH};export
> PATH_NORMAL=$PATH;export PATH=/home/dev/perl/bin:$PATH;echo -e
> "\nPATH=$PATH\nPATH_NORMAL=$PATH_NORMAL\nDevperl!\n"'
> alias sysperl='PATH=${PATH_NORMAL:-$PATH};export PATH=$PATH;unset
> PATH_NORMAL;echo -e "\nPATH=$PATH\nSysperl!\n"'
>
> =end pre
>
> 这样,在默认情况下,你使用的都会是系统的 perl, 而一旦你想开始做些 perl
> 开发,或者通过 cpan 安装新模块,便可以在命令行敲入 B<devperl> 命令然后回
> 车,立马就切换过去了。此时你无论运行 cpan, perl 或是 perldoc, 调用的都是
> 你自己编译的 perl 中的相应程序,而且这时通过 cpan 安装的模块也通通会保存
> 到 B<~/perl> 下的相应目录里,不会弄乱你的系统。
>
> 想回到系统的 perl 怎么办?敲入 B<sysperl> 就OK了。
>
> 一般编译安装完 perl 后,通常我第一件事就是升级 M<CPAN> 模块,并安装一些
> 常用的其他模块。
>
> =begin pre
>
> $ devperl
> $ cpan Bundle::CPAN
>
> =end pre
>
> 在你编译的 perl 中,用 CPAN 来安装模块是我们强烈建议的方式,大多数情况
> 下,CPAN 会工作得很顺利,偶尔会碰到一些类似依赖顺序,外部库和 make test
> 失败的问题,但是只要仔细查看出错信息,解决起来还是很顺手的。
>
> A<http://www.enlightenedperl.org|Enlightened Perl> 的项目之一
> M<Task::Kensho> 帮你打包好了目前 CPAN TOP100 模块中最常用的一些模块,也
> 包括了昨天 Fayland 所说到的 M<local::lib>, 强烈建议 perl 开发者通过安装
> M<Task::Kensho> 来获得这些模块,当然由于它包含的模块比较多,可能需要花一
> 些时间,如果不想全部安装它们,你可以看看 M<Task::Kensho> 的 pod 文档,选
> 择自己感兴趣的模块加到你的 perl 中。
>
> 在完成这些之后,你可能需要挑一个顺手的编辑器,VIM/Emacs 可能会是大部分
> linux 开发的首选,但我想提到的是基于 Eclipse 的
> A<http://www.epic-ide.org|E-P-I-C> 这个 Perl IDE 也是非常不错的。此外,
> 我们还有目前很热的 A<http://padre.perlide.org|Padre>, 一款用 Perl 开发的
> IDE,功能和可用性也非常不错,相信之后 Fayland 会做介绍。
>
> 关于 VIM 上做 Perl 开发,来自台湾的
> A<http://c9s.blogspot.com/search/label/Vim|c9s> 有很多不错的技巧分享(需
> 翻墙)。
>
> ======================
> 我们还在寻求更多的文章支持
>
> 谢谢
>
> --
> Fayland Lam //http://www.fayland.org/
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

2009年12月2日星期三

[PerlChina] Re: CN Advent Day 3: End Scope

B::Hooks::EndOfScope貌似只能在某个编译单元(比如BEGIN块,模块文件)结束时添加代码。

$wiz能够触发free,是因为$^H |= 0x020000后,%^H会在该编译单元 结束编译 前copy原来的值么?

看到CORE/perl.h中有一句注释:

#define HINT_LOCALIZE_HH 0x00020000 /* %^H needs to be copied */

perlvar中的文档写的也太简单了...

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] CN Advent Day 3: End Scope

http://perlchina.org/advent/2009/EndScope.html

=for advent_year 2009

=for advent_day 3

=for advent_title End Scope

=for advent_author Fayland Lam

CPAN 上有很多支持在 scope 结束后运行某些代码,其中最常用的是
M<Scope::Guard> 和 M<B::Hooks::EndOfScope>

M<Scope::Guard> 采用最常见的 B<DESTROY> 方法。Scope::Guard 可以通过
dismiss 来取消。

=begin codeNNN

use Net::FTP;
use Scope::Guard;

{
my $err;
my $sg = Scope::Guard->new(
sub { email_error($err); die $err; }
);
my $ftp = Net::FTP->new($host, Debug => 0)
or do { return $err = "Cannot connect to $host: $@"; };
$ftp->login($user, $pass)
or do { return $err = "Cannot login " . $ftp->message; };

$sg->dismiss();
}

=end codeNNN

M<B::Hooks::EndOfScope> 使用 M<Variable::Magic> 中的魔术 B<$^H>.
EndOfScope 的强悍之处在于支持 Moose 的方法修改,并且支持多个
on_scope_end 加载。

=begin codeNNN

# Make sure that the application class becomes immutable at this point,
# which ensures that it gets an inlined constructor. This means that it
# works even if the user has added a plugin which contains a new method.
# Note however that we have to do the work on scope end, so that method
# modifiers work correctly in MyApp (as you have to call setup _before_
# applying modifiers).
B::Hooks::EndOfScope::on_scope_end {
return if $@;
my $meta = Class::MOP::get_metaclass_by_name($class);
if ( $meta->is_immutable && ! { $meta->immutable_options
}->{inline_constructor} ) {
warn "You made your application class ($class) immutable, "
. "but did not inline the constructor.\n"
. "This will break catalyst, please pass "
. "(replace_constructor => 1) when making your class immutable.\n";
}
$meta->make_immutable(replace_constructor => 1) unless $meta->is_immutable;
};

$class->setup_finalize;

=end codeNNN

上述代码来自 A<Catalyst>

我们一般在多处 return, next 或复杂子程序调用的时候,为了使代码更简洁而采
用上述模块。

谢谢。

===================
我们还在寻求更多的文章支持,谢谢。

--
Fayland Lam // http://www.fayland.org/


--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

2009年12月1日星期二

[PerlChina] Re: CN Perl Advent Day 2: Perl 开发环境建议

hm... 一直都是 ...

乔帮主万岁 ...

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: CN Perl Advent Day 2: Perl 开发环境建议

你啥时候变水果党了?

2009/12/2 Shu Cho <neatcho@gmail.com>

Padre Standalone 0.50 for Mac (Experimental)

http://ali.as/Padre.dmg

我还没用过 ...




--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: CN Perl Advent Day 2: Perl 开发环境建议

Padre Standalone 0.50 for Mac (Experimental)

http://ali.as/Padre.dmg

我还没用过 ...

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: CN Perl Advent Day 2: Perl 开发环境建议

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] CN Perl Advent Day 2: Perl 开发环境建议

http://perlchina.org/advent/2009/PerlDevENV.html

from cnhackTNT

=for advent_year 2009

=for advent_day 2

=for advent_title Perl 开发环境建议

=for advent_author cnhackTNT

尽管几乎所有的 Linux/Unix 发行版都附带了 Perl 和相关的模块,但作为一个
Perl 开发者,在构建自己的开发环境时,有些很好的习惯可以遵循,这样不会因
为安装和尝试各种模块的时候将你的系统搞脏,也不需要你动不动就祭出 root 大
神往系统目录里写文件等等。

P<2009-01|昨天> A<http://www.fayland.org|Fayland> 给我们介绍了非常方便的
M<local::lib> 模块,你当然可以按照他介绍的方法来管理需要自己额外安装的模
块,但对于想搭建自己得心应手的 Perl 开发环境的同学,我这里有另一种比较好
的建议。

首先,大部分 Linux/Unix 发行版(我不是歧视温道士系统,只是我个人不用它作
为开发环境)都是追求稳定的,A<http: //www.ubuntu.com|Ubunut> 也才升到
perl5.10 不久,而我使用的 A<http://www.gentoo.org|Gentoo>, 其上的
perl5.10 至今都还被 Mask 着呢。对于 Perl 来说,新的版本不但有 bug 的修
复,性能上的提升,还有很多新特性被加入进来,之前
A<http://agentzh.spaces.live.com|agentzh> 对 perl5.10 的某个版本有过测
试,结果是存在比较明显的内存泄漏,而换用最新开发版中的 5.11 版本,这些问
题就不存在了。而且生产环境证明,perl 最新的 devel 版本还是比较靠谱的,因
此对于 perl 开发者,我强烈建议您自己编译一套
A<http://www.cpan.org/src/perl-5.11.2.tar.gz|perl5.11.2>,这样做的好处主
要有几点:

1. 你可以享受到最新 perl 版本带来的一系列优势,包括 bug 的修复,新特性的
支持,性能的提升等。

2. 你可以根据需要调整你的 perl 编译参数,以达到关闭/开启某些特性和优化编
译的目的。

3. 你可以打造一个干净的 perl 版本,除了核心模块外,其他的模块你可以根据
项目需要来安装,批量部署的时候(系统体系相同的情况下),大部分时候你只需
要把自己指定的这个 perl 版本的目录整个 COPY 过去就OK了。

4. 与系统自带的 perl 完全独立,你对自己编译的 perl 做的动作完全不会影响
到系统自带的 perl,这样你的系统不会因为自带的 perl 或其模块被改动,而在
升级的时候碰到问题。

5. 你可以在系统自带的 perl 和自己编译的 perl 间自由切换 :-).

那么,接下来让我们看看如何来打造一个自己的 Perl 开发环境吧!

首先,我们需要下载最新的 Perl 源码,你可以选择同步 perl.org
A<http://perl5.git.perl.org/perl.git|git 仓库中的 Perl 源码>,也可以选择
使用官方打包好的 A<http://www.cpan.org/src/perl-5.11.2.tar.gz|5.11.2
本>。我们以后者为例:

=begin pre

$ wget http://www.cpan.org/src/perl-5.11.2.tar.gz
$ tar xzvf perl-5.11.2.tar.gz
$ cd perl-5.11.2

=end pre

你可以选择直接运行 Configure 脚本来交互式地完成这一过程,当然在你比较熟
悉这一过程的情况下,也可以直接给出你的配置参数免得浪费时间:

=begin pre

$ Configure -Dusedevel -Dprefix=$HOME/perl -des

=end pre

以上参数的意思分别是:

=begin pre

-Dusedevel 使用开发版本的 perl,因为我们这个是 devel 版本,所以得加上这个
-Dprefix=$HOME/perl 指定我们自己编译的这个 perl 将被安装到当前用户家目录
下的 perl 目录中
-des 指定其他配置参数采用 perl 默认配置

=end pre

当然就像之前所说的,你可以根据自己的需求来对编译的 perl 做一些优化和定
制,比如要不要 thread, 要不要大文件支持...等等,具体可参看源码目录内的
INSTALL 和 README 文档,我自己是加上了 "-fomit-frame-pointer" 的 ccflags
参数。
等配置完成后,就可以 make, make test, make install 了:

=begin pre

$ make
$ make test
$ make install

=end pre

一般来说,整个配置编译过程还是会比较顺利的。
恭喜!至此,属于你的 perl 已经编译安装完成了,那下一步就让我们来实现它和
系统自带 perl 的自由切换吧!

实现非常简单,请编辑你的 B<~/.bashrc> 文件, 加入:

=begin pre

alias devperl='PATH=${PATH_NORMAL:-$PATH};export
PATH_NORMAL=$PATH;export PATH=/home/dev/perl/bin:$PATH;echo -e
"\nPATH=$PATH\nPATH_NORMAL=$PATH_NORMAL\nDevperl!\n"'
alias sysperl='PATH=${PATH_NORMAL:-$PATH};export PATH=$PATH;unset
PATH_NORMAL;echo -e "\nPATH=$PATH\nSysperl!\n"'

=end pre

这样,在默认情况下,你使用的都会是系统的 perl, 而一旦你想开始做些 perl
开发,或者通过 cpan 安装新模块,便可以在命令行敲入 B<devperl> 命令然后回
车,立马就切换过去了。此时你无论运行 cpan, perl 或是 perldoc, 调用的都是
你自己编译的 perl 中的相应程序,而且这时通过 cpan 安装的模块也通通会保存
到 B<~/perl> 下的相应目录里,不会弄乱你的系统。

想回到系统的 perl 怎么办?敲入 B<sysperl> 就OK了。

一般编译安装完 perl 后,通常我第一件事就是升级 M<CPAN> 模块,并安装一些
常用的其他模块。

=begin pre

$ devperl
$ cpan Bundle::CPAN

=end pre

在你编译的 perl 中,用 CPAN 来安装模块是我们强烈建议的方式,大多数情况
下,CPAN 会工作得很顺利,偶尔会碰到一些类似依赖顺序,外部库和 make test
失败的问题,但是只要仔细查看出错信息,解决起来还是很顺手的。

A<http://www.enlightenedperl.org|Enlightened Perl> 的项目之一
M<Task::Kensho> 帮你打包好了目前 CPAN TOP100 模块中最常用的一些模块,也
包括了昨天 Fayland 所说到的 M<local::lib>, 强烈建议 perl 开发者通过安装
M<Task::Kensho> 来获得这些模块,当然由于它包含的模块比较多,可能需要花一
些时间,如果不想全部安装它们,你可以看看 M<Task::Kensho> 的 pod 文档,选
择自己感兴趣的模块加到你的 perl 中。

在完成这些之后,你可能需要挑一个顺手的编辑器,VIM/Emacs 可能会是大部分
linux 开发的首选,但我想提到的是基于 Eclipse 的
A<http://www.epic-ide.org|E-P-I-C> 这个 Perl IDE 也是非常不错的。此外,
我们还有目前很热的 A<http://padre.perlide.org|Padre>, 一款用 Perl 开发的
IDE,功能和可用性也非常不错,相信之后 Fayland 会做介绍。

关于 VIM 上做 Perl 开发,来自台湾的
A<http://c9s.blogspot.com/search/label/Vim|c9s> 有很多不错的技巧分享(需
翻墙)。


======================
我们还在寻求更多的文章支持

谢谢

--
Fayland Lam // http://www.fayland.org/


--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---