【perl】配列の重複要素をまとめる・カウントする、ハッシュのキーと値を交換する・設定されている環境変数を表示する

#! usr/bin/perl

use strict;
use warnings;

#◎配列の要素のうち、重複するものをhashを使ってひとつにまとめる
my %uniq;
my @array = (3,5,7,8,9,7,8,7,9,1,3,'papa','mama','koma','papa','koma','Koma');

#my @array = (3,5,7,8,9,7,8,7,9,1,3,'papa,mama,koma,papa,koma,Koma');#下のforeachを実行したときの出力結果=>8 1 3 papa,mama,koma,papa,komaKoma 7 9 5=>「''」で囲んだ部分がひとつの文字列と認識されている。

foreach my $item(@array){
	$uniq{$item}=1;
}

my @uniqarray=keys(%uniq);
print "@uniqarray\n";#出力結果=>koma papa Koma 3 7 9 8 1 5 mama

print "\n";


#◎配列の要素のうち、同じものが何個あるか数える
my %counter;

#同じキーがあれば、値が1ずつ増加していく(hashは、キーがかぶると値が上書きされる性質を利用)
foreach my $key (@array){
	$counter{$key}=$counter{$key}+1;
}
#カウントした回数(値)をキーとともに出力
foreach my $key (sort(keys(%counter))){
	print "$key→$counter{$key}回\n";
}

print "\n";


#◎キーと値の交換
my %hash1=(
	'koma'=>55,
	'gema'=>11,
	'bsba'=>35,
	'italy'=>777,
	'france'=>454,
	9=>'hello'
);
my %hash2;

#交換する前をprint
foreach (keys(%hash1)){
	print "$_→$hash1{$_}\n";
}
print "\n";

#交換してprint
foreach my $atai(keys(%hash1)){
	$hash2{$hash1{$atai}}=$atai;
}
foreach (keys(%hash2)){
	print "$_→$hash2{$_}\n";
}

print "\n";

#◎perlでは、全ての環境変数は%ENVで表現されている⇒環境変数PATHの表示
print $ENV{'PATH'}."\n\n";#改行なしででてくる

#改行して箇条書きスタイルでprint
foreach (split(/;/,$ENV{'PATH'})){
	print "$_\n";
}

#◎全ての環境変数をprint
foreach (keys(%ENV)){
	print "$_→$ENV{$_}\n";
}