小编sno*_*kin的帖子

舞者与催化剂[Perl Web Frameworks]

你怎么看待这两个?我开始读一本关于Catalyst的书,发现它与Dancer相比非常复杂.所以现在我正在试试舞者,它看起来更容易学习,更"人性化".

model-view-controller perl catalyst dancer

27
推荐指数
2
解决办法
7071
查看次数

XML vs YAML vs JSON

假设我从头开始一个项目,这不依赖于任何其他项目.我想使用一种格式来存储提要,比如XML,因为XML不是唯一可用的格式,我想知道:为什么我应该选择其中一种?

我将使用perl.

'Feed'是产品的描述(名称,价格,类型,简短描述,最多120个字).

xml perl json yaml

26
推荐指数
7
解决办法
2万
查看次数

如何在Perl Web爬虫中处理Javascript?

我想抓取一个网站,问题是,它充满了JavaScript的东西,比如按钮等,当按下它们时,它们不会改变URL,但页面上的数据会发生变化.

通常我使用LWP/Mechanize等来抓取网站,但都不支持JavaScript.任何的想法?

javascript perl web-crawler web-scraping

18
推荐指数
3
解决办法
4941
查看次数

Perl做... while和last命令

我刚刚遇到一些非常奇怪的行为,我实在无法解释:

do {
    my $qry = $self->getHTMLQuery(undef, $mech->content());
    next if (!defined($qry));

    push(
        @prods,
        map { 'http://www.XXXXYYYX.com'.$_->attr('href') }
            $qry->query('div.prodInfo div.prodInfoBox a.prodLink.GridItemLink')
    );

    $qry->delete();
    $TEST++;

    last if ($TEST >= 10);

} while(eval { $mech->follow_link(class => 'jump next') });

print "WHILE ENDED\n";
Run Code Online (Sandbox Code Playgroud)

上面的代码永远不会打印"WHILE ENDED",即使它$TEST> = 10 时似乎超出了while循环.

但是下面的代码确实打印了"WHILE ENDED":

do {
    my $qry = $self->getHTMLQuery(undef, $mech->content());
    next if (!defined($qry));

    push(
        @prods,
        map { 'http://www.XXXXYYYX.com'.$_->attr('href') }
            $qry->query('div.prodInfo div.prodInfoBox a.prodLink.GridItemLink')
    );

    $qry->delete();
    $TEST++;

} while(eval { $mech->follow_link(class => 'jump next') } && $TEST …
Run Code Online (Sandbox Code Playgroud)

perl

17
推荐指数
3
解决办法
1万
查看次数

嵌套子例程和Perl中的作用域

我现在写Perl很长一段时间了,总是发现新的东西,我只是碰到了一些有趣的东西,我没有解释它,也没有在网上找到它.

sub a {
   sub b {
     print "In B\n";
   }
}
b();
Run Code Online (Sandbox Code Playgroud)

为什么我可以b()从外部调用它并且它有效?

我知道这是一个不好的做法,我不这样做,我使用闭合等这些情况,但只是看到了.

perl scope nested subroutine

17
推荐指数
3
解决办法
4673
查看次数

Perl Switch声明

如果没有匹配的案例块,有没有办法运行代码块?例如:

switch($a) {

  case // {}
  case // {}
  ...
  # DO SOMETHING IF NONE OF THE ABOVE CASES WERE MATCHED
}
Run Code Online (Sandbox Code Playgroud)

else 不是我想要的,因为它只适用于最后一个案例块.

perl case switch-statement conditional-statements

16
推荐指数
4
解决办法
5万
查看次数

Qt WebKit和永久Cookie

我有一个主窗口,其中有一个QWebView.我希望将某个网站(例如www.kdkdkkd.com)永久保留,因此每次用户关闭并重新打开浏览器时,他都不需要再次登录.

谢谢,

c++ cookies qt webkit qwebview

16
推荐指数
1
解决办法
9097
查看次数

手动安装Perl模块

我已下载模块Digest::SHA1并将其解压缩到目录(../Digest-SHA1-2.13/),然后将所有SHA1.*文件复制到(../Digest-SHA1-2.13/Digest)

在perl脚本中,我做了:使用Digest :: SHA1; 像这样启动脚本:

perl -I ../Digest-SHA1-2.13/Digest perlscriptname.pl
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Can't locate loadable object for module Digest::SHA1 in @INC
Run Code Online (Sandbox Code Playgroud)

我假设它与共享库(*.so)有关,我不知道如何从这里继续.

我可以使用CPAN(-MCPAN)模块直接安装它,因为我没有权限在该服务器上执行此操作,并且只能在本地安装(应用程序运行的地方).我的最终目标是使用Algorithm::CouponCode哪个依赖于Digest::SHA1

奇怪的部分是,我已经Digest::SHA1安装(perl -MDigest::SHA1 -e 'print $Digest::SHA1::VERSION'显示版本2.11),仍然Algorithm::CouponCode(安装方式与我做的相同Digest::SHA1)抱怨它可以找到它@INC

谢谢!

perl perl-module

14
推荐指数
2
解决办法
4万
查看次数

Perl正则表达式在if语句中[语法]

到目前为止,如果我想将几个正则表达式和if语句组合在一起,我就是这样做的:

my $data =...
if ( $data =~ m/regex/ && $data =~ m/secondregex/ ) {...}
Run Code Online (Sandbox Code Playgroud)

是否有快捷方式(我确信有,它的Perl!)以避免重复$ data,例如:

if ( $data =~ m/regex/ && m/secondregex/ ) {..}
Run Code Online (Sandbox Code Playgroud)

??

谢谢,

regex syntax perl

13
推荐指数
3
解决办法
5万
查看次数

Moose OOP还是标准Perl?

我正在为一个网站编写一些抓取工具,我的想法是该网站将使用一些后端Perl脚本从其他网站获取数据,我的设计(以非常抽象的方式......)将是写的一个包,让我们说:

package MyApp::Crawler::SiteName
Run Code Online (Sandbox Code Playgroud)

其中站点名称将是用于爬网特定站点的模块/包,我显然将有其他包将在不同模块之间共享,但这里不相关.

无论如何,长短,我的问题是:为什么(或为什么不...)我应该更喜欢Moose而不是标准的OO Perl?

谢谢,

oop perl moose

13
推荐指数
2
解决办法
1445
查看次数