我正在寻找具有以下属性的Perl字符串校验和函数:
$string)$hash),0 <= $hash <= 2^32-1保持(0到4294967295,匹配4字节MySQL unsigned int的大小)伪代码:
sub checksum {
my $string = shift;
my $hash;
... checksum logic goes here ...
die unless ($hash >= 0);
die unless ($hash <= 4_294_967_295);
return $hash;
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,校验和函数应该快速运行,并且应该在目标空间(0.. 2^32-1)中稍微均匀地生成值以避免冲突.在这个应用程序中随机碰撞是完全非致命的,但显然我想在可能的范围内避免它们.
鉴于这些要求,解决这个问题的最佳方法是什么?
我已经从源代码安装了Perl到/ usr/local,并相应调整了我的路径,遵循brian d foy的建议.
我确定我错过了一些东西,但是,现在我正在尝试用'cpan'命令安装东西而且它失败了,因为它无法写入/ usr/local.我必须使用sudo,这对我来说感觉不对.CPAN的东西应该去另一个地方吗?必须使用sudo是正常的吗?
我最近尝试在我的手机(诺基亚n900)上升级一些Perl模块,并安装最新版本的Module::Build一小时.
大多数情况下(70%)似乎花费在解析和索引存储库信息上.
似乎有一些选项,例如每次都不重建索引缓存,或者使用CPAN :: SQLite.
我想继续在设备上使用CPAN,而不是手动安装模块.所以我想知道人们在类似的有限资源设备上取得了哪些成功(缓慢的CPU,有限的RAM,慢速磁盘(闪存))?
我正在使用DBI和DBD :: SQLite,现在我想使用SQLite的R*Tree功能.由于此功能不是由DBD :: SQLite的默认编译,我有一个添加-DSQLITE_ENABLE_RTREE=1到@CC_DEFINE在DBD :: SQLite的的Makefile.PL变量.如果我做'perl Makefile.PL && make && make install',一切都在我的机器上本地工作正常,但最终需要可部署/可分发给最终用户.
在这样的情况下我该怎么办?我应该复制源代码,grep源代码,并创建一个DBD :: SQLite :: WithRTree吗?创建DBD :: SQLite 1.31.1的私有版本(其中1.31是DBD :: SQLite的当前版本)?或许更好的方式呢?
项目中的所有其他发行版都通过非公共CPAN :: Mini镜像+ CPAN :: Mini :: Inject进行部署/分发.
我最近查看了DBIx :: Class的源代码,发现我不理解一件事(虽然我在尝试时掌握了几个技巧).
所以我的问题是:对于想要学习的人,以及以什么顺序阅读哪些CPAN模块?
我想为C++库编写Perl绑定,以便可以从Perl使用该库.我该如何开始这样做?我以前为CPAN编写了纯Perl模块.
我已经开始了module-starter(带--builder=Module::Build).我想用来SQL::Library将我的SQL收集到一个.ini文件中......但是为了在运行时找到该文件,我需要知道它的确切路径.如何在运行时获取模块"数据目录"的路径?
到目前为止,我一直在使用FindBin(比如"$FindBin::Bin/../../path/to/module/datafiles/foo.ini",但我发现它不是很强大(例如,当PATH中两个不同的目录中有两个具有相同名称的程序时,它似乎会中断).
我试图通过cpan安装Net :: SSLeay来安装Email :: Send :: SMTP :: TLS但是我收到以下错误.
cpan[5]> install Net::SSLeay
Running install for module 'Net::SSLeay'
Running make for M/MI/MIKEM/Net-SSLeay-1.49.tar.gz
Has already been unwrapped into directory /home/ubuntu/.cpan/build/Net-SSLeay-1.49-VDZ57t
Could not make: Unknown error
Running make test
Can't test without successful make
Running make install
Make had returned bad status, install seems impossible
Run Code Online (Sandbox Code Playgroud) 我为我的公司编写了一个脚本,我正在使用从CPAN获得的一些库.我的经理希望我整合并删除额外的库 - 这有点好笑,因为我将它们包含在脚本中.
几点说明:
use 'libs';在use我的CPAN模块之前的顶部.我现在唯一的解决方案就是将perl模块的内容直接放在perl脚本中.不过,我想给信贷,这是由于,也陷入困境无法获得包括开源代码的w/o适当的信贷,以它的作者和组织.
因此,我应该怎么做呢?我并不是想逃避任何事情......我真的想以正确的方式去做.
所有这三个模块都说"以与Perl本身相同的条件获得许可",但我觉得它应该不那么容易.
我也想探索其他任何想法!
这些模块是:
当我make test使用CPAN模块具有的常规测试工具运行时,它将只输出一个简短的摘要(如果一切顺利).
t/000_basic.t .......................... ok
t/001_db_handle.t ...................... ok
t/002_dr_handle.t ...................... ok
t/003_db_can_connect.t ................. ok
... snip ...
All tests successful.
Files=30, Tests=606, 2 wallclock secs
Result: PASS
Run Code Online (Sandbox Code Playgroud)
如果我单独运行测试,它们会输出更详细的信息.
1..7
ok 1 - use DBIx::ProcedureCall::PostgreSQL;
ok 2 - simple call to current_time
ok 3 - call to power() with positional parameters
ok 4 - call to power() using the run() interface
ok 5 - call to setseed with a named parameter
ok 6 - call a table function
ok …Run Code Online (Sandbox Code Playgroud)