我从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模块似乎可以自行编译,但是在包含它时导致其他程序编译失败:
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) 我的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中,我经常需要运行子进程,向它发送一些输入,然后读取它的输出.有许多模块可以执行此操作,但它们似乎都要求您传入预先存在的变量,然后由函数修改以包含文件句柄.以下是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 ::简单,它与返回的对象reader和writer方法.但是,该reader方法合并子进程的STDOUT和STDERR,而我希望选择将它们分开.
我正在尝试安装名为: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 Moose?
在perlmod/Perl模块的示例中,有一个BEGIN块.我查看了一些模块,但这些模块都没有BEGIN.BEGIN在编写模块时我应该使用这样的块还是可有可无?
我想在我的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 ..."位来禁用模块的方式.有人可以给我一些指导吗?
我正在开发一个项目,需要将所有第三方(读取: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中的模块.
我在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 ×10
perl-module ×10
cpan ×2
coding-style ×1
dbix-class ×1
email ×1
filehandle ×1
subprocess ×1
yum ×1