フォームからの送信で日本語のような 2バイト文字を送信した場合、 %を含む意味不明な文字列になって送信されるのをご存知でしょうか? これはURLエンコードと言い、特殊記号や日本語などの文字列も正しく 送信する為に行われており、実際に表示やファイルに書き出す場合、 これらを元に戻してやる必要があります。 例えばフォームから受け取ったデータが $formin という変数に入っていた場合は、受け取った後 の処理に次のソースを加えて下さい。 # + 記号を半角スペースに戻す $formin =~ tr/+/ /; #URLエンコードデータをデコードする $formin =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; URLエンコードされたデータで半角スペースは + 記号に、2バイト文字は %16進数値 といった 形にエンコードされています