package Util; use Exporter; @ISA = qw(Exporter); #公開したいサブルーチン @EXPORT = qw(DelSpace Reduce01 MakePath RegExpQuote); use strict; BEGIN { } sub DelSpace($) { my ($s) = @_; $s =~ s/[\r\n\s]+$//; $s =~ s/^[\r\n\s]+//; return $_[0] = $s; } sub Reduce01($) { my ($x) = @_; while($x < 0.0) { $x += 1.0; } while($x >= 1.0) { $x -= 1.0; } return $x; } sub RegExpQuote { my($str) = (@_); $str =~ s/\\/\\\\/g; $str =~ s/\//\\\//g; $str =~ s/\(/\\\(/g; $str =~ s/\)/\\\)/g; $str =~ s/\[/\\\[/g; $str =~ s/\]/\\\]/g; $str =~ s/\^/\\\^/g; $str =~ s/\$/\\\$/g; $str =~ s/\*/\\\*/g; $str =~ s/\?/\\\?/g; $str =~ s/\+/\\\+/g; $str =~ s/\./\\\./g; return $str; } sub MakePath { my ($dir, $fname, $separator, $DoTerminate) = (@_); my $RegSep = &RegExpQuote($separator); my $IsHeadSep = 0; $fname =~ s/^\///; if($dir =~ /$RegSep$/) { $dir .= $fname; } else { $dir .= $separator . $fname; } if($DoTerminate) { unless($dir =~ /$RegSep$/) { $dir .= $separator; } } else { if($dir ne '/' and $dir =~ /$RegSep$/) { $dir =~ s/$RegSep$//; } } return $dir; } #========================================== # # For HTML # #========================================== sub PrintHTMLHeader { my($CharSet) = (@_); if($CharSet eq '') { $CharSet = 'x-sjis'; } print "Content-type: text/html; charset=$CharSet\n\n"; } sub InitHTML { my($WebTitle, $CharSet, $LinkTarget) = (@_); if($WebTitle eq ''){ $WebTitle = "No title"; } if($CharSet eq '') { $CharSet = 'x-sjis'; } if($LinkTarget eq '') { $LinkTarget = '_blank'; } &PrintHTMLHeader($CharSet); print "\n"; print "\n"; print "
\n"; print " \n"; print ")([\w\W]*)$/mi; my $line = $1; my $paragraph = $2; my $len = length($line) + length($paragraph); my $content = substr($str, $len); return ($line, $paragraph, $content); } sub DequoteXML { my ($str,$DoDecode) = (@_); $str =~ s/<[\w\W]*?>//gmi; $str =~ s/\n//gm; if($DoDecode) { $str =~ s/"/\"/gmi; $str =~ s/&nbps;/ /gmi; } return $_[0] = $str; } 1;