我有一个程序可以从 Berkeley DB [安装在 SAN 存储] 中读取一个非常大的数据文件。这在使用 perl5.6.0 版本的 solaris 机器上工作得很好。
但是,同一个程序在 linux 机器上返回从同一个文件读取的更少的值。这是数据文件大小的问题吗?
欢迎任何解开这个谜团的指点。
谢谢, Shobha Deepthi
编辑以包括 Shobha 的复制者(来自评论):
#!/usr/cisco/bin/perl5.6
use strict;
use DB_File qw($DB_HASH);
my $db_file = "/vws/aak/qddts/data/value_cache/To-be-fixed";
my $db_ref;
my %db;
if (tie(%db, 'DB_File', $db_file, O_RDONLY, 0444, $DB_HASH)) {
$db_ref = \%db;
print Dumper($db_ref);
}
1;
最佳答案
这对我来说听起来像是一个文件系统问题。你的文件类型是什么?哦,你的操作系统是什么版本/发行版/arch?
要检查的事情:
- 当文件位于本地存储时,脚本是否可以在 Linux 上运行?
- 您的 Perl、BDB 和 DB_File 版本在两个系统上是否相同?
[又一次编辑] 我还会在 Linux 中对您的脚本运行 strace 以查看记录 12,000 附近是否有任何奇怪的事情发生
关于linux - 使用 Perl 在 Linux 上访问 BDB 文件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5064696/