标签: perl-module

如何使用DBIx :: Class进行子选择?

我从DBIx :: Class开始,我有一个想要在DBIx :: Class中的子选择,但我感到困惑,无法构建代码.

我的MySQL选择是这个:

Select name from tblCategory where id = (
    Select id from tblCategory where id = (
         Select id from tblRadio where name = "RFM"
    )
);
Run Code Online (Sandbox Code Playgroud)

我读到DBIx :: Class不支持subselect; 真的吗?如果是这样,你在这样的情况下做了什么?

perl perl-module dbix-class

4
推荐指数
1
解决办法
3130
查看次数

为什么模块本身编译但在从其他地方使用时会失败?

我有一个Perl模块似乎可以自行编译,但是在包含它时导致其他程序编译失败:

me@host:~/code $ perl -c -Imodules modules/Rebat/Store.pm
modules/Rebat/Store.pm syntax OK
me@host:~/code $ perl -c -Imodules bin/rebat-report-status
Attempt to reload Rebat/Store.pm aborted
Compilation failed in require at bin/rebat-report-status line 4.
BEGIN failed--compilation aborted at bin/rebat-report-status line 4.
Run Code Online (Sandbox Code Playgroud)

前几行rebat-report-status

...
3 use Rebat;
4 use Rebat::Store;
5 use strict;
...
Run Code Online (Sandbox Code Playgroud)

perl perl-module

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

如何使用自己编译的Perl中的供应商打包模块?

我的OS-Distribution提供了rpm-package"perl-obexftp",它安装了Modul"OBEXFTP".这些是文件:

/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/OBEXFTP.pm
/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/auto/OBEXFTP
/usr /lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/auto/OBEXFTP/.packlist
/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/auto/OBEXFTP/ OBEXFTP.bs
/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/auto/OBEXFTP/OBEXFTP.so
/var/adm/perl-modules/obexftp

我现在正在使用我从源代码构建的Perl.有没有一种简单的方法可以使这个OBEXFTP模块可以访问我的Perlinstallation?

perl perl-module

4
推荐指数
1
解决办法
205
查看次数

是否有一个perl模块可以启动进程并将三个主I/O句柄返回到该进程?

在perl中,我经常需要运行子进程,向它发送一些输入,然后读取它的输出.有许多模块可以执行此操作,但它们似乎都要求您传入预先存在的变量,然后由函数修改以包含文件句柄.以下是IPC :: Open3概要中的一个示例:

my ($wtr, $rdr, $err);
use Symbol 'gensym'; $err = gensym;
$pid = open3($wtr, $rdr, $err,
                'some cmd and args', 'optarg', ...);
Run Code Online (Sandbox Code Playgroud)

当我不得不一遍又一遍地做这种模式时,这种模式会变得有点烦人,特别是因为它涉及一堆我需要记住或查找的位置参数.是否有任何模块提供一个功能(让我们称之为myopen3),如下所示?

my ($wtr, $rdr, $err) = myopen3('some cmd and args', 'optarg', ...);
Run Code Online (Sandbox Code Playgroud)

或者它可以返回相关句柄的哈希或hashref:

my $process = myopen3('some cmd and args', 'optarg', ...);
$process->{STDIN}->print("Some input");
my $output = $process->{STDOUT}->readline;
Run Code Online (Sandbox Code Playgroud)

这样的功能的优点是,myopen3称为以完全相同的方式内置的system(尽管不希望一些怪癖)避免,并且在返回散列或hashref,位置参数的情况下,和返回值.(另外,如果模块作者后来决定也返回pid和有关进程的其他信息,那么可以在保持向后兼容性的同时完成.)

我实际上自己实现了这个(使用简单的OO接口),但如果CPAN模块存在同样的事情,我宁愿不依赖我自己的自定义模块.

我到目前为止发现的最接近是IPC :: RunSession ::简单,它与返回的对象readerwriter方法.但是,该reader方法合并子进程的STDOUT和STDERR,而我希望选择将它们分开.

perl subprocess coding-style perl-module filehandle

4
推荐指数
1
解决办法
92
查看次数

Perl模块安装

我正在尝试安装名为:File-Copy-Recursive的Perl模块,我遵循以下步骤:

1)打开cmd.exe 2)perl -MCPAN -e'install File :: Copy :: Recursive;'

我收到消息"看起来你没有C编译器并安装实用程序.尝试使用Perl软件包管理器安装dmake和MinGW gcc编译器.这可能需要几分钟......"

"下载ActiveState包存储库packlist ...失败500无法连接到ppm4.activestate.com:80(连接:超时).下载文件复制 - 递归包列表...未找到ppm.bat安装失败:无法找到任何提供MinGW的软件包"

这些失败是因为我在代理后面,我知道代理设置,但我不知道如何在这种情况下应用它们.

是否有人知道此解决方案的任何替代修复?

谢谢.

perl perl-module

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

如何解析电子邮件内容

如何将电子邮件解析为标题,正文,附件以及发件人和收件人等部分?我想使用Perl或Perl Moose?

email perl cpan perl-module

4
推荐指数
1
解决办法
6457
查看次数

perlmod问题

perlmod/Perl模块的示例中,有一个BEGIN块.我查看了一些模块,但这些模块都没有BEGIN.BEGIN在编写模块时我应该使用这样的块还是可有可无?

perl perl-module

4
推荐指数
1
解决办法
84
查看次数

有没有办法通过我的Perl程序中的命令行开关启用/禁用Smart :: Comments?

我想在我的Perl程序中启用/禁用使用模块Smart :: Comments的注释.我通过提供--verbose开关作为命令行选项列表的一部分,玩弄了这样做的想法.当设置此开关时,我正在考虑启用Smart :: Comment模块,如下所示:

#!/usr/bin/perl

use Getopt::Long;
use Smart::Comments;

my $verbose = 0;
GetOptions ('verbose' => \$verbose);

if (! $verbose) {
  eval "no Smart::Comments";
}
### verbose state: $verbose
Run Code Online (Sandbox Code Playgroud)

然而,这对我不起作用.它似乎与Smart :: Comments本身的工作方式有关,所以我怀疑我试图用eval"no ..."位来禁用模块的方式.有人可以给我一些指导吗?

perl perl-module

4
推荐指数
1
解决办法
465
查看次数

安装XML :: Parser需要expat.h

我正在开发一个项目,需要将所有第三方(读取:CPAN)perl模块安装在perforce存储库中,这样任何依赖于它们的代码都可以成功运行,而无需其他人手动安装它们.我在尝试安装XML :: Parser时遇到了一个问题.我使用cpanminus来安装我的CPAN模块,所以我cpanm -L . XML::Parser在所需的目录中运行(之前已经使用过其他模块)并得到错误:

Expat.xs:12:19: error: expat.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我习惯使用Ubuntu和apt-get,但在工作中我必须使用RedHat,我不知道如何将expat安装到本地目录.我跑了yum search expat,得到了

expat.i386 : A library for parsing XML.
expat.x86_64 : A library for parsing XML.
Run Code Online (Sandbox Code Playgroud)

所以我尝试yum install --installroot=. expat.i386了以下错误:

Loaded plugins: rhnplugin, security
error: cannot open Packages index using db3 - No such file or directory (2)
error: cannot open Packages database in ./var/lib/rpm
Traceback (most recent call last):
  File "/usr/bin/yum", line 29, in ?
    yummain.user_main(sys.argv[1:], exit_code=True)
  File …
Run Code Online (Sandbox Code Playgroud)

perl cpan perl-module yum

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

如何在Perl中使用模块

伙计们真的很困惑如何使用我刚安装在Perl中的模块.

我在Perl中安装了Corelist模块.我想显示Perl 5.006附带的所有模块.但是通过使用我不理解的代码有一个暗示:

my %modules = %{ $Module::CoreList::version{5.006} };
Run Code Online (Sandbox Code Playgroud)

但是当我这样做的时候

#! usr/bin/perl
use warnings;
use strict;

my %modules = %{$Module::CoreList::version{5.006}};

print %modules;
Run Code Online (Sandbox Code Playgroud)

它给出了这个错误:Module::CoreList::version used only once.我也尝试过 use Module::CoreList;仍然没有运气

perl perl-module

4
推荐指数
1
解决办法
317
查看次数

标签 统计

perl ×10

perl-module ×10

cpan ×2

coding-style ×1

dbix-class ×1

email ×1

filehandle ×1

subprocess ×1

yum ×1