linux - 使用 Perl 在 Linux 上访问 BDB 文件失败

标签 linux perl file solaris berkeley-db

我有一个程序可以从 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/

相关文章:

c - “短对象数(或零)是什么意思?

xml - 如何使用 Twig 模块从 XML 中删除注释

java - 寻找绝对路径

PHP检查多个文件上传是否为空

linux - 任何人都可以向我发送适用于 Linux 的 Coldfusion 11 的下载链接吗?

linux - Plesk 清空邮箱的计划任务不起作用

linux - 使用 Forever 部署 Meteor

windows - 如何在 Perl 中正确使用编码为 Windows-1251 的环境变量?

perl - 判断 Perl 脚本的 STDOUT 是否被重定向

java - 如何在 Java 中读取一个大的二进制文件