通常、次の方法を使用してファイルから解析ldifをロードします。
use Net::LDAP::LDIF;
use Net::LDAP::Entry;
use Data::Dumper;
my $ldif = Net::LDAP::LDIF->new( "filename.ldif", "r") or die "file not exits\n";
while( not $ldif->eof ( ) ) {
$entry = $ldif->read_entry ( );
print Dumper $entry;
}
ただし、ファイルからロードする代わりに、LDIF 形式のファイルを変数 string から直接ロードする必要があります。コードは次のようになります。
use Net::LDAP::LDIF;
use Net::LDAP::Entry;
use Data::Dumper;
my $var_ldif = "dn: cn=Sheri Smith,ou=people,dc=example,dc=com
objectclass: inetOrgPerson
cn: Sheri Smith
sn: smith
uid: ssmith
userpassword: sSmitH
carlicense: HERCAR 125
homephone: 555-111-2225";
my $ldif = Net::LDAP::LDIF->new( $var_ldif, "r") or die "file not exits\n";
while( not $ldif->eof ( ) ) {
$entry = $ldif->read_entry ( );
print Dumper $entry;
}
それで、それを正しく行う方法は?
このばかげた質問に感謝し、申し訳ありません。:)BR//
背景のアイデア 私の目標は、前後の LDIF データを詳細に (dn から属性値まで、1 つずつ) 比較するスクリプトを作成することです。LDIF データ自体は非常に巨大で、1 ファイルあたり約 10 GB 以上です。
* そこで、DN ごとにファイルを読み取り、前後で比較するというアイデアが浮かびました。各 DN の解析は、$variable_before と $variable_after に格納されます。「LDIF形式のデータ」は前のプロセスからの出力から来ているため、実際に$変数からのデータが必要なのはそのためです。*
LDIF 文字列を perl hashref に解析しやすくするには、LDAP::LDIF が必要です。
「DNデータ」が非常に多く、一時ファイルを使用すると処理が遅くなるため、一時ファイルの使用は避けます。