2009年8月22日星期六

[PerlChina] Re: 变量作用域的问题

zhang jiaqiang wrote:
> 非常感谢回复。(正在看给出的那个链接)
>
> 另外,也简要说一下我这边程序的本意,看有是否能有更好的程序组织方式,从而
> 避过这个嵌套函数的问题:
>
> 先用Find::File遍历目录找出所有符合条件的XML文件,然后对每个XML文件进行解
> 析,用XML::Parser,我把startElement放在了这个Parser_XML函数内部,结果在
> 对这个函数里变量$tag_count处理时发现了这个问题:
>
> 我觉得startElement和$$tag_count都和XML处理有关,直觉应该放在Parser_XML内
> 部;如果把$tag_count放在程序的最外围声明,可以解决这个问题,但是感觉从逻
> 辑上有点说不过去。
>

我的答案是看情况..

如果这只是用一次就仍的程序,或者是个100,200行的程序,没__必要__考虑的这
么周到(关于这方面你可以 google 下 "premature optimization is the root of
all evil" :) ) 。你可以把和 Parser_XML 相关的函数放在一起。常用的是:

sub main { parse_xml(); report(); }

sub parse_xml {}

##### 所有和 parse_xml 相关的帮助函数. 习惯性的把帮助函数用下划线和主函
数分开。

sub _startElement {}
sun _endElement {}


另外一种情况是你在写的程序会被重复使用,或是变的很复杂时,那么你还是好好
的设计一下吧:一般解决方法是把 parse xml 这部分放到单独的 package 里。在
主程序只调用 parse_xml 即可,而不把帮助函数暴露出来。

其他人或许还有别的方法...

oh, 有空的话推荐你看看 Perl Best Practice 这本书,会帮助你成为一个好的
Perl 程序员。


Qiang

> use strict;
> # main begin
> .....
>
> find( \&Wanted,$dir);
>
> sub Wanted
> {
> if ( $_ =~ /some reg/ ){
> Parser_XML($_);
> }
> }
>
> sub Parser_XML {
> my $xmlfile = shift;
> my $tag_count;
> $parser->setHandlers( Start => \&startElement );
> $parser->parsefile($xmlfile);
> print "There is $count in this xml file\n";
>
> sub startElement {
> ......
> $tag_count++ if $element == 'TAG';
> }
>
> }
>
>
>
> Best regards
> Zhang JiaQiang
>
>
>
> 2009/8/23 Qiang (James) <shijialee@gmail.com <mailto:shijialee@gmail.com>>
>
> zhang jiaqiang wrote:
> > 大家好,
> >
> > 新手想不太明白一个变量作用的问题,请帮忙看看。
> >
> > 我的问题是如何理解$x后两次没有值,为什么在函数in_a里还有值?而且
> 第三次循
> > 环的时候这个值怎么成2了?
>
> 简单的解释是嵌套函数的原因。复杂的这里讲的很清楚,就不和你重复了。。
>
> http://perl.apache.org/docs/general/perl_reference/perl_reference.html#my____Scoped_Variable_in_Nested_Subroutines
>
> 另外,没有特别需要,没有人会这么写 Perl 程序。
>
> Qiang
>
>
> >
> > 简化的程序如下:
> >
> > for $i (0..2){
> > a();
> > }
> > sub a
> > {
> > my $x ;
> > in_a();
> > print $i,":\t",$x,"\n";
> > undef $x;
> > sub in_a
> > {
> > $x++;
> > print "in_a:$x\n";
> > }
> > }
> >
> > 执行结果:
> > in_a:1
> > 0: 1
> > in_a:1
> > 1:
> > in_a:2
> > 2:
> >
> >
> >
> > Best regards
> > Zhang JiaQiang
> >
> >
> > >
>
>
>
>
>
> >


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

[PerlChina] Re: 变量作用域的问题

for $i (0..2){
    a();   
}
sub a
{
    my $x ;
    in_a();
    print $i,":\t",$x,"\n";
    undef $x;
    sub in_a
    {
      $x++;   
      print "in_a:$x\n";
    }   
}
 
--------------等效于
    my $x ;                    #---------------------------------第一个
    in_a();                      #            0++
    print $i,":\t",$x,"\n";
    undef $x;                 #$x被undef,为0

    sub in_a
    {
      $x++;                      #---------------使用的是第一个$x
      print "in_a:$x\n";
    }    

    my $x ;
    in_a();                       #---------------使用的是第一个的  0++
    print $i,":\t",$x,"\n";
   undef $x;

    my $x ;
    in_a();                       #---------------使用的是第一次个 1++
    print $i,":\t",$x,"\n";
   undef $x;

结果  1 1 2
 
另一个示例
    my $x ;                       
    in_a();                      #使用的是第二次个 0++
    print $i,":\t",$x,"\n";
    undef $x;                

    my $x ;                     #---------------------------------第二个
    in_a();                       #---------------使用的是第二个的  1++
    print $i,":\t",$x,"\n";
   undef $x;                      #$x被undef,为0
 
    sub in_a
    {
      $x++;                      #---------------使用的是第二个的
      print "in_a:$x\n";
    }    

    my $x ;
    in_a();                       #---------------使用的是第二个的 0++
    print $i,":\t",$x,"\n";
   undef $x;

结果  1 2 1
 
 
2009/8/23 孙树昌 <wss12cn@gmail.com>
我解释错了,应该是跟嵌套函数有关,我需要看看那篇文档 

2009/8/23 zhang jiaqiang <zhangjiaqiang@gmail.com>

非常感谢回复。(正在看给出的那个链接)

另外,也简要说一下我这边程序的本意,看有是否能有更好的程序组织方式,从而避过这个嵌套函数的问题:

先用Find::File遍历目录找出所有符合条件的XML文件,然后对每个XML文件进行解析,用XML::Parser,我把startElement放在了这个Parser_XML函数内部,结果在对这个函数里变量$tag_count处理时发现了这个问题:

我觉得startElement和$$tag_count都和XML处理有关,直觉应该放在Parser_XML内部;如果把$tag_count放在程序的最外围声明,可以解决这个问题,但是感觉从逻辑上有点说不过去。

use strict;
# main begin
.....

find( \&Wanted,$dir);

sub Wanted
{
    if ( $_ =~ /some reg/ ){
        Parser_XML($_);
    }
}

sub Parser_XML {
    my $xmlfile = shift;
    my $tag_count;
        $parser->setHandlers( Start => \&startElement );
    $parser->parsefile($xmlfile);
    print "There is $count in this xml file\n";

    sub startElement {
        ......
        $tag_count++ if $element == 'TAG';
    }

}



Best regards
Zhang JiaQiang



2009/8/23 Qiang (James) <shijialee@gmail.com>
zhang jiaqiang wrote:

> 大家好,
>
> 新手想不太明白一个变量作用的问题,请帮忙看看。
>
> 我的问题是如何理解$x后两次没有值,为什么在函数in_a里还有值?而且第三次循
> 环的时候这个值怎么成2了?

简单的解释是嵌套函数的原因。复杂的这里讲的很清楚,就不和你重复了。。

http://perl.apache.org/docs/general/perl_reference/perl_reference.html#my____Scoped_Variable_in_Nested_Subroutines

另外,没有特别需要,没有人会这么写 Perl 程序。

Qiang


>
> 简化的程序如下:
>
> for $i (0..2){
>     a();
> }
> sub a
> {
>     my $x ;
>     in_a();
>     print $i,":\t",$x,"\n";
>     undef $x;
>     sub in_a
>     {
>       $x++;
>       print "in_a:$x\n";
>     }
> }
>
> 执行结果:
> in_a:1
> 0:      1
> in_a:1
> 1:
> in_a:2
> 2:
>
>
>
> Best regards
> Zhang JiaQiang
>
>
> >




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

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

[PerlChina] Re: 变量作用域的问题

我解释错了,应该是跟嵌套函数有关,我需要看看那篇文档 

2009/8/23 zhang jiaqiang <zhangjiaqiang@gmail.com>
非常感谢回复。(正在看给出的那个链接)

另外,也简要说一下我这边程序的本意,看有是否能有更好的程序组织方式,从而避过这个嵌套函数的问题:

先用Find::File遍历目录找出所有符合条件的XML文件,然后对每个XML文件进行解析,用XML::Parser,我把startElement放在了这个Parser_XML函数内部,结果在对这个函数里变量$tag_count处理时发现了这个问题:

我觉得startElement和$$tag_count都和XML处理有关,直觉应该放在Parser_XML内部;如果把$tag_count放在程序的最外围声明,可以解决这个问题,但是感觉从逻辑上有点说不过去。

use strict;
# main begin
.....

find( \&Wanted,$dir);

sub Wanted
{
    if ( $_ =~ /some reg/ ){
        Parser_XML($_);
    }
}

sub Parser_XML {
    my $xmlfile = shift;
    my $tag_count;
        $parser->setHandlers( Start => \&startElement );
    $parser->parsefile($xmlfile);
    print "There is $count in this xml file\n";

    sub startElement {
        ......
        $tag_count++ if $element == 'TAG';
    }

}



Best regards
Zhang JiaQiang



2009/8/23 Qiang (James) <shijialee@gmail.com>
zhang jiaqiang wrote:

> 大家好,
>
> 新手想不太明白一个变量作用的问题,请帮忙看看。
>
> 我的问题是如何理解$x后两次没有值,为什么在函数in_a里还有值?而且第三次循
> 环的时候这个值怎么成2了?

简单的解释是嵌套函数的原因。复杂的这里讲的很清楚,就不和你重复了。。

http://perl.apache.org/docs/general/perl_reference/perl_reference.html#my____Scoped_Variable_in_Nested_Subroutines

另外,没有特别需要,没有人会这么写 Perl 程序。

Qiang


>
> 简化的程序如下:
>
> for $i (0..2){
>     a();
> }
> sub a
> {
>     my $x ;
>     in_a();
>     print $i,":\t",$x,"\n";
>     undef $x;
>     sub in_a
>     {
>       $x++;
>       print "in_a:$x\n";
>     }
> }
>
> 执行结果:
> in_a:1
> 0:      1
> in_a:1
> 1:
> in_a:2
> 2:
>
>
>
> Best regards
> Zhang JiaQiang
>
>
> >




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

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

[PerlChina] Re: 变量作用域的问题

非常感谢回复。(正在看给出的那个链接)

另外,也简要说一下我这边程序的本意,看有是否能有更好的程序组织方式,从而避过这个嵌套函数的问题:

先用Find::File遍历目录找出所有符合条件的XML文件,然后对每个XML文件进行解析,用XML::Parser,我把startElement放在了这个Parser_XML函数内部,结果在对这个函数里变量$tag_count处理时发现了这个问题:

我觉得startElement和$$tag_count都和XML处理有关,直觉应该放在Parser_XML内部;如果把$tag_count放在程序的最外围声明,可以解决这个问题,但是感觉从逻辑上有点说不过去。

use strict;
# main begin
.....

find( \&Wanted,$dir);

sub Wanted
{
    if ( $_ =~ /some reg/ ){
        Parser_XML($_);
    }
}

sub Parser_XML {
    my $xmlfile = shift;
    my $tag_count;
        $parser->setHandlers( Start => \&startElement );
    $parser->parsefile($xmlfile);
    print "There is $count in this xml file\n";

    sub startElement {
        ......
        $tag_count++ if $element == 'TAG';
    }

}



Best regards
Zhang JiaQiang



2009/8/23 Qiang (James) <shijialee@gmail.com>
zhang jiaqiang wrote:
> 大家好,
>
> 新手想不太明白一个变量作用的问题,请帮忙看看。
>
> 我的问题是如何理解$x后两次没有值,为什么在函数in_a里还有值?而且第三次循
> 环的时候这个值怎么成2了?

简单的解释是嵌套函数的原因。复杂的这里讲的很清楚,就不和你重复了。。

http://perl.apache.org/docs/general/perl_reference/perl_reference.html#my____Scoped_Variable_in_Nested_Subroutines

另外,没有特别需要,没有人会这么写 Perl 程序。

Qiang


>
> 简化的程序如下:
>
> for $i (0..2){
>     a();
> }
> sub a
> {
>     my $x ;
>     in_a();
>     print $i,":\t",$x,"\n";
>     undef $x;
>     sub in_a
>     {
>       $x++;
>       print "in_a:$x\n";
>     }
> }
>
> 执行结果:
> in_a:1
> 0:      1
> in_a:1
> 1:
> in_a:2
> 2:
>
>
>
> Best regards
> Zhang JiaQiang
>
>
> >





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

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

[PerlChina] Re: 变量作用域的问题

这个问题的关键跟函数嵌套没有任何关系!
 

my $x=3;
in_a();
undef my $x;
sub in_a
{
 $x++;
 print "in_a: $x\n";
}
in_a();
in_a();
 
————输出结果:
in_a: 1
in_a: 1
in_a: 2

2009/8/23 Qiang (James) <shijialee@gmail.com>
zhang jiaqiang wrote:
> 大家好,
>
> 新手想不太明白一个变量作用的问题,请帮忙看看。
>
> 我的问题是如何理解$x后两次没有值,为什么在函数in_a里还有值?而且第三次循
> 环的时候这个值怎么成2了?

简单的解释是嵌套函数的原因。复杂的这里讲的很清楚,就不和你重复了。。

http://perl.apache.org/docs/general/perl_reference/perl_reference.html#my____Scoped_Variable_in_Nested_Subroutines

另外,没有特别需要,没有人会这么写 Perl 程序。

Qiang


>
> 简化的程序如下:
>
> for $i (0..2){
>     a();
> }
> sub a
> {
>     my $x ;
>     in_a();
>     print $i,":\t",$x,"\n";
>     undef $x;
>     sub in_a
>     {
>       $x++;
>       print "in_a:$x\n";
>     }
> }
>
> 执行结果:
> in_a:1
> 0:      1
> in_a:1
> 1:
> in_a:2
> 2:
>
>
>
> Best regards
> Zhang JiaQiang
>
>
> >

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

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

Re: 答复: 答复: [PerlChina] Re: 招聘信息-傲游招聘Perl开发工程师(北京)

问个题外问题 :)

Firefox访问一个恶意站点的时候,会出现一个拦截页面,不让访问:
"已报告的攻击站点!位于 160cf.com 的站点已经被报告为攻击网站,而且已根据您的安全首选项而阻止。"

傲游有这个功能或打算做这个功能么?





2009/8/21 蒋宇捷 <hfahe@163.com>

我们服务器架构换过了,以前的废弃了,要重做一套,设计文档都有了,核心是Perl或者sh脚本,外面再套一个网站^^

 

发件人: perlchina@googlegroups.com [mailto:perlchina@googlegroups.com] 代表 xuefeng
发送时间: 2009821 10:27
收件人: perlchina@googlegroups.com
主题: Re: 答复: [PerlChina] Re: 招聘信息-傲游招聘Perl开发工程师(北京)

 

这个东西比较赞,两年前我弄了一套出来,2SVN服务器(主+备)分发到700多台web上,容错,备份,回滚,日志分析,邮件通知,一个流程走下来相当的有感觉 :D

 


 

2009/8/21 蒋宇捷 hfahe@163.com

.... 开发一个网站自动部署系统,从svn抓取网站tags里的最新版本,分发到集群里的web服务器上,修改apache配置,重启服务(有错时需要回滚);邮件系统,实现邮件队列的异步发送,状态响应统计等等。

 






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

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

[PerlChina] Re: 变量作用域的问题

zhang jiaqiang wrote:
> 大家好,
>
> 新手想不太明白一个变量作用的问题,请帮忙看看。
>
> 我的问题是如何理解$x后两次没有值,为什么在函数in_a里还有值?而且第三次循
> 环的时候这个值怎么成2了?

简单的解释是嵌套函数的原因。复杂的这里讲的很清楚,就不和你重复了。。

http://perl.apache.org/docs/general/perl_reference/perl_reference.html#my____Scoped_Variable_in_Nested_Subroutines

另外,没有特别需要,没有人会这么写 Perl 程序。

Qiang


>
> 简化的程序如下:
>
> for $i (0..2){
> a();
> }
> sub a
> {
> my $x ;
> in_a();
> print $i,":\t",$x,"\n";
> undef $x;
> sub in_a
> {
> $x++;
> print "in_a:$x\n";
> }
> }
>
> 执行结果:
> in_a:1
> 0: 1
> in_a:1
> 1:
> in_a:2
> 2:
>
>
>
> Best regards
> Zhang JiaQiang
>
>
> >


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

[PerlChina] Re: 问下这个错误怎么处理

谢谢了,问题已解决

On 8月22日, 下午11时23分, 孙树昌 <wss1...@gmail.com> wrote:
> 1, 使用了-w参数,或者use strict时,变量声明或第一次使用时需要标明词法域。
> 2、是,不过一般大写。
>

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

[PerlChina] Re: 变量作用域的问题

首先建议:使用use strict;编程,基本上就不会出现莫名其妙的问题了。
 
 
a函数第一次执行的时候,in_a 引用的是局部变量$x; 以后的执行过程引用的是全局变量$x。
 
原因如下(个人意见,暂时没有根据 :)):
这个跟in_a定义的位置有关系,第一次执行in_a的时候 in_a既没有声明也没有定义,perl找到in_a定义的时候,让函数in_a中的$x继承了a函数的,之后a的函数末perl正式定义了in_a()使用全局变量$x,因为$x没有限定词。

 
2009/8/21 zhang jiaqiang <zhangjiaqiang@gmail.com>
大家好,

新手想不太明白一个变量作用的问题,请帮忙看看。

我的问题是如何理解$x后两次没有值,为什么在函数in_a里还有值?而且第三次循环的时候这个值怎么成2了?

简化的程序如下:

for $i (0..2){
    a();   
}
sub a
{
    my $x ;
    in_a();
    print $i,":\t",$x,"\n";
    undef $x;
    sub in_a
    {
      $x++;   
      print "in_a:$x\n";
    }   
}

执行结果:
in_a:1
0:      1
in_a:1
1:
in_a:2
2:



Best regards
Zhang JiaQiang




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

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

[PerlChina] Re: 问下这个错误怎么处理

1, 使用了-w参数,或者use strict时,变量声明或第一次使用时需要标明词法域。
2、是,不过一般大写。
在 09-8-22,周延<tonightfeel@gmail.com> 写道:
> Global symbol "$homepage" requires explicit package name at rule.pl
> line 591.
> 这个错误要怎么解决?
>
> 还有
> open outstream,">>test_result";
> 这个是什么意思?书上都没有讲这个。outstream是表示句柄吗?还有其他的意思没
> >
>

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

[PerlChina] Re: 问下这个错误怎么处理

On 8月22日, 下午10时06分, "Mike.G" <hyli...@gmail.com> wrote:
> 找点入门书看看。
> 你这些问题都是基础的东西。
> 每个问题都来回答,估计一大批人都已经被你累死了。
>
我一直在看书,找了好久都没有找到才来问的,我比较笨
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 问下这个错误怎么处理



2009/8/22 周延 <tonightfeel@gmail.com>
Global symbol "$homepage" requires explicit package name at rule.pl
line 591.
这个错误要怎么解决?

还有
open outstream,">>test_result";
这个是什么意思?书上都没有讲这个。outstream是表示句柄吗?还有其他的意思没

啥书,居然不讲这个,误人子弟啊


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

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

[PerlChina] Re: 问下这个错误怎么处理

找点入门书看看。
你这些问题都是基础的东西。
每个问题都来回答,估计一大批人都已经被你累死了。

顺便回复一下你的问题。
如果打开了use strict编译指令。
需要使用My, 或者是our 申明变量。


2009/8/22 周延 <tonightfeel@gmail.com>
Global symbol "$homepage" requires explicit package name at rule.pl
line 591.
这个错误要怎么解决?

还有
open outstream,">>test_result";
这个是什么意思?书上都没有讲这个。outstream是表示句柄吗?还有其他的意思没



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

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

[PerlChina] 问下这个错误怎么处理

Global symbol "$homepage" requires explicit package name at rule.pl
line 591.
这个错误要怎么解决?

还有
open outstream,">>test_result";
这个是什么意思?书上都没有讲这个。outstream是表示句柄吗?还有其他的意思没
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

Re: 答复: 答复: [PerlChina] 再来一个调查:用PERL来开发WEB,我更喜欢...

我今天正式实测了一个模块。
Rose::DB和Apache::DBI一起用。
没有任何中文问题啊。

你是怎么碰到的?

能否详细说说?


谢谢



2009/8/21 蒋宇捷 <hfahe@163.com>

Rose::DBApache::DBI一起用可能会有编码问题,希望你运气好不要遇到。。。

 





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

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

2009年8月21日星期五

[PerlChina] Re: 求助,这段看不明白~

在下面加了点注释 颜色不一样
不知道你的基础怎么样 如果你会 PRO*C 或者 JAVA的 JDBC的话
DBI的操作模式和PRO*C的 很像
跟JAVA 的JDBC 也还有点像
下面有蓝色的注释  你可以看以下 可能会对你有点儿帮助

--

在2009-08-21,"周延" tonightfeel@gmail.com> 写道: > >刚接触这个,老师直接让改程序,语法粗看了下,下面这段还不懂但是时间又很紧,不能慢慢研究了,麻烦前辈们帮忙解答下,感激不尽^_^ > >sub extract_person_list_from_database() >{ >  my ($option, $total, $cid, $port) = @_; >  my $sql_fetch_person = qq {select id, name from contact_info where >issearch = 0 and id % ? = ? limit 20 }; >   #where 后面是什么意思啊?->我觉得这里你是不明白 后面两个?的意思 是在执行的时候提供变量替换  execute($total, $cid);  >  our $thedbh = &connect_database(); >  my $stat = $thedbh->prepare($sql_fetch_person); >  my $sql_set_search = qq {update contact_info set issearch=1 where >id=?};  #update是什么意思   -> UPDATE语句的作用你不明白的话 就应该去看看SQL了。。。。  更新DB >  my $stat_set_search = $thedbh->prepare($sql_set_search); >  my @current_array; >  my $flag = 1; >  my $rv; >  my ($id, $name);   #这几行都是声明吗? ($id, $name);   为什么加括号 ->既然没有基础  那就记住 同时声明多个变量 就加括号就好了 >  while ( $flag == 1 ) >  { >     $rv = $stat->execute($total, $cid); >     @current_array = (); >     if( $rv > 0 ) >     { >      $stat->bind_columns(\$id, \$name);   #这里也不知道?
-> 这里bind_columns(\$id, \$name);   用的是\$ 指针 可以理解成绑定 在下面 每次FETCH动作的时候 ID 和NAME 的值就会发生相映的变化 >      while ( $stat->fetch()) >      { >        push(@current_array, $id); >        if( $option eq "ie") >        { >          &extract_person_with_IEGoogle($name, $id, $port); >        } >        else >        { >          &extract_person($name, $id); >        } >      } >     } >     else >     { >      $flag = 0; >     } > >     foreach my $caid (@current_array) >     { >      $stat_set_search->execute($caid); >     } >  } >  &disconnect_database($thedbh); >} > >> 



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

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

[PerlChina] Re: 求助,这段看不明白~

> 这里是把 sql_fetch_person 里抓到的 id 和 name 值付给 $id 和 $name, 下面
> 每次执行 $stat->fetch 用的。 有时间的话看看 DBI 的文档http://search.cpan.org/perldoc?DBI
>
> > while ( $stat->fetch())
> > {
>
嗯,明天好好看看,谢谢啦谢谢啦,解答得好细致,好开心^_^
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 求助,这段看不明白~

> my ($id, $name); #这几行都是声明吗? ($id, $name); 为什么加括号
>
> 是声明,加括号是为了一次声明多个变量, 不然就要:
> my $id;
> my $name;
>
> 鄙视老师 凸-_-凸

哎呀非常感谢啦,其实老师对我很好,想让我学快一点才这样的,我的时间很紧不能一步步学了,还好有这个平台可以求助,真好,我要快一点学,以后也帮助别
人。

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

[PerlChina] Re: 求助,这段看不明白~

周延 wrote:
> 刚接触这个,老师直接让改程序,语法粗看了下,下面这段还不懂但是时间又很紧,不能慢慢研究了,麻烦前辈们帮忙解答下,感激不尽^_^
>
> sub extract_person_list_from_database()
> {
> my ($option, $total, $cid, $port) = @_;
> my $sql_fetch_person = qq {select id, name from contact_info where
> issearch = 0 and id % ? = ? limit 20 };


> my $stat = $thedbh->prepare($sql_fetch_person);


> my ($id, $name); #这几行都是声明吗? ($id, $name); 为什么加括号
> while ( $flag == 1 )
> {
> $rv = $stat->execute($total, $cid);
> @current_array = ();
> if( $rv > 0 )
> {
> $stat->bind_columns(\$id, \$name); #这里也不知道?

这里是把 sql_fetch_person 里抓到的 id 和 name 值付给 $id 和 $name, 下面
每次执行 $stat->fetch 用的。 有时间的话看看 DBI 的文档
http://search.cpan.org/perldoc?DBI

> while ( $stat->fetch())
> {

Qiang

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

[PerlChina] Re: 求助,这段看不明白~

my $sql_fetch_person = qq {select id, name from contact_info where
issearch = 0 and id % ? = ? limit 20 };
#where 后面是什么意思啊?

$rv = $stat->execute($total, $cid); # 这两个变量$total, $cid 会分别被赛到那两个问好那
类似执行select id, name from contact_info where
issearch = 0 and id % $total = $cid limit 20

my $sql_set_search = qq {update contact_info set issearch=1 where
id=?}; #update是什么意思

update是更新数据库的语句


my ($id, $name); #这几行都是声明吗? ($id, $name); 为什么加括号

是声明,加括号是为了一次声明多个变量, 不然就要:
my $id;
my $name;


鄙视老师 凸-_-凸


2009/8/21 周延 <tonightfeel@gmail.com>:
>
> 刚接触这个,老师直接让改程序,语法粗看了下,下面这段还不懂但是时间又很紧,不能慢慢研究了,麻烦前辈们帮忙解答下,感激不尽^_^
>
> sub extract_person_list_from_database()
> {
>  my ($option, $total, $cid, $port) = @_;
>  my $sql_fetch_person = qq {select id, name from contact_info where
> issearch = 0 and id % ? = ? limit 20 };
>   #where 后面是什么意思啊?
>  our $thedbh = &connect_database();
>  my $stat = $thedbh->prepare($sql_fetch_person);
>  my $sql_set_search = qq {update contact_info set issearch=1 where
> id=?};  #update是什么意思
>  my $stat_set_search = $thedbh->prepare($sql_set_search);
>  my @current_array;
>  my $flag = 1;
>  my $rv;
>  my ($id, $name);   #这几行都是声明吗? ($id, $name);   为什么加括号
>  while ( $flag == 1 )
>  {
>     $rv = $stat->execute($total, $cid);
>     @current_array = ();
>     if( $rv > 0 )
>     {
>      $stat->bind_columns(\$id, \$name);   #这里也不知道?
>      while ( $stat->fetch())
>      {
>        push(@current_array, $id);
>        if( $option eq "ie")
>        {
>          &extract_person_with_IEGoogle($name, $id, $port);
>        }
>        else
>        {
>          &extract_person($name, $id);
>        }
>      }
>     }
>     else
>     {
>      $flag = 0;
>     }
>
>     foreach my $caid (@current_array)
>     {
>      $stat_set_search->execute($caid);
>     }
>  }
>  &disconnect_database($thedbh);
> }
>
> >
>

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

[PerlChina] Re: 成都有招perler的不?

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

[PerlChina] 变量作用域的问题

大家好,

新手想不太明白一个变量作用的问题,请帮忙看看。

我的问题是如何理解$x后两次没有值,为什么在函数in_a里还有值?而且第三次循环的时候这个值怎么成2了?

简化的程序如下:

for $i (0..2){
    a();   
}
sub a
{
    my $x ;
    in_a();
    print $i,":\t",$x,"\n";
    undef $x;
    sub in_a
    {
      $x++;   
      print "in_a:$x\n";
    }   
}

执行结果:
in_a:1
0:      1
in_a:1
1:
in_a:2
2:



Best regards
Zhang JiaQiang


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

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

[PerlChina] 求助,这段看不明白~

刚接触这个,老师直接让改程序,语法粗看了下,下面这段还不懂但是时间又很紧,不能慢慢研究了,麻烦前辈们帮忙解答下,感激不尽^_^

sub extract_person_list_from_database()
{
my ($option, $total, $cid, $port) = @_;
my $sql_fetch_person = qq {select id, name from contact_info where
issearch = 0 and id % ? = ? limit 20 };
#where 后面是什么意思啊?
our $thedbh = &connect_database();
my $stat = $thedbh->prepare($sql_fetch_person);
my $sql_set_search = qq {update contact_info set issearch=1 where
id=?}; #update是什么意思
my $stat_set_search = $thedbh->prepare($sql_set_search);
my @current_array;
my $flag = 1;
my $rv;
my ($id, $name); #这几行都是声明吗? ($id, $name); 为什么加括号
while ( $flag == 1 )
{
$rv = $stat->execute($total, $cid);
@current_array = ();
if( $rv > 0 )
{
$stat->bind_columns(\$id, \$name); #这里也不知道?
while ( $stat->fetch())
{
push(@current_array, $id);
if( $option eq "ie")
{
&extract_person_with_IEGoogle($name, $id, $port);
}
else
{
&extract_person($name, $id);
}
}
}
else
{
$flag = 0;
}

foreach my $caid (@current_array)
{
$stat_set_search->execute($caid);
}
}
&disconnect_database($thedbh);
}

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

Re: 答复: [PerlChina] Re: IiBlog发布了

同赞,要是有做WEB DESIGN的加入来就更好了。

蒋宇捷 wrote:
> 先赞一个~~
>
> -----邮件原件-----
> 发件人: perlchina@googlegroups.com [mailto:perlchina@googlegroups.com] 代表
> 鲁班
> 发送时间: 2009年8月21日 16:06
> 收件人: PerlChina Mongers 讨论组
> 主题: [PerlChina] Re: IiBlog发布了
>
> 如果有3到5人愿意业余一起用mason开发一套blog系统并不断完善,我可以提供一台用
> 于开发的服务器。我对这个项目有点小兴趣。
>
> On 8月19日, 下午4时13分, Beckheng Lam <bi.ken....@gmail.com> wrote:
>
>> 基于HTML::Mason的IiBlog,包含文章发布、图片集、投票、留言管理。
>>
>> 链接地址:http://code.google.com/p/iiblog/
>>
>> 欢迎大家提出意见。
>>
>>


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

Re: 答复: 答复: [PerlChina] 再来一个调查:用PERL来开发WEB,我更喜欢...

我好像还没碰到

:)

Mike.G




2009/8/21 Beckheng Lam <bi.ken.lam@gmail.com>
幸好没用Rose::DB ;-)

Mike.G wrote:
不是吧?

遇到了再说

:)

Mike.G


2009/8/21 蒋宇捷 <hfahe@163.com>

Rose::DBApache::DBI一 起用可能会有编码问题,希望你运气好不要遇到。。。




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

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

Re: 答复: [PerlChina] Re: 上次哪位给出的关于这个: KinoSearch 搜索引擎的邮件的?

thanks

没理解你放的那个++

哈哈。


2009/8/21 Fayland Lam <fayland@gmail.com>

Mike.G wrote:
> sphinx++?
> 那又是什么?
> 在哪儿能找到?

http://sphinxsearch.com/
sphinx is fast and good.

>
> 谢谢
>
>
> 2009/8/21 Fayland Lam <fayland@gmail.com <mailto:fayland@gmail.com>>
>
>     sphinx++
>
>
>
>
>
> >


--
Fayland Lam // http://www.fayland.org/
Foorum based on Catalyst // http://www.foorumbbs.com/





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

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

答复: [PerlChina] Re: IiBlog发布了

先赞一个~~

-----邮件原件-----
发件人: perlchina@googlegroups.com [mailto:perlchina@googlegroups.com] 代表
鲁班
发送时间: 2009年8月21日 16:06
收件人: PerlChina Mongers 讨论组
主题: [PerlChina] Re: IiBlog发布了

如果有3到5人愿意业余一起用mason开发一套blog系统并不断完善,我可以提供一台用
于开发的服务器。我对这个项目有点小兴趣。

On 8月19日, 下午4时13分, Beckheng Lam <bi.ken....@gmail.com> wrote:
> 基于HTML::Mason的IiBlog,包含文章发布、图片集、投票、留言管理。
>
> 链接地址:http://code.google.com/p/iiblog/
>
> 欢迎大家提出意见。
>
> --
> 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: IiBlog发布了

如果有3到5人愿意业余一起用mason开发一套blog系统并不断完善,我可以提供一台用于开发的服务器。我对这个项目有点小兴趣。

On 8月19日, 下午4时13分, Beckheng Lam <bi.ken....@gmail.com> wrote:
> 基于HTML::Mason的IiBlog,包含文章发布、图片集、投票、留言管理。
>
> 链接地址:http://code.google.com/p/iiblog/
>
> 欢迎大家提出意见。
>
> --
> 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 访问该论坛
-~----------~----~----~----~------~----~------~--~---

Re: 答复: [PerlChina] Re: 上次哪位给出的关于这个: KinoSearch 搜索引擎的邮件的?

我刚看了一下sphinx,这个好像和KinoSearch是不同的东西啊。
sphinx没有办法对文档进行index是么?


2009/8/21 蒋宇捷 <hfahe@163.com>

Kinosearch原来组里的一个mm用过,不过她觉得sphinx更好用。

我很早在help.maxthon.cn上试用过Perl + lucene,效果还可以。

 

发件人: perlchina@googlegroups.com [mailto:perlchina@googlegroups.com] 代表 Mike.G
发送时间: 2009821 14:07
收件人: perlchina@googlegroups.com
主题: [PerlChina] Re: 上次哪位给出的关于这个: KinoSearch 搜索引擎的邮件的?

 

贴个使用java lucene搜索的列子:
http://shanghai.anjuke.com/v2/sale/

下面的列表和关键字搜索就是lucene搜索引擎的

预先生成index.
搜索速度和命中率都看上去还可以。


Mike.G

2009/8/21 Mike.G <hylinux@gmail.com>

我好像从邮件列表里看到有人提出过。
这两天去看了看。
好像很不错啊。
有个0.09benchmark:
在这儿:
http://www.rectangular.com/kinosearch/benchmarks.html

但是没有中文的分词模块。
软件本身已经全部支持utf-8,多字节支持应该不是问题。分词是个大问题。
去了一封邮件,作者认为只要自定义一个QueryParse类就可以了,我理解下来就是分词。
关于StringfieldType但是不用担心,主要是FullTextfieldtype不能搜索(这个估计需要用到分词), 
大家做网站的时候,有大型的搜索的话,可以考虑这个了。有很多应用看起来只需要使用String field就好了。
很多人用的是javalucene

有人感兴趣没?

;)


Mike.G







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

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

Re: 答复: [PerlChina] Re: 上次哪位给出的关于这个: KinoSearch 搜索引擎的邮件的?

sphinx++

蒋宇捷 wrote:
>
> Kinosearch原来组里的一个mm用过,不过她觉得sphinx更好用。
>
> 我很早在help.maxthon.cn上试用过Perl + lucene,效果还可以。
>
> *发件人:* perlchina@googlegroups.com
> [mailto:perlchina@googlegroups.com] *代表 *Mike.G
> *发送时间:* 2009年8月21日 14:07
> *收件人:* perlchina@googlegroups.com
> *主题:* [PerlChina] Re: 上次哪位给出的关于这个: KinoSearch 搜索引擎的
> 邮件的?
>
> 贴个使用java lucene搜索的列子:
> http://shanghai.anjuke.com/v2/sale/
>
> 下面的列表和关键字搜索就是lucene搜索引擎的
>
> 预先生成index.
> 搜索速度和命中率都看上去还可以。
>
>
> Mike.G
>
> 2009/8/21 Mike.G <hylinux@gmail.com <mailto:hylinux@gmail.com>>
>
> 我好像从邮件列表里看到有人提出过。
> 这两天去看了看。
> 好像很不错啊。
> 有个0.09的benchmark:
> 在这儿:
> http://www.rectangular.com/kinosearch/benchmarks.html
>
> 但是没有中文的分词模块。
> 软件本身已经全部支持utf-8,多字节支持应该不是问题。分词是个大问题。
> 去了一封邮件,作者认为只要自定义一个QueryParse类就可以了,我理解下来就
> 是分词。
> 关于String的fieldType但是不用担心,主要是FullText的field的type不能搜索
> (这个估计需要用到分词),
> 大家做网站的时候,有大型的搜索的话,可以考虑这个了。有很多应用看起来只
> 需要使用String field就好了。
> 很多人用的是java的lucene
>
> 有人感兴趣没?
>
> ;)
>
>
> Mike.G
>
>
>
>
> >


--
Fayland Lam // http://www.fayland.org/
Foorum based on Catalyst // http://www.foorumbbs.com/


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

2009年8月20日星期四

答复: [PerlChina] Re: 上次哪位给出的关于这个: KinoSearch 搜索引擎的邮件的?

Kinosearch原来组里的一个mm用过,不过她觉得sphinx更好用。

我很早在help.maxthon.cn上试用过Perl + lucene,效果还可以。

 

发件人: perlchina@googlegroups.com [mailto:perlchina@googlegroups.com] 代表 Mike.G
发送时间: 2009821 14:07
收件人: perlchina@googlegroups.com
主题: [PerlChina] Re: 上次哪位给出的关于这个: KinoSearch 搜索引擎的邮件的?

 

贴个使用java lucene搜索的列子:
http://shanghai.anjuke.com/v2/sale/

下面的列表和关键字搜索就是lucene搜索引擎的

预先生成index.
搜索速度和命中率都看上去还可以。


Mike.G

2009/8/21 Mike.G <hylinux@gmail.com>

我好像从邮件列表里看到有人提出过。
这两天去看了看。
好像很不错啊。
有个0.09benchmark:
在这儿:
http://www.rectangular.com/kinosearch/benchmarks.html

但是没有中文的分词模块。
软件本身已经全部支持utf-8,多字节支持应该不是问题。分词是个大问题。
去了一封邮件,作者认为只要自定义一个QueryParse类就可以了,我理解下来就是分词。
关于StringfieldType但是不用担心,主要是FullTextfieldtype不能搜索(这个估计需要用到分词), 
大家做网站的时候,有大型的搜索的话,可以考虑这个了。有很多应用看起来只需要使用String field就好了。
很多人用的是javalucene

有人感兴趣没?

;)


Mike.G




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

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

[PerlChina] Re: 上次哪位给出的关于这个: KinoSearch 搜索引擎的邮件的?

贴个使用java lucene搜索的列子:
http://shanghai.anjuke.com/v2/sale/

下面的列表和关键字搜索就是lucene搜索引擎的

预先生成index.
搜索速度和命中率都看上去还可以。


Mike.G


2009/8/21 Mike.G <hylinux@gmail.com>
我好像从邮件列表里看到有人提出过。
这两天去看了看。
好像很不错啊。
有个0.09的benchmark:
在这儿:
http://www.rectangular.com/kinosearch/benchmarks.html

但是没有中文的分词模块。
软件本身已经全部支持utf-8,多字节支持应该不是问题。分词是个大问题。
去了一封邮件,作者认为只要自定义一个QueryParse类就可以了,我理解下来就是分词。
关于String的fieldType但是不用担心,主要是FullText的field的type不能搜索(这个估计需要用到分词), 
大家做网站的时候,有大型的搜索的话,可以考虑这个了。有很多应用看起来只需要使用String field就好了。
很多人用的是java的lucene

有人感兴趣没?

;)


Mike.G



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

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

[PerlChina] 上次哪位给出的关于这个: KinoSearch 搜索引擎的邮件的?

我好像从邮件列表里看到有人提出过。
这两天去看了看。
好像很不错啊。
有个0.09的benchmark:
在这儿:
http://www.rectangular.com/kinosearch/benchmarks.html

但是没有中文的分词模块。
软件本身已经全部支持utf-8,多字节支持应该不是问题。分词是个大问题。
去了一封邮件,作者认为只要自定义一个QueryParse类就可以了,我理解下来就是分词。
关于String的fieldType但是不用担心,主要是FullText的field的type不能搜索(这个估计需要用到分词), 
大家做网站的时候,有大型的搜索的话,可以考虑这个了。有很多应用看起来只需要使用String field就好了。
很多人用的是java的lucene

有人感兴趣没?

;)


Mike.G


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

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

Re: 答复: 答复: 答复: 答复: 答复: 答复: [PerlChina] 再来一个调查:用PERL来开发WEB,我更喜欢...

谢谢。
看这个日子安排,估计去不了了。
遗憾。





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

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

Re: 答复: 答复: 答复: 答复: 答复: 答复: [PerlChina] 再来一个调查:用PERL来开发WEB,我更喜欢...

:)

我现在在用这个CHI的CGI::Application插件
个人感觉好处是扩展性非常好。
刚开始的时候直接用tmpfs文件系统配合chi的file的driver就好了。
需要大量部署的时候,改一下配置,讲driver改到memcached就ok了。

比如说:
chi_config的配置直接放入配置文件:
#CHI Cache的配置
$CFG{'chi_config'} = {
    driver=>'File',
    root_dir=>'/dev/shm/'   #以shm内存的文件格式存储
};

下次需要改一下就好了。









2009/8/21 蒋宇捷 <hfahe@163.com>

看起来不错:)回头试试

 





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

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

答复: 答复: 答复: 答复: 答复: 答复: [PerlChina] 再来一个调查:用PERL来开发WEB,我更喜欢...

9.19

http://conference.perlchina.org/bjpw2009/

 

发件人: perlchina@googlegroups.com [mailto:perlchina@googlegroups.com] 代表 Mike.G
发送时间: 2009821 13:52
收件人: perlchina@googlegroups.com
主题: Re: 答复: 答复: 答复: 答复: 答复: [PerlChina] 再来一个调查:PERL来开发WEB,我更喜欢...

 

好像没人讲啊。
忘了问这次北京的大会是什么时候啊?

如果是cache我比较推崇CHI

我在使用c:A的时候也有用到他的插件
cgi::application::plugin::CHI


2009/8/21 joe jiang <lamp.purl@gmail.com>

Who can talk about cache in the coming perl conference? I think it's an interesting topic too :)

please submit your talk request to http://conference.perlchina.org






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

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

Re: 答复: 答复: 答复: 答复: 答复: [PerlChina] 再来一个调查:用PERL来开发WEB,我更喜欢...

是啵。好像之前没留意到这个。是从哪个版本开始有的?

Mike.G wrote:
这样的话,和什么进程啊。线程啊就无关了。
直接指定memcached的cluster.
丢过去就好了。



2009/8/21 Mike.G <hylinux@gmail.com>

Choosing a Cache Subclass - with CHI

The CHI API is implemented by a variety of drivers, for example CHI::Driver::File, CHI::Driver::FastMmap, and CHI::Driver::Memcached.

CHI::Driver::File is the default, but you can override this with the driver keyword. The value must be the name of a CHI::Driver subclass; the prefix "CHI::Driver::" need not be included. For example:

    my $cache = $m->cache(driver => 'Memcached', servers => [ ... ]);     my $result = $cache->get('key');     $cache->set(key => $result);

You can even specify different subclasses for different keys in the same component. Just make sure the correct value is passed to all calls to $m->cache; Mason does not remember which subclass you have used for a given component or key.



贴一下文档。


*^-^*




2009/8/21 Mike.G <hylinux@gmail.com>

恩。 呵呵。是有些偏差。我的意思是mason使用基于chi的缓存的话,可以直接cache存到memcached.

因为chi本身就有memcached的driver.

namespace是一个问题。




2009/8/21 蒋宇捷 <hfahe@163.com>

可能有 一个理解偏差,mason使用的cache,无论是什么模块,它是运行在apache上的,无论worker还是prefork模式,都是基于apache子进程的(fork),每个子进程为了并发执行,相互独立, 有属于自己的程序段、数据段。

所以, 运行在apache多进程模式下的mason cache如果 基于memory cache,那么这个memory是在子进程里的,相互之间是隔离、不同步 的。

以上这 部分是我的理解,另外记得在masonhq或者是mason maillist里 也有提到,可惜刚才找了半天没找到:(

我说的memcached是指建立专门的Memcached服务器,通过Cache::Memcached模块访问,这就不通过apache了。

Btw:刚才忘说了,mason cache也是 基于组件的,这一点也比较麻烦。

 

发件人: perlchina@googlegroups.com [mailto:perlchina@googlegroups.com] 代表 Mike.G
发送时间: 2009821 11:21
收件人: perlchina@googlegroups.com
主题: Re: 答复: 答复: 答 复: 答复: [PerlChina] 再 来一个调查:PERL来开发WEB,我更喜欢...

 

好像mason可 以使用memcached
我看到文档上说目前使用的是Cache::Cache,但是已经支 持了CHI了。
对于CHI, 那么就可以使用Memcache了。它有Memcachedriver.

我想蒋兄说的这个可能是不是误会了?
mason
应该是不存在你说的这种私有cache的吧?(可能是我错了),这个也是 根据key来的啊。

刚想了想,我觉得可能用在小些的站点上,以页面为导向的,展示不太变动的数据,或者是小时间范围更新的时间数据:比如说好 友动态,可能10分钟,或者是5分钟可以查 一次的,这种,或者是一天更新,或者是几天更新一次的数据。在页面中,可能是先根据keycache中去取,有的话,取出来,直接显示,没有的话,调用后面的代码取得数据,大站点有点多此一举就是 了,小站点,以页面为导向的,还是比较有用的。

2009/8/21 蒋宇捷 <hfahe@163.com>

Mason本身的cache我用的不多,用的更多的是Cache::Memcached

因为Mason本身的cache,当使用内存缓存的时候,Apache每个子进程之间都会各自保留自己的cache值, 所以这个值不是唯一确定的。举个例子,页面计数器,计数当使用cache存放时,不同页面请求可能 对应不同的Apache子进程,所以刷新页面显示计数时数字会不停来回变化,1->2->1>3类似。

所以cache一般用在存放不会要求很精确,不需要频繁变动,变化不大的值。当然可以使用文件缓存解决上面的这个 问题,但是性能就会低一些,对于多web服务器的集群还需要考虑使用nfs等共享机制。

而且除 非是频繁重复使用的值,可以先cache,如果不是,是每次页面请求生成的,就没有必要使用了。

用户信 息的存放一般使用Cache::Memcached,好用不贵。

 

发件人: perlchina@googlegroups.com [mailto:perlchina@googlegroups.com] 代表 Mike.G
发送时间: 2009821 9:46
收件人: perlchina@googlegroups.com
主题: Re: 答复: 答复: 答 复: [PerlChina] 再来一个调查:PERL来 开发WEB,我更喜欢...

 

那是。主要是觉得TT名 字好,尤其是MM叫。这个是不是有些流氓了?
*^-^*

哈哈。
不开玩笑了。
不过mason最主要的问题,我还是觉得在使用mod_perl的时候,很难讲业务代码和表示层分得更开。
虽然可以用昨天和蒋兄讨论的那个取巧的办法,可是看上去总是不伦不类的。
另外不知道masoncache到 底该用在哪儿。

可能的用法(我没用过)
例如有个数组需要显示。
可以先查cache一把?
然后再调用action什么的?这看起来就是业务的逻辑了。


2009/8/21 Qiang (James) <shijialee@gmail.com>

蒋宇捷 wrote:
>
我觉得mason容易一些 简单一些 tt需要对perlpackagemoduleclassfunction
>
以及Apache::RequestCGI有一定的了解
>

TT++   Jeff 说 的很多情况下美工在使用 TT, 所以简单易用是很重要的。而且
TT
在很多 Perl Web Framework 都是被推荐使用的模板系 统。

Qiang

 

 

 

 










--  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] 再来一个调查:用PERL来开发WEB,我更喜欢...

看起来不错:)回头试试

 

发件人: perlchina@googlegroups.com [mailto:perlchina@googlegroups.com] 代表 Mike.G
发送时间: 2009821 13:48
收件人: perlchina@googlegroups.com
主题: Re: 答复: 答复: 答复: 答复: 答复: [PerlChina] 再来一个调查:PERL来开发WEB,我更喜欢...

 

这样的话,和什么进程啊。线程啊就无关了。
直接指定memcachedcluster.
丢过去就好了。


2009/8/21 Mike.G <hylinux@gmail.com>

Choosing a Cache Subclass - with CHI

The CHI API is implemented by a variety of drivers, for example CHI::Driver::File, CHI::Driver::FastMmap, and CHI::Driver::Memcached.

CHI::Driver::File is the default, but you can override this with the driver keyword. The value must be the name of a CHI::Driver subclass; the prefix "CHI::Driver::" need not be included. For example:

    my $cache = $m->cache(driver => 'Memcached', servers => [ ... ]);
    my $result = $cache->get('key');
    $cache->set(key => $result);

You can even specify different subclasses for different keys in the same component. Just make sure the correct value is passed to all calls to $m->cache; Mason does not remember which subclass you have used for a given component or key.

 

 

贴一下文档。

 

*^-^*

 

 

2009/8/21 Mike.G <hylinux@gmail.com>

 

恩。 呵呵。是有些偏差。我的意思是mason使用基于chi的缓存的话,可以直接cache存到memcached.

因为chi本身就有memcacheddriver.

namespace
是一个问题。




2009/8/21 蒋宇捷 <hfahe@163.com>

可能有一个理解偏差,mason使用的cache,无论是什么模块,它是运行在apache上的,无论worker还是prefork模式,都是基于apache子进程的(fork),每个子进程为了并发执行,相互独立,有属于自己的程序段、数据段。

所以,运行在apache多进程模式下的mason cache如果基于memory cache,那么这个memory是在子进程里的,相互之间是隔离、不同步的。

以上这部分是我的理解,另外记得在masonhq或者是mason maillist里也有提到,可惜刚才找了半天没找到:(

我说的memcached是指建立专门的Memcached服务器,通过Cache::Memcached模块访问,这就不通过apache了。

Btw:刚才忘说了,mason cache也是基于组件的,这一点也比较麻烦。

 

发件人: perlchina@googlegroups.com [mailto:perlchina@googlegroups.com] 代表 Mike.G

发送时间: 2009821 11:21
收件人: perlchina@googlegroups.com
主题: Re: 答复: 答复: 答复: 答复: [PerlChina] 再来一个调查:PERL来开发WEB,我更喜欢...

 

好像mason可以使用memcached
我看到文档上说目前使用的是Cache::Cache,但是已经支持了CHI了。
对于CHI, 那么就可以使用Memcache了。它有Memcachedriver.

我想蒋兄说的这个可能是不是误会了?
mason
应该是不存在你说的这种私有cache的吧?(可能是我错了),这个也是根据key来的啊。

刚想了想,我觉得可能用在小些的站点上,以页面为导向的,展示不太变动的数据,或者是小时间范围更新的时间数据:比如说好友动态,可能10分钟,或者是5分钟可以查一次的,这种,或者是一天更新,或者是几天更新一次的数据。在页面中,可能是先根据keycache中去取,有的话,取出来,直接显示,没有的话,调用后面的代码取得数据,大站点有点多此一举就是了,小站点,以页面为导向的,还是比较有用的。

2009/8/21 蒋宇捷 <hfahe@163.com>

Mason本身的cache我用的不多,用的更多的是Cache::Memcached

因为Mason本身的cache,当使用内存缓存的时候,Apache每个子进程之间都会各自保留自己的cache值,所以这个值不是唯一确定的。举个例子,页面计数器,计数当使用cache存放时,不同页面请求可能对应不同的Apache子进程,所以刷新页面显示计数时数字会不停来回变化,1->2->1>3类似。

所以cache一般用在存放不会要求很精确,不需要频繁变动,变化不大的值。当然可以使用文件缓存解决上面的这个问题,但是性能就会低一些,对于多web服务器的集群还需要考虑使用nfs等共享机制。

而且除非是频繁重复使用的值,可以先cache,如果不是,是每次页面请求生成的,就没有必要使用了。

用户信息的存放一般使用Cache::Memcached,好用不贵。

 

发件人: perlchina@googlegroups.com [mailto:perlchina@googlegroups.com] 代表 Mike.G
发送时间: 2009821 9:46
收件人: perlchina@googlegroups.com
主题: Re: 答复: 答复: 答复: [PerlChina] 再来一个调查:PERL来开发WEB,我更喜欢...

 

那是。主要是觉得TT名字好,尤其是MM叫。这个是不是有些流氓了?
*^-^*

哈哈。
不开玩笑了。
不过mason最主要的问题,我还是觉得在使用mod_perl的时候,很难讲业务代码和表示层分得更开。
虽然可以用昨天和蒋兄讨论的那个取巧的办法,可是看上去总是不伦不类的。
另外不知道masoncache到底该用在哪儿。

可能的用法(我没用过)
例如有个数组需要显示。
可以先查cache一把?
然后再调用action什么的?这看起来就是业务的逻辑了。

2009/8/21 Qiang (James) <shijialee@gmail.com>

蒋宇捷 wrote:
>
我觉得mason容易一些 简单一些 tt需要对perlpackagemoduleclassfunction
>
以及Apache::RequestCGI有一定的了解
>

TT++   Jeff 说的很多情况下美工在使用 TT, 所以简单易用是很重要的。而且
TT
在很多 Perl Web Framework 都是被推荐使用的模板系统。

Qiang

 

 

 

 

 

 

 

 

 




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

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