标签: perl-module

使用WWW :: Mechanize在<td>标记内获取<a>时获取<td>文本

我是Perl-HTML的新手.我正在尝试从HTML表中获取文本和链接.

这是HTML结构:

<td>Td-Text
    <br>
    <a href="Link-I-Want" title="title-I-Want">A-Text</a>
</td>
Run Code Online (Sandbox Code Playgroud)

我已经发现WWW :: Mechanize是从<a>部件中获取所需内容的最简单模块,但我不知道如何从中获取文本<td>.我希望这两个任务背靠背发生,因为我需要将每个单元<td>-Text与其对应<a>-Text的哈希数组配对.

任何帮助都感激不尽!

Z.Zen

perl perl-module html-parsing

2
推荐指数
1
解决办法
1924
查看次数

Perl扩展安装 - 无法运行nmake

我正在尝试在XAMPP上使用cpan安装模块.我正在运行Windows 7.

在给出此提示后立即:

CPAN.pm:要构建J/JE/JESSE/HTTP-Server-Simple-0.43.tar.gz

它提示"找不到所需的nmake可执行文件,并尝试获取它.

在此之后,会出现一个弹出窗口,指出由于与64位版本的Windows不兼容,程序"\ ??\c:\ xampp\perl\bin\Nmake15.exe无法运行".

我下载了VC++并将make.exe从该安装复制到我的perl/bin中以替换原来的make.exe.这仍然无效.知道如何使用CPAN进行安装吗?

perl nmake makefile perl-module

2
推荐指数
1
解决办法
2015
查看次数

帮助在Perl中传递对class子例程的引用

我试图将例程传递给Perl模块中的另一个子例程.但是当我传递子引用时,传入的ref不再具有对象数据.也许它不可能这样做.我有一个问题的行是下面的"除非"行:

sub get_flag_end {
   my $self = shift;
   return ( -e "$self->{file}" );
}

sub wait_for_end {
   my $self = shift;
   my $timeout = shift;
   my $poll_interval = shift;

   # Is it even possible to pass the oject subroutine and retain the objects data?
   #unless ( $self->timeout( $timeout, $poll_interval, $self->get_flag_end ) ) { # does not work
   unless ( $self->timeout( $timeout, $poll_interval, \&get_flag_end ) ) {       # call happens but members are empty
      die "!!!ERROR!!! Timed out while waiting for …
Run Code Online (Sandbox Code Playgroud)

perl perl-module pass-by-reference

2
推荐指数
1
解决办法
2899
查看次数

在Perl中给出另一个模块中的函数的引用

我想在Perl中使用Tk创建一个小GUI,它将有2个按钮:RaceQuit.

我希望Race按钮能够运行位于模块中的函数Car并被调用Race.

我写了以下代码:

#!/usr/bin/perl -w

use strict;
use warnings;
use Car;
use Tk;

my $mw = MainWindow->new;
$mw->Label(-text => "The Amazing Race")->pack;
$mw->Button(
        -text    => 'Race',
        -command => sub {Car->Race()},
)->pack;
$mw->Button(
        -text    => 'Quit',
        -command => sub { exit },
)->pack;
MainLoop;
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是对我来说,制作一个只能调用另一个子程序的未命名子程序似乎很愚蠢.但是当我试图使用它-command => sub Car->Race(),-command => sub \&Car->Race(),它没有工作.

我明白这是因为我没有传递对函数的引用.如何将引用传递给位于另一个命名空间(模块)中的函数?

perl tk-toolkit reference perl-module

2
推荐指数
1
解决办法
1163
查看次数

Perl中的多级"做"?

这个问题可能看起来很简单,但过去几天我在考虑这个问题,我找不到答案.

我有多级脚本架构(代码如下所示)

CallingScript.pl(包含toplevel库并检查编译器错误)

do "IncludesConsumer.pm";

print "\n callingScript error : $@" if($@ || $!);

do "IncludesConsumer.pm";

print "\n callingScript error : $@" if($@);

do "IncludesConsumer.pm";

print "\n callingScript error : $@" if($@);
Run Code Online (Sandbox Code Playgroud)

IncludesConsumer.pm(添加库INCLUDES.pm并具有自己的功能)

do "INCLUDES.pm";

print "\nin IncludesConsumer";
Run Code Online (Sandbox Code Playgroud)

INCLUDES.pm(一个地方有多个模块,充当库)

use Module;

print "\n in includes";
Run Code Online (Sandbox Code Playgroud)

Module.pm(语法错误)

use strict;

sub MakeSyntaxError
{
    print "\nerror in Module 
}

1;
Run Code Online (Sandbox Code Playgroud)

在概念上,一旦核心模块(例如Module.pm)可能包含语法错误.所以我需要在CallingScript.pl中捕获它们.即:我想捕获文件中的Module.pm(低级)语法错误CallingScript.pl.

OUTPUT:

D:\Do_analysis>CallingScript.pl

in IncludesConsumer
in IncludesConsumer
in IncludesConsumer
Run Code Online (Sandbox Code Playgroud)

为什么编译器错误没有被CallingScript.pl捕获?请倾注你的想法.

谢谢!

perl perl-module

2
推荐指数
1
解决办法
86
查看次数

我的Perl脚本启动太慢,包含许多模块 - 我可以预先编译它吗?

我有一个Perl脚本,其中包含一些自定义Perl模块.

我已经使用了脚本来描述Devel::NYTProf,我可以看到包含这些Perl模块的成本我希望最小化.

我已经安装PAR::Packer并编译了我的脚本以使其独立,但它不包括自定义Perl模块.

有什么建议?

编辑:

我需要预先编写脚本,以便每次引发时都不包含编译开销.

perl performance perl-module

2
推荐指数
1
解决办法
1258
查看次数

Perl模块将字符串编号2.4E + 04转换为数字

我正在解析一个包含少量数字的文件,标记为2.4E + 04.

我发现模块Data :: Str2Num非常适合我的需求Activeperl没有将它编译为5.16,仅用于5.8并且我受限于使用来自Activeperl的5.16,因为它是完全相同的生产版本(我不能使用) ppm以外的任何东西).

有没有像Data :: Str2Num这样的模块在新版本中做同样的事情

更新:

在脚本中你可以做到 my $value = "2.4E+04" + 0;

perl perl-module

2
推荐指数
1
解决办法
165
查看次数

使用Text :: CSV从CSV中检索第一行作为标题

我觉得我错过了一些相当明显的东西,但在文档中找不到任何答案.对于使用Perl的OOP来说仍然是新手,但我正在使用Text :: CSV来解析CSV以供日后使用.

我将如何提取第一行并将值推送到数组@headers?

这是我到目前为止所拥有的:

#!/usr/bin/perl
use warnings;
use diagnostics;
use strict;
use Fcntl ':flock';
use Text::CSV;

my $csv = Text::CSV->new({ sep_char => ',' });
my $file = "sample.csv";
my @headers;        # Column names

open(my $data, '<:encoding(utf8)', $file) or die "Could not open '$file' $!\n";
while (my $line = <$data>) {
  chomp $line;

  if ($csv->parse($line)) {             
    my $r = 0;      # Increment row counter
    my $field_count = $csv->fields();       # Number of fields in row

    # While data exists...
    while (my …
Run Code Online (Sandbox Code Playgroud)

csv perl perl-module

2
推荐指数
1
解决办法
9241
查看次数

无法安装perl模块Crypt :: TEA

当我尝试在Windows 7上将Crypt :: TEA模块安装到perl 5.18时,显示错误:

TEA.xs:在函数'XS_Crypt__TEA_crypt'中:TEA.xs:58:9:错误:无效使用void表达式

windows perl perl-module xs perl5.18

2
推荐指数
1
解决办法
165
查看次数

查找文件夹和子文件夹中的文件

next if $file eq '.' $file eq '..';用来在目录和子目录中找到该文件(少数目录除外)并打开文件进行查找和替换.但是当我在文件夹名称中有点时,它会将文件夹视为文件并说无法打开.我使用-f过滤了文件但是它丢失了以显示主文件夹中的文件.

是否有任何递归方式来查找文件夹和文件,即使它有点.

opendir my $dh, $folder or die "can't open the directory: $!";

while ( defined( my $file = readdir( $dh ) ) ) {

    chomp $file;

    next if $file eq '.' $file eq '..';

    {
        if ( $file ne 'fp' ) {

            print "$folder\\$file";

            if ( $file =~ m/(.[^\.]*)\.([^.]+$)/ ) {
                ...
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

perl perl-module

2
推荐指数
1
解决办法
1246
查看次数