2009年12月19日星期六

[PerlChina] CN Perl Advent Day 20: Asciio

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

=for advent_year 2009

=for advent_day 20

=for advent_title Asciio

=for advent_author Fayland Lam

M<App::Asciio> 是一个专门搞 ASCII 图表的工具。

虽然它有点难安装,但是整个程序还是比较好用的。

程序基于 Gtk2, 整体通过右键菜单来编辑文件,然后保存为 txt 或其他格式。参
见图片:

<img src='Asciio.png' border='0' />

谢谢。

--
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 访问此网上论坛。

Re: [PerlChina] Re: 16 google wave invites left

2009/12/20 黄庚根 <huanggeng.8552@gmail.com>
您好! 如果还有的话,麻烦您给我一个,谢谢!

2009/12/19 liseen <liseen.wan@gmail.com>

 
还有的话, 给我一个哦,谢谢。
huanggeng.8552@gmail.com
liseen.wan@gmail.com

发了 请接收

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

Re: [PerlChina] Re: 16 google wave invites left

您好! 如果还有的话,麻烦您给我一个,谢谢!

2009/12/19 liseen <liseen.wan@gmail.com>
 
还有的话, 给我一个哦,谢谢。

2009/12/6 Andrew Zhu <andrew.zhuyi@gmail.com>
我这里有4个邀请,要的请吱声。
Andrew

2009/12/5 Xiaojun Deng <xjdengz@gmail.com>:
> 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 访问该论坛
-~----------~----~----~----~------~----~------~--~---


--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

2009年12月18日星期五

Re: [PerlChina] Re: 16 google wave invites left

 
还有的话, 给我一个哦,谢谢。

2009/12/6 Andrew Zhu <andrew.zhuyi@gmail.com>
我这里有4个邀请,要的请吱声。
Andrew

2009/12/5 Xiaojun Deng <xjdengz@gmail.com>:
> 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 访问该论坛
-~----------~----~----~----~------~----~------~--~---


--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

[PerlChina] Perl Advent day 19 SendLink

=for advent_year 2009

=for advent_day 19

=for advent_title Send Link by Copy

=for advent_author Joe Jiang

A<Gtk2> 模块提供了与剪贴板打交道的能力,因此我们可以尝试用它来改进 Firefox 的一个功能,那就是很有用的 Send Link(中文叫做发送页面)。

如果使用过其他浏览器比如 Opera 或者 IE,你就可能会用过这个拷贝当前页面地址的功能。这个功能对于那些关闭了地址栏的页面特别重要,在 Firefox 中你需要在当前页面上点击右键并选择 View Page Info,然后拷贝弹出的 Page Info 对话框中 Address 栏目的内容,并关闭对话框。这非常麻烦,让我们找一个偷懒的途径。

如果你恰好和我一样讨厌 Firefox 调用 email 客户端来发送链接,那么替换掉它会是一个很好的尝试,在此我们的假想敌是大多数 Linux 默认的 MTA evolution。

=begin pre

sudo pp -e 'use URI::Escape; use Gtk2; Gtk2->init; $c=Gtk2::Clipboard->get(Gtk2::Gdk->SELECTION_CLIPBOARD); $c->set_text(uri_unescape(join(qq(\n), map {s/mailto:\?body=//;s/&subject.*//;$_} @ARGV))); $c->store;' -o $(which evolution)

=end pre

在我们调用下面的单行脚本之后,你会发现任务已经完成。首先是把默认的 evolution 替换掉了(但是应该承认办法相当粗鲁),然后测试一下在当前页面点击右键,并选择 Send Link,然后可以在任何位置 Ctrl-V 调出 URL 地址。

这个单行脚本从标准输入读取 mailto:... 地址串,用 URI::Escape 模块解码,并且使用了 Gtk2::Clipboard 完成 Copy 动作。整个脚本用 PAR 来包装,原理就是这么简单,现在你应该可以用自己喜爱的语言实现同样的功能。

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

Re: [PerlChina] perl advent day 16

nc -l -p 

可以吗?

2009/12/15 joe jiang <lamp.purl@gmail.com>
Hello Beckheng, 这个需要其他的人加入,因为我的项目经验多半是120行以内的 perl 脚本。另外其实我感觉出于欢庆的气氛,并非每个项目都适合在圣诞之前分享,因为介绍项目背景的篇幅可能会很长。

不过那些 quick & dirty 的项目还是有可能的 :)

2009/12/15 Beckheng Lam <bi.ken.lam@gmail.com>
Hi,

    仅仅是分享模块使用吗?是否可以分享一下项目经验之类?

joe jiang wrote:
Welcome, cause we are supporting as team maker :)

2009/12/15 Fayland Lam <fayland@gmail.com>
hey joe. Thanks a lot. I was worrying about today's advent. :)

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。


--  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 访问此网上论坛。

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

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

呵呵, 真是赞!



2009/12/5 go <guomengbiao@gmail.com>
不错哈

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 访问该论坛
-~----------~----~----~----~------~----~------~--~---


--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

[PerlChina] CN Perl Advent Day 18: Parallel::Prefork 和 SIG

Sorry for later.

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

=for advent_year 2009

=for advent_day 18

=for advent_title Parallel::Prefork 和 SIG

=for advent_author Fayland Lam

如果一个 daemon 处理队列太慢(或其他情况),M<Parallel::ForkManager> 和
M<Parallel::Prefork> 都是很不错的选择。

下面的代码来自我们实际运行中的一个 M<TheSchwartz> worker 的 daemon, 实际上很大一部分都是拷贝自
A<http://d.hatena.ne.jp/tokuhirom/20081110/1226291955>

=begin codeNNN

use strict;
use warnings;

my $has_proc_pid_file
= eval 'use Proc::PID::File; 1;'; ## no critic (ProhibitStringyEval)
my $has_home_dir
= eval 'use File::HomeDir; 1;'; ## no critic (ProhibitStringyEval)
if ( $has_proc_pid_file and $has_home_dir ) {
# If already running, then exit
if ( Proc::PID::File->running( { dir => File::HomeDir->my_home } ) ) {
exit(0);
}
}

use UNIVERSAL::require;
use Parallel::Prefork;

my @workers = qw/
TheSchwartz::JobA
TheSchwartz::JobB
TheSchwartz::JobC
/;
foreach my $worker (@workers) {
print "setup $worker\n";
$worker->use or die $@;
}

sub MaxRequestsPerChild () { 2 }

print "start prefork\n";
my $pm = Parallel::Prefork->new({
max_workers => 3,
fork_delay => 1,
trap_signals => {
TERM => 'TERM',
HUP => 'TERM',
},
});

while ($pm->signal_received ne 'TERM') {
$pm->start and next;
print "spawn $$\n";

my $client = TheSchwartz::Moosified->new( databases => [$dbh] );
$client->can_do($_) foreach @wokers;

my $reqs_before_exit = MaxRequestsPerChild;
$SIG{TERM} = sub { $reqs_before_exit = 0 };
while ($reqs_before_exit > 0) {
if ($client->work_once) {
print "work $$\n";
--$reqs_before_exit;
} else {
sleep 10;
}
}

print "FINISHED $$\n";
$pm->finish;
}

$pm->wait_all_children;

die "HMM????";

=end codeNNN

代码是自解释的。:)

但是有时候我们需要停止它的时候(它由 crontab 启动),根据代码我们需要发送 TERM 给脚本,然后脚本才会优雅地退出。这时候
M<Proc::ProcessTable> 就派上大用场了。

=begin codeNNN

use Proc::ProcessTable;

my $p = new Proc::ProcessTable( 'cache_ttys' => 1 );
my $all = $p->table;
foreach my $one (@$all) {
if ($one->cmndline =~ /TheSchwartz/) {
next if ( $one->cmndline =~ /TheSchwartz_restart/ ); # itself
my $pid = $one->pid;
print "kill -15 $pid\n";
`kill -15 $pid`; # send TERM
}
}

=end codeNNN

Proc::ProcessTable 类似于 ps, 我们找到 pid 后,发送 TERM 过去就大功告成了。

谢谢。

--
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月17日星期四

Re: [PerlChina] 正则表达式中 y/*//d 代表什么?

从perl编程中节选:

tr的cds 的确用的少,但是有时候有妙用:


表 5-3。tr/// 修饰词
修饰词 含义
/c 与SEARCHLIST 为补
/d 删除找到的但是没有替换的字符
/s 消除重复的字符。


如果声明了 /c 修饰词,那么 SEARCHLIST 里的字符会被求补;也就是说,实际的搜索
列表包含所有不在 SEARCHLIST 里的字符。如果是 Unicode,这样可能会代表许多字符,
不过因为它们是逻辑存储的,而不是物理存储,所以你不用害怕会用光内存。

/d 修饰词把 tr/// 转换成所谓的“过滤吸收”操作符:任何由 SEARCHLIST 声明的但是
没有在 RELPACEMENTLIST 里给出替换的字符将被删除。(这样比一些 tr(1) 程序的性
质显得更加灵活,那些程序删除它们在 SERACHLIST 里找到的任何东西。)

如果声明了 /s 修饰词,被转换成相同字符的顺序字符将被压缩成单个字符。

如果使用了 /d 修饰词,那么 RELPACEMENTLIST 总是严格地解释成声明的样子。否则,
如果 REPLACEMENTLIST 比 SEARCHLIST 短,则复制 REPLACEMENTLIST 的最后
一个字符,直到足够长为止。如果 RELPACEMENTLIST 为空,则复制 SEARCHLIST,
这一点虽然奇怪,但很有用,尤其是当你只是想计算字符数,而不是改变它们的时候。也有
利于用 /s 压缩字符。

tr/aeiou/!/; # 把所有元音字母转换成!

tr{/\\\r\n\b\f. }{_}; # 把怪字符转成下划线

tr/A-Z/a-z/ for @ARGV; # 把字符规则化为小写ASCII

$count = ($para =~ tr/\n//); # 计算$para 里的换行符

$count = tr/0-9//; # 计算$_里的位

$word =~ tr/a-zA-Z//s; # bookkeeper -> bokeper

tr/@$%*//d; # 删除这里几个字符

tr#A-Za-z0-9+/##cd; # 删除非base64 字符

# 顺便修改
($HOST = $host) =~ tr/a-z/A-Z/;
$pathname =~ tr/a-zA-Z/_/cs; # 把非ASCII 字母换成下划线
tr [\200-\377]
{\000-\177]; # 剥除第八位,字节操作

如果在 SEARCHLIST 里同一个字符出现的次数多于一次,那么只有第一个有效。因此:
tr/AAA/XYZ/
将只会把($_ 里的)任何单个字符 A 转换成 X。

尽管变量不会代换进入 tr///,但是你还是可以用 eval EXPR 实现同样效果:
$count = eval "tr/$oldlist/$newlist/";
die if $@; # 传播非法eval 内容的例外

最后一条信息:如果你想把你的文本转换为大写或者小写,不要用 tr///。用双引号里的 \U
或者 \L 序列(或者等效的 uc 和 lc 函数),因为它们会关心区域设置或 Unicode 信息,
而 tr/a-z/A-Z/ 不关心这些。另外在 Unicode 字串里,\u 序列和它的对应 ucfirst 函
数能够识别标题格式,对某些语言来说,比简单地转换成大写更突出。




2009/12/18 WENFENG LIU <wenfeng@live.nl>
thanks


Date: Fri, 18 Dec 2009 12:30:40 +0800

Subject: Re: [PerlChina] 正则表达式中 y/*//d 代表什么?
From: galaxy2004@gmail.com

To: perlchina@googlegroups.com

tr///cds 

c: 补齐不匹配的
d: 删除不匹配的
s: squeeze : 压缩重复的

=~ tr///cds   因为也用了 =~ , 所以有时候归为正则表达式 的运算介绍,

但实际上不是 regex



2009/12/18 Qiang (James) <shijialee@gmail.com>
WENFENG LIU wrote:
> 也就是说y和tr功能一样,只是相对于tr,y能够解释元字符。
> 那么d代表什么呢?

Perl 自带的文档里有详细的说明。

在命令行里运行 perldoc -f tr 和 perldoc perlop, 或者网页版的
http://perldoc.perl.org/functions/tr.html


Qiang

>
> ------------------------------------------------------------------------
> Date: Fri, 18 Dec 2009 11:44:48 +0800
> Subject: Re: [PerlChina] 正则表达式中 y/*//d 代表什么?
> From: joewu@cyagen.com
> To: perlchina@googlegroups.com
>
>
>
> 2009/12/18 Tiger Peng <tigerpeng2001@gmail.com
> <mailto:tigerpeng2001@gmail.com>>
>
>     y/// = tr///
>
>     2009/12/17 WENFENG LIU <wenfeng@live.nl <mailto:wenfeng@live.nl>>:
>      > 求助
>      > 里面y代表什么, d代表什么?
>      >
>     tr函数能以一一对应的方式将搜索字符串中的字符替换成字符串中的相应字
>     符。tr函数不能解释正则表达式中的元字符 这里可以用y来替换

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。





--
           Yours Sincerely
                   Zeng Hong

--
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。


Keep your friends updated— even when you’re not signed in.

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。

要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。



--
           Yours Sincerely
                   Zeng Hong

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

RE: [PerlChina] 正则表达式中 y/*//d 代表什么?

thanks


Date: Fri, 18 Dec 2009 12:30:40 +0800
Subject: Re: [PerlChina] 正则表达式中 y/*//d 代表什么?
From: galaxy2004@gmail.com
To: perlchina@googlegroups.com

tr///cds 

c: 补齐不匹配的
d: 删除不匹配的
s: squeeze : 压缩重复的

=~ tr///cds   因为也用了 =~ , 所以有时候归为正则表达式 的运算介绍,

但实际上不是 regex



2009/12/18 Qiang (James) <shijialee@gmail.com>
WENFENG LIU wrote:
> 也就是说y和tr功能一样,只是相对于tr,y能够解释元字符。
> 那么d代表什么呢?

Perl 自带的文档里有详细的说明。

在命令行里运行 perldoc -f tr 和 perldoc perlop, 或者网页版的
http://perldoc.perl.org/functions/tr.html


Qiang

>
> ------------------------------------------------------------------------
> Date: Fri, 18 Dec 2009 11:44:48 +0800
> Subject: Re: [PerlChina] 正则表达式中 y/*//d 代表什么?
> From: joewu@cyagen.com
> To: perlchina@googlegroups.com
>
>
>
> 2009/12/18 Tiger Peng <tigerpeng2001@gmail.com
> <mailto:tigerpeng2001@gmail.com>>
>
>     y/// = tr///
>
>     2009/12/17 WENFENG LIU <wenfeng@live.nl <mailto:wenfeng@live.nl>>:
>      > 求助
>      > 里面y代表什么, d代表什么?
>      >
>     tr函数能以一一对应的方式将搜索字符串中的字符替换成字符串中的相应字
>     符。tr函数不能解释正则表达式中的元字符 这里可以用y来替换

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。





--
           Yours Sincerely
                   Zeng Hong

--
您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。


Keep your friends updated― even when you're not signed in.

[PerlChina] Re: 一个限制酶切作图算法的Perl语言实现问题

下面的代码通过了上面的样例测试,其他的没测。
主要是没有针对可重复元素的集合的操作,比较烦。
========================
my(@res, @init, $width, $cur);
my $count = 0;
@res = qw(10 2 2 3 3 4 5 6 7 8);
@res = sort {$a <=> $b} @res;
$width = pop @res;

$cur = $width;
@init = qw(0);
push @init, $cur;
&place;

sub place
{
my $cur;
my @minus = ();

if(@res == 0)
{
$count++;
print "result_$count: @init\n";
return 1;
}
@res = sort {$a <=> $b} @res;
$cur = @res[@res - 1];

@minus = &get_minus($cur);
if(&among(\@minus))
{
push @init, $cur;
&del_set(\@minus);
&place;
pop @init;
@res = (@res, @minus);
}
@minus = &get_minus($width - $cur);
if(&among(\@minus))
{
push @init, $width - $cur;
&del_set(\@minus);
&place;
pop @init;
@res = (@res, @minus);
}
return 0;
}

sub among
{
my $y = shift;
foreach $tmp (@$y)
{
$flag = 0;
foreach(@res)
{
if($_ == $tmp)
{
$flag = 1;
last;
}
}
return 0 if($flag == 0);
}
return 1;
}

sub get_minus
{
my $y = shift;
my @minus;
@minus = ();
foreach (@init)
{
push @minus, abs($y - $_);
}
return @minus;
}

sub del_set
{
my $minus = shift;

$res = join("-", @res);
$res .= "-";
foreach(@$minus)
{
$res =~ s/$_-//;
}
@res = split(/-/, $res);
}

On 12月11日, 下午3时36分, D-Horse <ifre...@gmail.com> wrote:
> 我这两个星期才开始学习Perl语言,前几天在看《生物信息学算法导论》的时候看到一个限制酶切作图的算法,就想用Perl语言来实现以下。
> 该算法的伪代码是:
> 一些符号的定义:
> <----:赋值
> X,L是数组
> ~(y,X)表示y与数组X中元素的差值集合,比如~(2,{1,3,4,5}) = {1,1,2,3}
> =============================================================
> Partialdigest(L)
> 1 width <----L中的最大元素
> 2 DELETE(width,L)
> 3 X<----{0,width}
> 4 PLACE(L,X)
>
> PLACE(L,X)
> 1 if L是空集
> 2 output X
> 3 return
> 4 y<----L中最大元素
> 5 if ~(y,X)属于L
> 6 将y添加到X,且从L中删除长度~(y,X)
> 7 PLACE(L,X)
> 8 在X中删除y,且将长度~(y,X)添加到L中
> 9 if ~(width-y,X)属于L
> 10 将width-y添加到X,且从L中删除长度~(width-y,X)
> 11 PLACE(L,X)
> 12 在X中删除width-y,且将长度~(width-y,X)添加到L中
> 13 return
>
> ===============================================================
> 我的Perl语言代码:
> sub by_number
> {
> if($a<$b) {-1} elsif($a>$b) {1} else {0}}
>
> sub place{
> if (@array == 0){
> print "@x";
> return;
> }
> $y = $array_L[-1];
> if (&isSubArray_1 == 1){
> push @x,$y;
> @x = sort by_number @x;
> $_ = join "-",@array_L;
> $_ = "$_-";
> while (@rec_array != 0){
> my $item = pop @rec_array;
> s/$item-//;
> }
> return &place;
> }
> if (&isSubArray_2 == 1){
> push @x,($width-$y);
> @x = sort by_number @x;
> $_ = join "-",@array_L;
> $_ = "$_-";
> while (@rec_array != 0){
> my $item = pop @rec_array;
> s/$item-//;
> }
> return &place;
> }
> return;}
>
> sub isSubArray_1{
> my @temp_array = @x;
> my @result_array;
> my $signal = 0;
> while (@temp_array != 0){
> my $si = pop @temp_array;
> my $result = abs($si-$y);
> push @result_array, $result;
> }
> @rec_array = sort by_number @result_array;
> $_ = join "-",@array_LL;
> $_ = "$_-";
> while (@result_array != 0){
> my $item = pop @result_array;
> if (s/$item-//){
> }
> else{
> $signal += 1;
> }
> }
> if ($signal != 0){
> return 0;
> }
> else{
> return 1;
> }
>
> }
>
> sub isSubArray_2{
> my @temp_array = @x;
> my @result_array;
> my $signal = 0;
> while (@temp_array != 0){
> my $si = pop @temp_array;
> my $result = abs($si-($width-$y));
> push @result_array, $result;
> }
> @rec_array = sort by_number @result_array;
> $_ = join "-",@array_LL;
> $_ = "$_-";
> while (@result_array != 0){
> my $item = pop @result_array;
> if (s/$item-//){
> }
> else{
> $signal += 1;
> }
> }
> if ($signal != 0){
> return 0;
> }
> else{
> return 1;
> }}
>
> my @rec_array;
> my $y = 0;
> my @array_L = qw(2 2 3 3 4 5 6 7 8 10);
> my @array_LL = qw(2 2 3 3 4 5 6 7 8 10);
> @array_L = sort by_number @array_L;
> my $width = pop @array_L;
> my @x = qw(0);
> push @x,$width;
> &place;
>
> 调试了一天多了,还是不能运行,希望大家有空的话能帮我看看啊,谢谢啦!

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

Re: [PerlChina] 正则表达式中 y/*//d 代表什么?

tr///cds 

c: 补齐不匹配的
d: 删除不匹配的
s: squeeze : 压缩重复的

=~ tr///cds   因为也用了 =~ , 所以有时候归为正则表达式 的运算介绍,

但实际上不是 regex



2009/12/18 Qiang (James) <shijialee@gmail.com>
WENFENG LIU wrote:
> 也就是说y和tr功能一样,只是相对于tr,y能够解释元字符。
> 那么d代表什么呢?

Perl 自带的文档里有详细的说明。

在命令行里运行 perldoc -f tr 和 perldoc perlop, 或者网页版的
http://perldoc.perl.org/functions/tr.html


Qiang

>
> ------------------------------------------------------------------------
> Date: Fri, 18 Dec 2009 11:44:48 +0800
> Subject: Re: [PerlChina] 正则表达式中 y/*//d 代表什么?
> From: joewu@cyagen.com
> To: perlchina@googlegroups.com
>
>
>
> 2009/12/18 Tiger Peng <tigerpeng2001@gmail.com
> <mailto:tigerpeng2001@gmail.com>>
>
>     y/// = tr///
>
>     2009/12/17 WENFENG LIU <wenfeng@live.nl <mailto:wenfeng@live.nl>>:
>      > 求助
>      > 里面y代表什么, d代表什么?
>      >
>     tr函数能以一一对应的方式将搜索字符串中的字符替换成字符串中的相应字
>     符。tr函数不能解释正则表达式中的元字符 这里可以用y来替换

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。





--
           Yours Sincerely
                   Zeng Hong

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

Re: [PerlChina] 正则表达式中 y/*//d 代表什么?

WENFENG LIU wrote:
> 也就是说y和tr功能一样,只是相对于tr,y能够解释元字符。
> 那么d代表什么呢?

Perl 自带的文档里有详细的说明。

在命令行里运行 perldoc -f tr 和 perldoc perlop, 或者网页版的
http://perldoc.perl.org/functions/tr.html


Qiang

>
> ------------------------------------------------------------------------
> Date: Fri, 18 Dec 2009 11:44:48 +0800
> Subject: Re: [PerlChina] 正则表达式中 y/*//d 代表什么?
> From: joewu@cyagen.com
> To: perlchina@googlegroups.com
>
>
>
> 2009/12/18 Tiger Peng <tigerpeng2001@gmail.com
> <mailto:tigerpeng2001@gmail.com>>
>
> y/// = tr///
>
> 2009/12/17 WENFENG LIU <wenfeng@live.nl <mailto:wenfeng@live.nl>>:
> > 求助
> > 里面y代表什么, d代表什么?
> >
> tr函数能以一一对应的方式将搜索字符串中的字符替换成字符串中的相应字
> 符。tr函数不能解释正则表达式中的元字符 这里可以用y来替换

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

Re: [PerlChina] 正则表达式中 y/*//d 代表什么?

$ perldoc -f tr
tr/// The transliteration operator. Same as "y///". See perlop.

2009/12/17 WENFENG LIU <wenfeng@live.nl>:
> 也就是说y和tr功能一样,只是相对于tr,y能够解释元字符。
> 那么d代表什么呢?
>
> ________________________________
> Date: Fri, 18 Dec 2009 11:44:48 +0800
> Subject: Re: [PerlChina] 正则表达式中 y/*//d 代表什么?
> From: joewu@cyagen.com
> To: perlchina@googlegroups.com
>
>
>
> 2009/12/18 Tiger Peng <tigerpeng2001@gmail.com>
>
> y/// = tr///
>
> 2009/12/17 WENFENG LIU <wenfeng@live.nl>:
>> 求助
>> 里面y代表什么, d代表什么?
>>
>> ________________________________
>> Keep your friends updated― even when you're not signed in.
>>
>> --
>>
>> 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
>> 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
>> 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
>> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
>>
>
> --
>
> 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
> 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
>
> tr函数能以一一对应的方式将搜索字符串中的字符替换成字符串中的相应字符。tr函数不能解释正则表达式中的元字符 这里可以用y来替换
>
> --
> 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
> 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
>
> ________________________________
> Windows Live: Friends get your Flickr, Yelp, and Digg updates when they
> e-mail you.
>
> --
>
> 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
> 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
>

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

RE: [PerlChina] 正则表达式中 y/*//d 代表什么?

也就是说y和tr功能一样,只是相对于tr,y能够解释元字符。
那么d代表什么呢?


Date: Fri, 18 Dec 2009 11:44:48 +0800
Subject: Re: [PerlChina] 正则表达式中 y/*//d 代表什么?
From: joewu@cyagen.com
To: perlchina@googlegroups.com



2009/12/18 Tiger Peng <tigerpeng2001@gmail.com>
y/// = tr///

2009/12/17 WENFENG LIU <wenfeng@live.nl>:
> 求助
> 里面y代表什么, d代表什么?
>
> ________________________________
> Keep your friends updated― even when you're not signed in.
>
> --
>
> 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
> 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
>

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

tr函数能以一一对应的方式将搜索字符串中的字符替换成字符串中的相应字符。tr函数不能解释正则表达式中的元字符 这里可以用y来替换


--
您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。


Windows Live: Friends get your Flickr, Yelp, and Digg updates when they e-mail you.

Re: [PerlChina] 正则表达式中 y/*//d 代表什么?



2009/12/18 Tiger Peng <tigerpeng2001@gmail.com>
y/// = tr///

2009/12/17 WENFENG LIU <wenfeng@live.nl>:
> 求助
> 里面y代表什么, d代表什么?
>
> ________________________________
> Keep your friends updated― even when you're not signed in.
>
> --
>
> 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
> 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
>

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

tr函数能以一一对应的方式将搜索字符串中的字符替换成字符串中的相应字符。tr函数不能解释正则表达式中的元字符 这里可以用y来替换

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

Re: [PerlChina] 正则表达式中 y/*//d 代表什么?

y/// = tr///

2009/12/17 WENFENG LIU <wenfeng@live.nl>:
> 求助
> 里面y代表什么, d代表什么?
>
> ________________________________
> Keep your friends updated― even when you're not signed in.
>
> --
>
> 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
> 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
>

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

Re: [PerlChina] 正则表达式中 y/*//d 代表什么?



2009/12/18 WENFENG LIU <wenfeng@live.nl>
求助
里面y代表什么, d代表什么?


Keep your friends updated― even when you're not signed in.

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
就是匹配字母y吧 /d是代表数字

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

[PerlChina] mason如何实现域名自动跳转

比喻我输入网址http://localhost点击后他后自动跳转到http://localhost/test2/运行。觉的应该是在配置文件里设置的。应该怎么实现呢?

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

[PerlChina] 正则表达式中 y/*//d 代表什么?

求助
里面y代表什么, d代表什么?


Keep your friends updated― even when you're not signed in.

Re:Re:Re: [PerlChina] 关于浏览器下载文件保存默认文件名问题

恩 成功了 谢谢了


在2009-12-17,kevin_li <xiaohuidexinge@163.com> 写道:
非常感谢 我试下 结果稍后回复 :)


在2009-12-17,"Achilles Xu" <formalin14@gmail.com> 写道:
header("Content-Disposition: attachment; filename=\"" . $flash_name . ".swf\"");

php代码,翻译成perl就行了。

2009/12/17 kevin_li <xiaohuidexinge@163.com>
 
第二种就是指到服务器本地的 链接。
我想用第一种方式 来模仿 第2种方式的下载 用一个PL 读取本地文件 写到输出中
实现了 但是默认保存的文件名 叫download_attachment.pl 不是test.txt 
应该如何指定 CLIENT端的 保存文件名?


--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。



--
---------------------------
Achilles Xu
http://www.lostcode.org

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。


--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。


--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

Re:Re: [PerlChina] 关于浏览器下载文件保存默认文件名问题

非常感谢 我试下 结果稍后回复 :)


在2009-12-17,"Achilles Xu" <formalin14@gmail.com> 写道:
header("Content-Disposition: attachment; filename=\"" . $flash_name . ".swf\"");

php代码,翻译成perl就行了。

2009/12/17 kevin_li <xiaohuidexinge@163.com>
 
第二种就是指到服务器本地的 链接。
我想用第一种方式 来模仿 第2种方式的下载 用一个PL 读取本地文件 写到输出中
实现了 但是默认保存的文件名 叫download_attachment.pl 不是test.txt 
应该如何指定 CLIENT端的 保存文件名?


--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。



--
---------------------------
Achilles Xu
http://www.lostcode.org

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。


--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

Re: [PerlChina] 关于浏览器下载文件保存默认文件名问题

header("Content-Disposition: attachment; filename=\"" . $flash_name . ".swf\"");

php代码,翻译成perl就行了。

2009/12/17 kevin_li <xiaohuidexinge@163.com>
 
第二种就是指到服务器本地的 链接。
我想用第一种方式 来模仿 第2种方式的下载 用一个PL 读取本地文件 写到输出中
实现了 但是默认保存的文件名 叫download_attachment.pl 不是test.txt 
应该如何指定 CLIENT端的 保存文件名?


--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。



--
---------------------------
Achilles Xu
http://www.lostcode.org

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

2009年12月16日星期三

[PerlChina] 关于浏览器下载文件保存默认文件名问题

 
第二种就是指到服务器本地的 链接。
我想用第一种方式 来模仿 第2种方式的下载 用一个PL 读取本地文件 写到输出中
实现了 但是默认保存的文件名 叫download_attachment.pl 不是test.txt 
应该如何指定 CLIENT端的 保存文件名?


--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

[PerlChina] CN Perl Advent Day 17: dzil

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

=for advent_year 2009

=for advent_day 17

=for advent_title dzil

=for advent_author Fayland Lam

A<Dist::Zilla> 对模块作者来说是件利器。

它与 M<ExtUtils::MakeMaker>, M<Module::Build>, M<Module::Install>
不同,它不是安装模块。它们的共同点是都可以打包一个 CPAN .tar.gz

它与 M<Module::Starter> 不同。它不仅仅可以构建模块的框架。

它与 M<ShipIt> 不同。它不仅仅可以发布代码。

它是所有的综合体。它可以构建框架,打包代码并且发布代码,它最大的优点在于节省您的时间。让你专心编写代码而无需考虑多余的事情。

以下是一个简单的流程例子。

通常我们会在我们的 home 目录下创建一个 .dzil/config.ini 来保存模块配置的基本资料。

=begin pre

$ mkdir ~/.dzil
$ vi ~/.dzil/config.ini

# Windows 一般是
C:\Documents and Settings\Administrator>perl -e "mkdir '.dzil'"
C:\Documents and Settings\Administrator>cd .dzil
C:\Documents and Settings\Administrator\.dzil>notepad config.ini

=end pre

config.ini 里的内容(可以添加更多的,下文会提到)

=begin pre

[=Dist::Zilla::App::Command::new]
author = Fayland Lam <fayland@gmail.com>
license = Perl_5
copyright_holder = Fayland Lam

=end pre

最好基本个人资料配置之后,我们就可以创建一个新的 dist.ini 模块了。

=begin pre

$ dzil new TestModule-A

=end pre

打开 TestModule-A 目录,会有一个 dist.ini 文件

=begin pre

name = TestModule-A
version = 1.000
author = Fayland Lam <fayland@gmail.com>
license = Perl_5
copyright_holder = Fayland Lam

[@Classic]

=end pre

与 Module::Starter 不同,它并不创建任何目录或其他文件。大部分的文件都将通过 dist.ini 来配置生成。

比如 Makefile.PL, 默认的 [@Classic] 会在 dzil build 的时候自动生成。

比如 README, 我们可以用默认的 [@Classic] 来生成一个简单的,或者也可以通过
M<Dist::Zilla::Plugin::ReadmeFromPod> 来从 POD 生成。

比如 POD 里的 NAME, AUTHOR 和 COPYRIGHT AND LICENSE,都将通过
M<Dist::Zilla::Plugin::PodWeaver> 来生成。

比如一些 Repository 的资料,可以通过 M<Dist::Zilla::Plugin::Repository> 来生成。

比如 t/00-compile.t 可以通过 M<Dist::Zilla::Plugin::CompileTests> 生成。

想想看,如果上面的文件都将默认生成,你还需要做什么呢?您只需要写真正有意义的代码了,而不需要关心这些枝节。

=begin pre

$ mkdir lib/TestModule/A.pm
$ vi lib/TestModule/A.pm
package TestModule::A;
# ABSTRACT: [[Abstract of module]]

use strict;
use warnings;
use Module::A;
use Module::B;

[[YOUR CODE]]

1;
__END__
=head1 SYNOPSIS

[[YOUR SYNOPSIS]]
=head1 DESCRIPTION

[[YOUR DESCRIPTION]]

=cut

=end pre

ABSTRACT 将是 NAME head1 的描述。

最后您可以还忘记了 Changes

=begin pre

$ vi Changes
Revision history for TestModule::A

0.01 2009.12.15
First version, released on an unsuspecting world.

=end pre

是不是写 Changes 有点繁琐?您可以写一个 plugin 来自动生成 Changes. 是不是经常会在发布前忘记更新 Changes,
可以使用 M<Dist::Zilla::Plugin::CheckChangeLog> 来提醒你。

最后的 dist.ini 可能是这样的

=begin pre

name = TestModule-A
version = 1.000
author = Fayland Lam <fayland@gmail.com>
license = Perl_5
copyright_holder = Fayland Lam

[@Classic]

[Prereq]
Module::A = 0
Module::B = 0

[PodWeaver]
[Repository]
[ReadmeFromPod]
[CheckChangeLog]

=end pre

在更改模块完毕后,您可以

=begin pre

$ dzil test
$ dzil build
$ dzil release

=end pre

来测试,打包和发布代码。

如果上述对您来说还是太繁琐的话,您可以写 Dist::Zilla 的插件。Dist::Zilla 里有个插件的技巧

=begin code

$_->before_build for $self->plugins_with(-BeforeBuild)->flatten;

$_->gather_files for $self->plugins_with(-FileGatherer)->flatten;
$_->prune_files for $self->plugins_with(-FilePruner)->flatten;
$_->munge_files for $self->plugins_with(-FileMunger)->flatten;
$_->setup_installer for $self->plugins_with(-InstallTool)->flatten;

=end code

可以让你分步骤来编写对应的插件。目前 CPAN 上有很多插件如 M<Dist::Zilla::Plugin::Git>,
M<Dist::Zilla::Plugin::PerlTidy>, M<Dist::Zilla::Plugin::Prepender>,
M<Dist::Zilla::Plugin::Release> 等,都是非常有用和尝试的。

谢谢。

--
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 访问此网上论坛。

Re: [PerlChina] 回复邮件组消息时遇到两个问题

cc给自己就可以收到自己的回复了,而且在同一个thread里
本地能正确显示,但是去网站上查看则还是显示乱码
将发件箱改为utf-8,重复测试:)

Dejian Zhao wrote:
谢谢大家回复。我再测试一下。


Yuan Jiang wrote:
可以给email list单独设置一个文件夹,这个文件夹是可以单独设置编码的。然后用一个过滤器让email  list的邮件全都自动移动到这个文件夹,这样基本就可以了。        2009/12/16 Fayland Lam <fayland@gmail.com>:    
我也用 thunderbird, 一直都很好。你设置的时候可能要设置 outgoing 或者接收  的编码为 utf8    Thanks.    On 2009-12-16 9:32, Tianping wrote:      
我现在是在讨论组网页上直接发帖子,因为使用thunderbird邮件客户端回复邮件组消息时显示乱码。    回复邮件组消息时遇到两个问题:  (1)收不到自己发送到邮件组的消息  (2)发到到邮件组的消息在google PerlChina Mongers 讨论组网页上查看时是乱码    问题可能出现在什么地方?大家帮着排查一下,谢谢!    --    您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。  要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。  要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。  若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。              
--  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 访问此网上论坛。            
        


Re: [PerlChina] 回复邮件组消息时遇到两个问题

谢谢大家回复。我再测试一下。


Yuan Jiang wrote:
可以给email list单独设置一个文件夹,这个文件夹是可以单独设置编码的。然后用一个过滤器让email  list的邮件全都自动移动到这个文件夹,这样基本就可以了。        2009/12/16 Fayland Lam <fayland@gmail.com>:    
我也用 thunderbird, 一直都很好。你设置的时候可能要设置 outgoing 或者接收  的编码为 utf8    Thanks.    On 2009-12-16 9:32, Tianping wrote:      
我现在是在讨论组网页上直接发帖子,因为使用thunderbird邮件客户端回复邮件组消息时显示乱码。    回复邮件组消息时遇到两个问题:  (1)收不到自己发送到邮件组的消息  (2)发到到邮件组的消息在google PerlChina Mongers 讨论组网页上查看时是乱码    问题可能出现在什么地方?大家帮着排查一下,谢谢!    --    您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。  要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。  要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。  若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。              
  --  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月15日星期二

Re: [PerlChina] DBI如何连接到MYSQL数据库(出现链接错误)



2009/12/16 msmouse <msmouse@gmail.com>
在网页执行打印的是什么错误日志?


----------------------------------
msmouse@ir.hit.edu.cn
msmouse@gmail.com


2009/12/15 joewu <joewu@cyagen.com>


2009/12/15 joewu <joewu@cyagen.com>


2009/12/15 msmouse <msmouse@gmail.com>
mysql_read_default_file=/my.cnf

改成

mysql_read_default_file=./my.cnf  (多个点)

----------------------------------
msmouse@ir.hit.edu.cn
msmouse@gmail.com


2009/12/15 joewu <joewu@cyagen.com>


2009/12/15 msmouse <msmouse@gmail.com>

。。没明白我的意思?你是不是把my.ini写成my.cnf了? 还有它的位置是根目录"/"下么?


----------------------------------
msmouse@ir.hit.edu.cn
msmouse@gmail.com


2009/12/15 joewu <joewu@cyagen.com>


2009/12/15 joewu <joewu@cyagen.com>


2009/12/15 smallfish <smallfish.xy@gmail.com>

很明显帐户密码啥的不对 :)
--
blog: http://chenxiaoyu.org/blog/


2009/12/15 joewu <joewu@cyagen.com>
use Cwd;
my $orig_dir=cwd();
chdir("D:\Program Files\Apache Software Foundation\Apache2.2\logs") or die "Cannot chdir: $!\n";
my $dsn="DBI:mysql:vb;mysql_read_default_file=/my.cnf";
my %conn_attrs=(RaiseError=>1,PrintError=>0,AutoCommit=>1);
my $dbh=DBI->connect($dsn,undef,undef,\%conn_attrs);
chdir($orig_dir) or die "Cannot chdir:$!\n";
my $sth=$dbh->prepare(insert into tbl_username(username,password,email,organization,other_org) values(?,?,?,?,?));

其中my.ini文件内容是:
[client]
host=localhost
user=root
password=7232830

发现连接到mysql数据库时候出现以下错误:
DBI connect('vb;mysql_read_default_file=/my.ini','',...) failed: Access denied for user 'ODBC'@'localhost' (using password: NO) at D:\Program Files\Apache Software Foundation\Apache2.2\mason\obj\3045446373\test2\lib\validateUser.mas.obj line 36

这种写法我是参考书上写的 ,但总是出现错误!

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
账户和密码是没错的:

my $dsn="DBI:mysql:vb:localhost";
my $user_name="root";
my $password="7232830";
my %conn_attrs=(RaiseError=>1,PrintErros=>0,AutoCommit=>1);
my $dbh=DBI->connect($dsn,$user_name,$password,\%conn_attrs);
这是另外的一种写法 ,这种写法是可以连接到数据库的。但数据库信息就泄漏,使用不安全。所以我换成上面的写法 但是 是错误的。
 没有,my.ini内容是有的。目录下也有这个文件。我的系统是WINDOWS的

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
呵呵 ,my.cnf和my.ini都试过了。是在 D:\Program Files\Apache Software Foundation\Apache2.2\logs 下的 通过chdir改变了它的根目录。

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
不行啊。会不会是my.ini里面的内容错了呢?
[client]
host=localhost
user=root
password=7232830
晕 为什么我在pl文件上执行可以。但放在网页上就不行了

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
发现连接到mysql数据库时候出现以下错误:
DBI connect('vb;mysql_read_default_file=/my.ini','',...) failed: Access denied for user 'ODBC'@'localhost' (using password: NO) at D:\Program Files\Apache Software Foundation\Apache2.2\mason\obj\3045446373\test2\lib\validateUser.mas.obj line 36
还是原来这个错误!我用open(FILE,"my.ini"),是可以读my.ini的,就是说在这个目录下的确有my.ini文件。

--

您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

Re: [PerlChina] DBI如何连接到MYSQL数据库(出现链接错误)

在网页执行打印的是什么错误日志?

----------------------------------
msmouse@ir.hit.edu.cn
msmouse@gmail.com


2009/12/15 joewu <joewu@cyagen.com>


2009/12/15 joewu <joewu@cyagen.com>


2009/12/15 msmouse <msmouse@gmail.com>
mysql_read_default_file=/my.cnf

改成

mysql_read_default_file=./my.cnf  (多个点)

----------------------------------
msmouse@ir.hit.edu.cn
msmouse@gmail.com


2009/12/15 joewu <joewu@cyagen.com>


2009/12/15 msmouse <msmouse@gmail.com>

。。没明白我的意思?你是不是把my.ini写成my.cnf了? 还有它的位置是根目录"/"下么?


----------------------------------
msmouse@ir.hit.edu.cn
msmouse@gmail.com


2009/12/15 joewu <joewu@cyagen.com>


2009/12/15 joewu <joewu@cyagen.com>


2009/12/15 smallfish <smallfish.xy@gmail.com>

很明显帐户密码啥的不对 :)
--
blog: http://chenxiaoyu.org/blog/


2009/12/15 joewu <joewu@cyagen.com>
use Cwd;
my $orig_dir=cwd();
chdir("D:\Program Files\Apache Software Foundation\Apache2.2\logs") or die "Cannot chdir: $!\n";
my $dsn="DBI:mysql:vb;mysql_read_default_file=/my.cnf";
my %conn_attrs=(RaiseError=>1,PrintError=>0,AutoCommit=>1);
my $dbh=DBI->connect($dsn,undef,undef,\%conn_attrs);
chdir($orig_dir) or die "Cannot chdir:$!\n";
my $sth=$dbh->prepare(insert into tbl_username(username,password,email,organization,other_org) values(?,?,?,?,?));

其中my.ini文件内容是:
[client]
host=localhost
user=root
password=7232830

发现连接到mysql数据库时候出现以下错误:
DBI connect('vb;mysql_read_default_file=/my.ini','',...) failed: Access denied for user 'ODBC'@'localhost' (using password: NO) at D:\Program Files\Apache Software Foundation\Apache2.2\mason\obj\3045446373\test2\lib\validateUser.mas.obj line 36

这种写法我是参考书上写的 ,但总是出现错误!

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
账户和密码是没错的:

my $dsn="DBI:mysql:vb:localhost";
my $user_name="root";
my $password="7232830";
my %conn_attrs=(RaiseError=>1,PrintErros=>0,AutoCommit=>1);
my $dbh=DBI->connect($dsn,$user_name,$password,\%conn_attrs);
这是另外的一种写法 ,这种写法是可以连接到数据库的。但数据库信息就泄漏,使用不安全。所以我换成上面的写法 但是 是错误的。
 没有,my.ini内容是有的。目录下也有这个文件。我的系统是WINDOWS的

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
呵呵 ,my.cnf和my.ini都试过了。是在 D:\Program Files\Apache Software Foundation\Apache2.2\logs 下的 通过chdir改变了它的根目录。

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
不行啊。会不会是my.ini里面的内容错了呢?
[client]
host=localhost
user=root
password=7232830
晕 为什么我在pl文件上执行可以。但放在网页上就不行了

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

--

您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。