# Perlの課題 # サブルーチン化 # 暗号化する文字列 $input = 'Nazenara, rippou wo jikkou surukotoniyotteha, dare hitori kamino maede gi to sarenai kara desu. Rippou ni yotteha, tsumino jikaku sika syouji nai nodesu. (Rouma no sinnto heno tegami 3:20)'; # $input の文字列の$inに含まれる文字を$key文字だけ巡回的にずらすことで、暗号化する。 $key = 23; # ずらし数 $in = ' !"#$%&()*+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; $out1 = substr($in, $key, length($in) - $key); $out2 = substr($in, 0, $key); $out = $out1 . $out2; # $in を $keyだけ巡回的にずらした結果 $_ = $input; # 特殊変数$_に$inputを代入 eval( "tr/$in/$out/" ); # $inの文字を$outで変換 $output = $_; # 暗号化された文字列を表示 print "$output\n"; # 暗号化された$outputは、$keyだけ巡回的に逆向きにもどすことで、複合化する。 $key = -23; # ずらし数 $in = ' !"#$%&()*+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; $out1 = substr($in, $key, length($in) - $key); $out2 = substr($in, 0, $key); $out = $out1 . $out2; # $in を $keyだけ巡回的にずらした結果 $_ = $output; # 特殊変数$_に$outputを代入 eval( "tr/$in/$out/" ); # $inの文字を$outで変換 $output = $_; # 複合化された文字列を表示 print "$output\n";