#----------------------------------------------------------- # フォームデコード #----------------------------------------------------------- sub parse_form { my $cgi = shift; my %in; foreach ( $cgi->param() ) { my $val = $cgi->param($_); if ($_ ne 'upfile') { # 無効化 $val =~ s/&(?!\# # 部分マッチの後方参照は必要ないため、 # (a|b)ではなく(?:a|b)を使用 (?: # 十進 0*(?: 9|1[03]|3[2-9]|[4-9][0-9] |1(?:[016-9]\d|2[0-6])|[2-9]\d\d |\d\d\d\d(?:\d\d)? |[1-47-9]\d\d\d\d |5(?:[0-489]\d\d\d |5(?:[01]\d\d |2(?:[0-8]\d |9[0-5])) |7(?:3(?:4[4-9] |[5-9]\d) |[4-9]\d\d)) |6(?:[0-46-9]\d\d\d |5(?:[0-46-9]\d\d |5(?:[0-24-9]\d |3[0-36-9]))) |1(?:0\d\d\d\d\d |1(?:0\d\d\d\d |1(?:[0-3]\d\d\d |4(?:0\d\d |1(?:0\d |1[01]))))) ) | # 十六進 x0*(?: [9ADad]|[2-6A-Fa-f][\dA-Fa-f]|7[\dA-Ea-e] |[\dA-Fa-f]{3}(?:[\dA-Fa-f]{2})? |(?:[\dA-Ca-c][\dA-Fa-f] |[Dd][0-7] |[Ee][\dA-Fa-f] |[Ff][\dA-Ea-e])[\dA-Fa-f][\dA-Fa-f] |[Ff]{2}(?:[\dA-Ea-e][\dA-Fa-f] |[Ff][\dA-Da-d]) |10[\dA-Fa-f]{4} ) ) ;)/&/gx; $val =~ s//>/g; $val =~ s/"/"/g; $val =~ s/'/'/g; # 改行変換 $val =~ s/\r\n/
/g; $val =~ s/\n/
/g; $val =~ s/\r/
/g; } $in{$_} = $val; } return %in; }