中括弧で囲まれたテキストを抽出する目的で、Text :: Balanced perlモジュールを使用しようとしています。この特定のケースでは、入力は設定ファイル/etc/named.conf
ですが、私は一般的な使い方を探しています。 問題は、私がundef
という結果を得て、結果として初期化されていない値のエラーであるということです。ここでText :: Balanced perlモジュールの正しい使い方
は私のコードである(それは今ちょうど切り株だ、まだ再帰や他のものを扱っていない):
#!/usr/bin/env perl
use strict;
use diagnostics;
use Text::Balanced qw (
extract_bracketed
) ;
my $config = '/etc/named.conf';
open my $fh, '<', $config or die "Cannot open $config: $!";
$/ = undef;
my $text = <$fh>;
close $fh;
my $content = extract_bracketed($text, '{}');
print $content ;
私はhttp://perldoc.perl.org/Text/Balanced.htmlを読んでいると把握することはできません、私が間違って何をやっている(私はスカラを使います代わりに、配列の変数が、これはすべきではない問題)
も同様の問題がここにText::Balanced and multiline xmlですが、それは私のユースケース(.xmlの解析のための具体的な解決策に適合しない方法で答えます)
おかげ
あなたがこれを使用することができます正規表現で
'通常、あなたが最初の非brace-と一致する必要が' { 'ようで始まらないnamed.conf'接頭辞として囲まれた部分。 –