[英]Trying to read DBM file
我有一個精簡的實時Linux盒,可以與某些硬件接口。
配置文件是* .dbm文件,我無法訪問它們。 它們似乎是某種鍵值數據庫,但是我嘗試過的每個庫都空了。
我曾經嘗試過Perl,Python和Ruby的DBM讀取庫,但運氣不佳。 這些文件的任何指導都很好,我之前從未見過。
當我將一個文件刪除時,會發生這種情況。
DBMFILE Aug 31 2004,�
,jy �
�~���"��+�K&��gB��7JJ�
,��GLOBA.PB_COMBI�SMSI���
JG]
,��BUS_DP
PC �
'
xLokalT
J��
,��SL_DP
PC!�
��
#,��PLC_PARAMJPf,��PROJEKT�PROFIBUS new network1.00022.02.2012J,��KBL_HEADER:�JJp,��KBLJ��,��ALI-SETUPB ����
������������������JJ,,��OBJ-DEFJJ��,��ALI_CLIENTTJJ�
,��ALI_SERVERJ J\r�����2, �� ST_OV_00Boolean0Integer8 0Integer16
0Integer32
0Unsigned8
0Unsigned32Floating-Point0igned16
Octet String Jo� ,��DESCRIPT �ABB OyABB Drives RPBA-01ABBSlave1***reserved***�
�
%
因此,為了展示我已經嘗試過的內容,並且只提出了空對象(沒有鍵值)*編輯
perl-
#!/usr/bin/perl -w
use strict;
use DB_File;
use GDBM_File;
my ($filename, %hash, $flags, $mode, $DB_HASH) = @ARGV;
tie %hash, 'DB_File', [$filename, $flags, $mode, $DB_HASH]
or die "Cannot open $filename: $!\n";
while ( my($key, $value) = each %hash ) {
print "$key = $value\n";
}
# these unties happen automatically at program exit
untie %hash;
什么都不返回
python-
db = dbm.open('file', 'c')
紅寶石-
db = DBM.open('file', 666, DBM::CREATRW)
這些中的每一個都返回空了。 我假設他們使用相同的低級庫。 DBM文件的一些歷史記錄/上下文可能很棒,因為似乎存在一些不同的版本。
**編輯
正在運行的文件返回
$ file abb12mb_uncontrolledsynch_ppo2_1slave.dbm
abb12mb_uncontrolledsynch_ppo2_1slave.dbm: data
和運行字符串輸出
$ strings abb12mb_uncontrolledsynch_ppo2_1slave.dbm
DBMFILE
Aug 31 2004
GLOBAL
PB_COMBI
SMSI
BUS_DP
Lokal
SL_DP
PLC_PARAM
PROJEKT
PROFIBUS new network
1 .000
22.02.2012
KBL_HEADER
ALI-SETUP
OBJ-DEF
ALI_CLIENT
ALI_SERVER
ST_OV_0
Boolean
Integer8
Integer16
Integer32
Unsigned8
Unsigned16
Unsigned32
Floating-Point
Octet String
DESCRIPT
ABB Oy
ABB Drives RPBA-01
ABBSlave1
***reserved***
為了使我的評論清楚,您應該嘗試使用DB_File
的默認選項,例如
use strict;
use warnings;
use DB_File;
my ($filename) = @ARGV;
tie my %dbm, 'DB_File', $filename or die qq{Cannot open DBM file "$filename": $!};
print "$_\n" for keys %dbm;
[此功能已被tie函數取代。]
您可能想要嘗試tie
其與DB_File tie
。
use DB_File;
tie %hash, 'DB_File', $filename, $flags, $mode, $DB_HASH;
然后,您的數據在%hash
。
也可能是有趣的運行file
對文件,看看它究竟是什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.