小编Cha*_*ens的帖子

在Moose中创建类属性的最佳方法是什么?

我需要Moose中的class属性.现在我说:

#!/usr/bin/perl

use 5.010;
use strict;
use warnings;
use MooseX::Declare;

class User {
    has id      => (isa => "Str", is => 'ro', builder => '_get_id');
    has name    => (isa => "Str", is => 'ro');
    has balance => (isa => "Num", is => 'rw', default => 0);

    #FIXME: this should use a database  
    method _get_id {
        state $id = 0; #I would like this to be a class attribute
        return $id++;
    }
}

my @users;
for my $name (qw/alice bob charlie/) …
Run Code Online (Sandbox Code Playgroud)

perl moose

12
推荐指数
1
解决办法
1194
查看次数

为什么`$ @`不值得信任?

我似乎记得,相信之后的价值是不安全$@eval.关于信号处理程序$@在你看到它之前有机会设置的东西.我现在也太累了,懒得追查真正的原因.那么,为什么信任不安全$@呢?

perl eval exception race-condition

12
推荐指数
3
解决办法
1055
查看次数

你为什么要分配给$$?

perldoc perl5150delta 说:

   $$ can be assigned to
       $$ was made read?only in Perl 5.8.0.  But only sometimes: "local $$"
       would make it writable again.  Some CPAN modules were using "local $$"
       or XS code to bypass the read?only check, so there is no reason to keep
       $$ read?only.  (This change also allowed a bug to be fixed while
       maintaining backward compatibility.)
Run Code Online (Sandbox Code Playgroud)

$$ 是当前的进程ID,为什么你会分配给它?

perl

12
推荐指数
1
解决办法
286
查看次数

我在哪里可以将Identity-H编码字符映射到ASCII或Unicode字符?

我有一个由第三方生成的PDF.我试图从中获取文本,但是pdf2text复制和粘贴都不会产生可读文本.在对输出(两个中的任何一个)进行一点挖掘之后,我发现屏幕上的每个字符都由三个字节组成.例如,"A"是字节ef,8181.查看PDF上的元数据,它声称在Identity-H中编码,所以我假设我看到的是一组用Identity-H编码的字符.我有一个基于我已经拥有的文档的部分映射,但我想做一个更完整的映射.要做到这一点,我需要像Identity-H的ASCII表.

pdf unicode encoding text character-encoding

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

Perl 5中字符串和数字之间的差异何时重要?

如果Perl 5中的字符串通过looks_like_number,它也可能是一个数字.例如,

my $s = "10" + 5;
Run Code Online (Sandbox Code Playgroud)

结果$s被分配15.

是否有任何情况下字符串的行为与其数字等价物不同?

string perl numbers

10
推荐指数
3
解决办法
428
查看次数

什么是迫使Perl 5在OS X上快速耗尽内存的好方法?

我想测试是否会只发生在特定的条件perl有一个malloc是失败,因为那里是没有的记忆里留下来.我想perl尽快死去.我认为禁食的方式是创建一些巨大的数组

perl -le '$_->[100_000_000_000] = 1 for \(@a, @b, @c, @d); <>'

但是在我的交换达到5演出之后我不得不杀掉它而没有停止的迹象(我在OS X 10.6上).

我刚刚在Linux上进行了测试,它很快就死了:

time perl -le '$_->[1_000_000_000] = 1 for \(@a, @b, @c, @d); <>'
Out of memory!

real    0m0.023s
user    0m0.012s
sys     0m0.008s
Run Code Online (Sandbox Code Playgroud)

所以问题似乎是OS X及其问题dynamic_pager.

我只是试图禁止dynamic_pager使用

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
Run Code Online (Sandbox Code Playgroud)

并重新启动,但机器完全挂起.我的下一次尝试是更改com.apple.dynamic_pager.plist配置文件以将vm文件写入一个非常小的分区.

memory macos perl

9
推荐指数
1
解决办法
280
查看次数

在JavaScript中,空真块是成语吗?

我刚看到代码看起来像这样:

if (foo == "bar"){}else{
}
Run Code Online (Sandbox Code Playgroud)

是否有充分的理由让某人以这种方式写作而不是

if (foo != "bar") {
}
Run Code Online (Sandbox Code Playgroud)

或者我只是在处理一个狂热的疯子(这是我基于代码中其他事情的假设).

javascript

9
推荐指数
2
解决办法
1770
查看次数

为什么打开undef不会失败?

这段代码就像我期望的那样死掉:

use strict;
use warnings;

open my $fh, "<", "" or die $!;
Run Code Online (Sandbox Code Playgroud)

但这不是:

use strict;
use warnings;

open my $fh, "<", undef or die $!;
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

perl undef

9
推荐指数
1
解决办法
122
查看次数

Perl 5中的哈希随机化

当Perl 5.8.1问世时,它添加了散列随机化.当Perl 5.8.2出来时,我想,除非存在环境变量(PERL_HASH_SEED),否则它会删除哈希随机化.现在好像我被严重误认为

PERL_HASH_SEED=$SEED perl -MData::Dumper -e 'print Dumper{map{$_,1}"a".."z"}'
Run Code Online (Sandbox Code Playgroud)

无论价值如何,始终都会重新启动相同的密钥排序$SEED.

哈希随机化完全消失了,我做错了什么,或者这是一个错误?

random perl hash

8
推荐指数
1
解决办法
1463
查看次数

如何为哈希制作病理密钥?

我试图在Perl 5.8.2及更高版本中触发哈希随机化功能.要做到这一点,我需要一组病态的,但随机化功能.我试过用MJD's code,但那没用.而且,现在我看着它,我不应该感到惊讶.它来自1997年,从那时起我们就改变了哈希函数.

有谁知道一组病理键,或者如何生成它们?我想我应该去看哈希函数并反向设计解决方案,但我很懒.

perl hash

8
推荐指数
1
解决办法
157
查看次数