Perl コーディング初心者質問コーナー Part27

このエントリーをはてなブックマークに追加
36nobodyさん
>>20
perl = cgi ではない。
お前さんがまずしなければならんのは、自分のパソコンにperlをインストールして
コマンドラインさっきのコマンドが実行するかを確認することやね。

この文章読んでわからんようであれば、あらしと取られかねんからそのつもりで。

#あと、perlをどうやってインストールしたらいいですかなんてことは聞くなよ(w
37nobodyさん:03/08/15 01:51 ID:???
 
38nobodyさん:03/08/15 02:22 ID:???
Perlの
s./// と tr///
の違いがいまいちわからないのですが、どういう違いがあるのでしょうか・・・
39nobodyさん:03/08/15 02:25 ID:???
sub get_select_form{
my ($name, $selected) = @_;
my ($key, $form);

$form .= '<select name="' . $name . '">' . "\n";
foreach $key (sort keys %{$name}) {
if($key eq $selected){
$form .= '<OPTION value="' . $key . '" selected>' . ${$name}{$key} . '</OPTION>' . "\n";
}
else{
$form .= '<OPTION value="' . $key . '">' . ${$name}{$key} . '</OPTION>' . "\n";
}
}
$form .= '</select>' . "\n";

return $form;
}

このようなselectボックスを生成するサブルーチンを作ったのですが、
sort keys %{$name}
のところで「〜HASH ref while "strict refs"〜」と怒られてしまいます。

no strict;は使いたくないので、何かよい解決策があれば教えてください。
すみませんが宜しくお願いいたします。
40nobodyさん:03/08/15 06:11 ID:???
>>38
たとえば $_='ABCDECBA' あたりで
s/ABC/123/

tr/ABC/123/
を試してみれば分かります。