小编Bra*_*ert的帖子

调用字符串"a?c"的正则表达式无效?

在我的用户模型中,我有一个名为"nickname"的属性,并且如此验证:

validates_format_of:nickname,:with =>/[a-zA-Z0-9] $/,: allow_nil => true

但是,它目前正在使此字符串传递为有效:

一个2 C

我只想接受字母数字字符串 - 有谁知道为什么我的正则表达式失败了?如果有人能提出更好的正则表达,我全都听见了.

regex validation

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

为什么@my_array = undef有一个元素?

@my_array = undef;
if (@my_array ) {  
    print 'TRUE'; 
} else {
    print 'FALSE';
}
Run Code Online (Sandbox Code Playgroud)

这将打印 TRUE

为什么数组有元素?

arrays perl

4
推荐指数
3
解决办法
2283
查看次数

为什么安装某些CPAN模块需要root权限?

我需要在linux盒子里安装一些CPAN模块,我没有root权限.

安装Spreadsheet::WriteExcel进行得相当顺利.但尝试安装File::Find::Rule失败,警告"您没有安装到.....的权限",并提示"您可能必须su到root才能安装软件包"

我很困惑为什么有些CPAN模块安装需要root权限,而有些则不需要root权限?如果我真的想File::Find::Rule在linux框中使用,我可以选择任何解决方案吗?

谢谢.

perl cpan

4
推荐指数
3
解决办法
6475
查看次数

Greenspun在Perl的第10条规则?

Greenspun的第十条规则是计算机编程中的常见格言,特别是编程语言圈.它指出:

任何足够复杂的C或Fortran程序都包含一个特殊的,非正式指定的,错误缠身的,一半Common Lisp的缓慢实现.

问题是,

  1. 你会认为Perl翻译是真的吗?只有客观论点(例如Common Lisp的哪些功能在解释器中实现)

  2. 独立地,是否存在完全在Perl中实现的Lisp(或者至少是一个临时的,非正式指定的,错误驱动的,一半Common Lisp的慢实现)?

lisp perl programming-languages

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

Template-Toolkit和复杂变量

假设我使用Catalyst在Perl中工作.我为一个变量分配了一个哈希数组,即:

my @array = ($some_hash); 
$c->stash->{foo}->{bar} = \@array;
Run Code Online (Sandbox Code Playgroud)

如何在Template Toolkit中从$ some_hash中选择元素,例如'id' ?在Perl我可以通过$c->stash->{foo}->{bar}->[0]->id... 访问它

非常感谢所有的帮助,我有点像Perl newb,所以如果有什么不合适的地方,请告诉我.提前致谢...

perl catalyst template-toolkit

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

编写C#(.NET)或PERL文件的速度更快?

我们有很多旧的遗留Perl脚本,它们连接到MS SQL db进程的一些记录和make文件.随着时间的推移,每日交易规模增加,这些脚本变得越来越昂贵.

此外,数据库随着越来越多的表而增长,修改旧的Perl脚本非常麻烦.正在考虑重做.NET下的一些主要脚本(在C#中)

在运行Windows Server的机器上使用一个与另一个相比,是否有速度优势?

这个想法再一次

  1. 执行查询

  2. 通过一些基本格式处理结果

  3. 将结果写入文件

.net c# perl performance file-writing

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

从Native指针中获取数据

将数据导入Perl 6 Native指针并不是什么大不了的事:

sub memcpy( Pointer[void] $source, Pointer[void] $destination, int32 $size ) is native { * };
my Blob $blob = Blob.new(0x22, 0x33);
my Pointer[void] $src-memcpy = nativecast(Pointer[void], $blob);
my Pointer[void] $dest-memcpy = malloc( 32 );
memcpy($src-memcpy,$dest-memcpy,2);
my Pointer[int] $inter = nativecast(Pointer[int], $dest-memcpy);
say $inter; # prints NativeCall::Types::Pointer[int]<0x4499560>
Run Code Online (Sandbox Code Playgroud)

但是,我认为没有办法让它们脱离Pointer[int]另一个而不是创建一个函数来完成它,因为它nativecast显然是在相反的方向上工作,或者至少不是在向非本地类型转换的方向(这应该是显而易见的名称).你会怎么做?

更新:例如,使用数组会使其更加可行.然而

my $inter = nativecast(CArray[int16], $dest);
.say for $inter.list;
Run Code Online (Sandbox Code Playgroud)

这有效,但会产生错误: Don't know how many elements a C array returned from a library

更新2:继克里斯托夫的回答(谢谢!)之后,我们可以对此进行更多细化,然后我们将这些值重新纳入 …

perl6 nativecall

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

如何在mod_perl中添加特定于脚本的lib路径?

我正在尝试将CGI脚本迁移到mod_perl使用ModPerl::Registry.

脚本使用与脚本位于同一目录中的模块,但由于mod_perl当前目录位于其他位置,因此不起作用.

我尝试使用FindBin添加到@INC,但这是FindBin看起来像:

$FindBin::Bin: /usr/sbin
$FindBin::Script: httpd
Run Code Online (Sandbox Code Playgroud)

这完全没用.

那么,有没有办法让脚本找出它的位置,并将该目录添加到@INC?理想情况下,使用相同Apache服务器的所有其他脚本都不会将该目录添加到其中@INC.

apache perl mod-perl mod-perl-registry

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

如何消除Perl舍入错误

考虑以下程序:

$x=12345678901.234567000;
$y=($x-int($x))*1000000000;
printf("%f:%f\n",$x,$y);
Run Code Online (Sandbox Code Playgroud)

这是什么是印刷品:

12345678901.234568:234567642.211914

我在期待:

12345678901.234567:234567000

这似乎是Perl中的某种舍入问题.
我怎么能改变它来234567000取而代之?
我做错什么了吗?

perl rounding

3
推荐指数
2
解决办法
3153
查看次数

不能使用字符串作为哈希引用..?

我正在尝试为Web索引程序解析HTML文档.为此,我使用HTML :: TokeParser.

我在第一个if语句的最后一行收到错误:

 if ( $token->[1] eq 'a' ) {
     #href attribute of tag A
     my $suffix = $token->[2]{href};
Run Code Online (Sandbox Code Playgroud)

说的是 Can't use string ("<./a>") as a HASH ref while "strict refs" in use at ./indexer.pl line 270, <PAGE_DIR> line 1.

我的问题是(后缀?或<./a>?)是一个字符串,需要变成一个哈希引用?我查看了其他有类似错误的帖子..但我仍然不能确定这一点.谢谢你的帮助.

sub parse_document {

    #passed from input
    my $html_filename = $_[0];

    #base url for links
    my $base_url = $_[1];

    #created to hold tokens
    my @tokens = ();

    #created for doc links
    my @links = (); …
Run Code Online (Sandbox Code Playgroud)

perl indexer

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