私は3つの配列を持っています。
- ファイル名を含む @array1
- ファイル名を含む @array2
- ユニークなアイテムを含めたい@unique
次のコードを使用して 2 つの配列を比較し、一意のファイル名を含む 3 番目の配列を出力します。
@test{@array1} = ();
@unqiue = grep {!exists $test{$_}} @array2;
ただし、出力では大文字と小文字が区別されます。大文字と小文字を区別しないようにするにはどうすればよいですか?
ありがとう
こんにちは、申し訳ありませんが、質問がうまくできなかったと思います。
既に再生したトラックを含む古いトラック配列を保持し、そこから選択したい新しいトラック配列を持っています。新しいトラックを古いトラック配列と比較して、一意のトラックのみを取得してから選択したいと考えています。
したがって、現在の出力は次のとおりです。
ユニークなトラック: \my Music\Corrupt Souls\b-corrupt.mp3 \マイ ミュージック\gta4\10 - バガボンド.mp3 \My Music\gta4\14 - 戦争は必要だ.mp3 \マイ ミュージック\バック トゥ ブラック\05 バック トゥ ブラック.mp3
最初のトラックである b-corrupt が既に古いトラック配列にあるため、大文字と小文字が異なるだけで、トラック 10、14、および 05 を返す結果が必要です。
よろしくお願いいたします。
#!/usr/bin/perl $element = '\\My Music\\Corrupt Souls\\b-corrupt.mp3'; プッシュ (@oldtrackarray, $element); $element = '\\My Music\\Back To Black\\03 私とジョーンズさん.mp3'; プッシュ (@oldtrackarray, $element); $element = '\\My Music\\Jazz\\Classic Jazz-Funk Vol1\\11 - Till You Take My Love [オリジナル 12 ミックス].mp3'; プッシュ (@oldtrackarray, $element); $element = '\\My Music\\gta4\\01 - ソヴィエト コネクション (グランド セフト オート IV のテーマ).mp3'; プッシュ (@oldtrackarray, $element); $element = '\\My Music\\gta4\\07 - ロッキー マウンテン ウェイ.mp3'; プッシュ (@oldtrackarray, $element); $element = '\\My Music\\gta4\\02 - ダーティ ニューヨーカー.mp3'; プッシュ (@oldtrackarray, $element); print "旧トラック配列\n"; for($index=0; $index<@oldtrackarray+1; $index++) { print "$oldtrackarray[$index]\n";} $element = '\\my Music\\Corrupt Souls\\b-corrupt.mp3'; プッシュ (@newtrackarray, $element); $element = '\\My Music\\gta4\\10 - バガボンド.mp3'; プッシュ (@newtrackarray, $element); $element = '\\My Music\\gta4\\14 - 戦争は必要.mp3'; プッシュ (@newtrackarray, $element); $element = '\\My Music\\Back To Black\\05 Back to Black.mp3'; プッシュ (@newtrackarray, $element); print "新しいトラック\n"; for($index=0; $index<@newtrackarray+1; $index++) { print "$newtrackarray[$index]\n"; } @test{@oldtrackarray} = (); @uninvited = grep {!exists $test{$_}} @newtrackarray; print "ユニークなトラック:\n"; for($index=0; $index<$#uninvited+1; $index++) { print "$uninvited[$index]\n"; }