Perl文字列置き換えについて
今日は、PerlとCGIについて、お聞きしたいことがあります。
~s///;で、文字列の置き換えが出来ますよね?
実行しても、変な数字しか出てこないのです。^^;
つまずいてしまいました。
以下、コードです。(プロバイダはぷららです)
実行URL
http://www9.plala.or.jp/mura001/form2.html
===============================================
#!/usr/local/bin/perl -w
require "jcode.pl";
require "cgi-lib.pl";
$host=$ENV{'REMOTE_HOST'};
#IP取得
$addr=$ENV{'REMOTE_ADDR'};
$bo=$ENV{'HTTP_UER_AGENT'};
$http=$ENV{'HTTP_HOST'};
#アクセス元URL
$access=$ENV{'HTTP_REFERER'};
&ReadParse;
#秒、分、時、日、年、月、曜日
($sec,$min,$hour,$mday,$mon,$year,$wday)=localtime;
$mon++;
$year += 1900;
#曜日を日本語化
@week=('日','月','火','水','木','金','土');
$wday=$week[$wday];
#<input type>のnameを読み込む。
$name = $in{'han'};
$text = $in{'text'};
#日本語レコード
&jcode'convert(*name,'euc');
&jcode'convert(*text,'euc');
#文字列置換
$name = ~s/</555/;
#改行二つ書かないといけないみたい。
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title>テスト</title>\n";
print "</head>\n";
print "<body>\n";
print "テストです。<br>\n\n";
if($in{'han'} eq ''){
print "何も入力されていません。<br><br>\n";
exit();
}
print "貴方が入力した名前は $name ですね。<br><br>\n\n";
print "$text<br><br>\n\n";
print $ENV{'PATH'},"<br><br>\n\n";
&file2();
print "書き込みリスト<br><br>\n\n";
&file();
print "</body>\n";
print "</html>\n";
sub file{
open(IN,"test.txt");
while(<IN>){
print;
}
close(IN);
}
sub file2{
open(IN,">>test.txt");
print IN "<hr>訪問者:$name $year年$mon月$mday日($wday)$hour:$min:$sec<br><br>\n\n";
print IN $text,"<br><br>";
print IN "IPアドレス:$addr<br><br>\n\n";
print IN "アクセス元:<a href=\"$access\">$access</a><br><br><hr>\n\n";
close(IN);
}
==========================
$name = ~s/</555/;
が、 4294967295 にどうしてもなります。^^;
(置き換え後の文字列を他のに変更しても必ず、 4294967295 になります!)
分かる方、いらっしゃいますか?
あと、日本語の変換が出来ません。(汗)
それと、ぷららのサーバがかなり重たいのですが、どうすれば宜しいでしょうか?
ご迷惑をおかけいたしますが、どうか、宜しくお願いいたします。
お礼
返答ありがとうございます。 確認出来ました。 Rubyのループ処理は便利なものがあるみたいですね。 いろいろ試してみます。