まず、今後の投稿で何らかの用語が間違っていたら、これはまったく新しいものです。ハッシュされた配列にアクセスするより洗練された方法
バックグラウンドによっては、アーカイブされたネットワーク設定を特定の設定のためにチェックするスクリプトがあります。そのため、スクリプトはいくつかの検査を実行し、その検査の結果を配列に追加します。
例えば キーがあることと、すべてのチェックのための配列がハッシュに追加され実行されているすべてのチェック後
@internalsyslogerrorと呼ばれる配列に追加されるように構成されていることを確認のsyslogを作るためのチェック、装置名。すべてのコードは、次のコマンドで
に厳格な、使用の警告を使用有する
音符。
$results{$configs} = [@internalsyslogerror, @bordersyslogerror,
@borderntperror, @borderntperror, @internalntperror,
@bordertacacserror, @internaltacacserror, @enablepasswordchecks,
@internalsnmpkeyserror, @timezoneerror, @configregistererror,
@bannererror, @bootregistererror, @domainnameerror];
問題イム持つが、この情報を抽出する最もエレガントな方法は何かということです、私はスクリプトに新しいチェックを追加するために行う必要があり、変更の量を削減したいと思います。 現在、私は上記のコードに追加配列を追加し、それを処理するサブリファレンスに逆参照部分を追加する必要があります。
ここでは、現在、私は参照を外して配列に配置して電子メールで送信します。
foreach my $k (keys %results) {
push @results, "<b>$k</b><br>";
if (defined $results{$k}[0]){
push @results, "$results{$k}[0]";
}
if (defined $results{$k}[1]){
push @results, "$results{$k}[1]";
}
if (defined $results{$k}[2]){
push @results, "$results{$k}[2]";
}
if (defined $results{$k}[3]){
push @results, "$results{$k}[3]";
}
if (defined $results{$k}[4]){
push @results, "$results{$k}[4]";
}
if (defined $results{$k}[5]){
push @results, "$results{$k}[5]";
}
if (defined $results{$k}[6]){
push @results, "$results{$k}[6]";
}
if (defined $results{$k}[7]){
push @results, "$results{$k}[7]";
}
if (defined $results{$k}[8]){
push @results, "$results{$k}[8]";
}
if (defined $results{$k}[9]){
push @results, "$results{$k}[9]";
}
if (defined $results{$k}[10]){
push @results, "$results{$k}[10]";
}
if (defined $results{$k}[11]){
push @results, "$results{$k}[11]";
}
if (defined $results{$k}[12]){
push @results, "$results{$k}[12]";
}
if (defined $results{$k}[13]){
push @results, "$results{$k}[13]";
}
}
質問は、私はイムは、上記のやって何をすべきか、どういうわけか "オンザフライ" のコードを生成することができますされ
おかげ
IFSの膨大な数をちらっと見たときは、私はほとんど私が故に –
@denis :-) thedailywtf.comを読んでいたと思いました助けを求める叫び:D – Steve