标签: perl-module

如何使用你编写的perl模块?

我刚刚编写了我的第一个Perl模块,并且无法使用我生成的脚本.以下是我尝试运行使用新创建的模块的脚本时Perl解释器显示的错误.

错误信息:

scraper_tools_v1.pm did not return a true value at getYid.pl line 5.
BEGIN failed--compilation aborted at getYid.pl line 5.
Run Code Online (Sandbox Code Playgroud)

scraper_tools_v1.pm是我编写的Perl模块,getYid.pl是试图利用scraper_tools_v1.pm模块的Perl脚本.

以下是scraper_tools_v1.pm文件的代码:

#!/usr/bin/perl

package scraper_tools_v1;

use strict;
use warnings;
use WWW::Curl::Easy;

# Note this function expects a single parameter which should be in the form of a URL

  sub getWebPage($)
  {
    # Setting up the Curl parameters
    my $curl = WWW::Curl::Easy->new; # create a variable to store the curl object

    # A parameter set to 1 tells the library to …
Run Code Online (Sandbox Code Playgroud)

perl perl-module

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

使用Schedule :: Cron更改预定时间

我在Perl中编写一个需要每晚同时运行的脚本,除非有时需要更改.我在CPAN上找到了Schedule :: Cron,它完成了我想要它做的事情.根据run方法的文档,

nofork => 1

启动调度程序时不要分叉.相反,作业在当前进程中执行.在执行的作业中,您可以完全访问脚本的全局变量,因此可能会影响在不同时间运行的其他作业.

这是我想做的,但它没有做.每当我检查全局变量的内存位置时,它们都是相同的,但是当任务开始时,该值不会更改.

我在Windows和Linux上都运行了这个,我让其他人查看代码,看看我的逻辑是否正确.我需要做些什么来保持对全局变量的更改.

use warnings;
use strict;

use Schedule::Cron;
use Time::localtime;

use constant {
    EVERY_DAY_10PM => '* * * * * 4,16,28,40,52',
    EVERY_DAY_NOON => '* * * * * 0,12,24,36,48',
    EVERY_DAY_2AM => '* * * * * 7,19,31,43,55'
};

############GLOBAL VARIABLES############
our $cron = new Schedule::Cron(\&runUpdate);
our $cronId;
our $updateTimeDirty = 0;
############END GLOBAL VARIABLES############

############MAIN PROGRAM BODY############
$cronId = $cron->add_entry(EVERY_DAY_10PM);#defaults to \&runUpdate
$cron->add_entry(EVERY_DAY_NOON, \&changeTime);
$cron->run(no_fork => 1);
############END MAIN PROGRAM BODY############ …
Run Code Online (Sandbox Code Playgroud)

perl perl-module scheduled-tasks

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

什么是Storable模块用于?

我很难理解是什么Storable.

我知道它将一个变量"存储"到你的磁盘中,但为什么我需要这样做呢?我将使用此模块,我将如何操作?

perl module perl-module storable

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

Archive :: Extract Module在mac os x lion上的perl v5.12.3中发出警告

我正在使用与os x lion捆绑在一起的默认perl发行版(版本5.12.3).当我在带有-W模块的脚本中使用模块Archive :: Extract时,它会发出以下警告:

Subroutine version::declare redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 139.
Subroutine version::qv redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 140.
Subroutine version::vcmp redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 142.
Subroutine version::stringify redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 145.
Subroutine version::("" redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 146.
Subroutine version::new redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 147.
Subroutine version::parse redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 148.
Subroutine UNIVERSAL::VERSION redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 194.
Name "IPC::Cmd::I18N::en::Lexicon" used only once: possible typo at /Library/Perl/Updates/5.12.3/Locale/Maketext.p\
m line 444.
Name "Archive::Extract::I18N::en::Lexicon" used only once: possible typo …
Run Code Online (Sandbox Code Playgroud)

perl perl-module osx-lion

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

Perl`use` - import不会被调用两次?

怀疑perl基础知识 use

它有点类似于我的其他问题Perl:同一文件中的两个包...

考虑一个perl脚本:

Script.pl

use INCLUDES;
Run Code Online (Sandbox Code Playgroud)

INCLUDES.pm

package INCLUDES;
use Exporter;

############# MY DOUBT STARTS HERE ###############
use Module1;
use Module2;
##################################################

our @ISA = qw(Exporter);
our @EXPORT = qw();

sub import {

  print 'INCLUDES imported to ' . caller . "\n";

}
Run Code Online (Sandbox Code Playgroud)

Module1.pm

package Module1;

use strict;
use Exporter;
use INCLUDES;    #####=> INCLUDES.pm 'use'd

our @ISA = qw(Exporter);
our @EXPORT = qw();

1;
Run Code Online (Sandbox Code Playgroud)

Module2.pm

package Module2;

use strict;
use Exporter;
use INCLUDES;  #####=> INCLUDES.pm 'use'd

our @ISA …
Run Code Online (Sandbox Code Playgroud)

perl perl-module package

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

使用App :: Fatpacker使用Log :: Log4perl是否可以使用fatpack脚本?

我尝试使用来自App :: Fatpacker模块的fatpack实用程序来胖我的Perl脚本(在运行Perl 5.20的CentOS 6.6 64位上).我的脚本使用Log :: Log4perl模块进行日志记录.fatpack实用程序抱怨记录模块:

fatpack trace collect_genomes_to_database.pl
collect_genomes_to_database.pl syntax OK
fatpack packlists-for `cat fatpacker.trace` >packlists
Can't locate object method "new" via package "Log::Log4perl::Appender" at ~/perl5/lib/perl5/Log/Log4perl/Logger.pm line 33.
Compilation failed in require at ~/perl5/lib/perl5/Log/Log4perl/Config.pm line 8.
BEGIN failed--compilation aborted at ~/perl5/lib/perl5/Log/Log4perl/Config.pm line 8.
Compilation failed in require at ~/perl5/lib/perl5/Log/Log4perl/Appender.pm line 9.
BEGIN failed--compilation aborted at ~/perl5/lib/perl5/Log/Log4perl/Appender.pm line 9.
Compilation failed in require at ~/perl5/lib/perl5/App/FatPacker.pm line 149.
BEGIN failed--compilation aborted at ~/perl5/bin/fatpack line 3.
Run Code Online (Sandbox Code Playgroud)

有人成功打包包含Log :: Log4perl的脚本还是不可行?

你能建议一些制作自包含脚本的方法吗?

perl logging perl-module

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

Perl REST客户端,身份验证问题

我使用Perl 5.16与REST::ClientGET进行REST调用,但它显示错误401身份验证问题.我不清楚如何解决这个问题.

use REST::Client;
use JSON;
use Data::Dumper;
use MIME::Base64;

my $username = 'test';
my $password = 'test';

my $client = REST::Client->new();
$client->setHost('http://myurl');

my $headers = {
    Accept        => 'application/json',
    Authorization => 'Full' . encode_base64($username . ':' . $password)
};
$client->GET('folder/file', $headers);

print $client->responseCode();
print $client->responseContent();
Run Code Online (Sandbox Code Playgroud)

rest perl perl-module perl5.16

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

在子例程中通过引用操作Perl对象

我有一个Perl程序和包WorkerLog.

Worker几乎完成所有计算,我想通过引用Worker子例程以及一些其他参数(标量和数组)来传递一个对象.我曾见过这样的例子这个这个.

他们通过放入子@_,然后操纵对象来处理这个问题.我也找到了一种通过使用索引来操纵它们的方法,比如@{$_[i]}.问题是,当我尝试这样的代码时,我收到一个错误: Can't call method "write" on unblessed reference at ...

代码片段如下.

主要:

use strict;
use warnings;
use Log;
use Worker;

my $log = Log->new();
my $worker = Worker->new();
my $scalar = "SomeURLhere";
my @array = ('red','blue','white');

# I do some stuff with $log object
#...
# Now I want to pass data to the Worker
$worker->subFromWorker($scalar, \$log, \@array);
Run Code Online (Sandbox Code Playgroud)

工人:

use strict;
use warnings;
package Worker;

sub …
Run Code Online (Sandbox Code Playgroud)

perl reference perl-module object subroutine

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

如何在Ubuntu中一次安装所有perl模块

我想在Ubuntu中一次安装所有可用的perl模块.这样的事情可能吗?

installation ubuntu perl perl-module

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

比较日文字符的问题

我正在努力HTML::TokeParser 解析包含日文字符的HTML文档.

这是我的代码:

use utf8;

use Encode qw(decode encode is_utf8);
use Encode::Guess;
use Data::Dumper;
use LWP::UserAgent;
use HTTP::Cookies;
use Cwd;
use HTML::TokeParser;

my $local_dir = getcwd;

my $browser = LWP::UserAgent->new();

my $cookie_jar = HTTP::Cookies->new(
   file     => $local_dir . "/cookies.lwp",
   autosave => 1,
);

$browser->cookie_jar( $cookie_jar );

push @{ $browser->requests_redirectable }, 'POST';
$browser->requests_redirectable;

my $response = $browser->get("http://www.yahoo.co.jp/");
my $html = $response->content;
print $html;
utf8::decode($html);

my $p = HTML::TokeParser->new( \$html );

# dispatch table with subs to handle the different types …
Run Code Online (Sandbox Code Playgroud)

unicode perl perl-module collation utf-8

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