値に「ローカル」文字列を含む値を削除したい。これが私のハッシュ出力です(print Dumper ($hash)
):
$VAR1 = {
'FARM_03' => [
'nfs01',
'nfs02',
'nfs03',
'localvmfs',
'localvmfs'
],
'FARM_07' => [
'nfs01',
'localvmfs',
'localvmfs'
],
'FARM_11' => [
'nfs01',
'localvmfs',
'localvmfs'
]
};
したがって、「ローカル」エントリを省略するために、スクリプトに以下のコードを記述しました。
foreach my $key ( keys %$hash )
{
@{ $hash->{key} } = grep { !/local/i } @{ $hash->{key} };
}
上記のgrepコマンドを実行した後の出力は次のとおりです。
$VAR1 = {
'FARM_03' => [
'nfs01',
'nfs02',
'nfs03',
'localvmfs',
'localvmfs'
],
'FARM_07' => [
'nfs01',
'localvmfs',
'localvmfs'
],
'FARM_11' => [
'nfs01',
'localvmfs',
'localvmfs'
]
'key' => []
};
「ローカル」エントリを削除するのではなく、新しいフィールドを追加します'key' => []
。
grepステートメントの何が問題になっているのか教えてください。
ありがとう。