Perl コーディング初心者質問コーナー Part26
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/07/24 19:48ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
関連スレ
【Perl上級者コーナーPart01】
http://pc2.2ch.net/test/read.cgi/php/1024741312/
CGI: Common Gateway Interface part 11
http://pc2.2ch.net/test/read.cgi/php/1055597189/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
過去ログやお勧めサイトは >>2-10
0616nobodyさん
03/08/08 00:55ID:???foreach $a ($b) {}
とするか
foreach ($b) {}
とするのはどっちのほうがいいのですか?
0618nobodyさん
03/08/08 01:06ID:XW8ex5pfライブラリ、jcode.plをjcodeg.plに変更し、コンバート処理を
&jcode'convert(*value, sjis);
から、
&jcode'convert(*value, "sjis", "", "z");
のように変更しました。
これで一応は半角カナも文字化けせず投稿できるようにはなったんですが、
ログファイルの更新ごとに、ログファイル先頭の部分に、
「*main::valuesjisz」
という何とも意味がわからぬ文字がついてしまうようになりました...
色々いじってみたのですが、上手くいきません。
どうしたら上手く処理出来るんでしょうか...
jocdeg.pl : ttp://jo.st45.arena.ne.jp/script/
0620nobodyさん
03/08/08 01:21ID:RBuH2Puu$play11 = $sentaku1
$play22 = $sentaku1
$kik = 60
だけど、エラーが出ます。なんでエラーでるんすか?
イフとエルスの置き方はちゃんとしてますよ。
ふざけてますね。
0621あぼーん
NGNG0622nobodyさん
03/08/08 01:23ID:???最低限文法とか調べてや。
ふざけてるのは(ry
単純文の終わりにはセミコロンがいるよ。
0623nobodyさん
03/08/08 01:25ID:???>あなたたち、これのどこがおかしいんですか?
>とてもすばらしいじゃないですか
>僕の芸術をケチつけられても困ります。
>
>もっといい方法があるなら教えてくださいよ
0624あぼーん
NGNG0625nobodyさん
03/08/08 01:31ID:???0626618
03/08/08 01:41ID:???どうもありがとうございます。
早速やってみたところ、500 Internal Server Errorが出てしまいました(~_~;)
他に手立てはないでしょうか?
よろしくお願いします。
0630nobodyさん
03/08/08 02:41ID:RBuH2Puuイフキック
エルス、パンチ(イフ、命中(イフ、5分の1で会心の一撃
(エルス、普通
(エルス、ミス
と言う様に、イフの中に、さらに3重、4重にイフやエルスを
クませることってできますよね?
あと、エラー出ても、500さーバーエラー、中見が悪いって内容の
エラーしか出ないんですけど、どこが悪いか詳細の出すことできないっすか?
自分のパソコンにアクティブ入れると、詳細出ますかね?
0631nobodyさん
03/08/08 02:43ID:???ベストでしょうか?DBは使わないとします。
要するに、行が色々なテスト名、列が生徒名となっているような典型的なテーブルです。
0633nobodyさん
03/08/08 02:56ID:???ハッシュだとキーはどうなりますか?
0634nobodyさん
03/08/08 03:01ID:???0635nobodyさん
03/08/08 03:53ID:???http://www.kt.rim.or.jp/%7ekbk/perl5.005/perllol.html
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlref.html
0636あぼーん
NGNG0637あぼーん
NGNG0638あぼーん
NGNG0639あぼーん
NGNG0640あぼーん
NGNG0641nobodyさん
03/08/08 04:32ID:RBuH2Puuイフキック
エルス、パンチ(イフ、命中(イフ、5分の1で会心の一撃
(エルス、普通
(エルス、ミス
と言う様に、イフの中に、さらに3重、4重にイフやエルスを
クませることってできますよね?
0642nobodyさん
03/08/08 04:34ID:RBuH2Puuプレイヤー1は$play11の攻撃 プレイヤー2の$play22の攻撃;
$play11 = $sentaku1;
$play22 = $sentaku1;
$kik = 60;
$sentaku = {
$play1 = int(rand 2);
if($play1 == 0) {
$kik;
}
}
else($play1 == 1) {
$bougyo = int(rand 5);
if($bougyo =< 1){
0;
else($bougyo >= 2) {
1;
}
{
$panti = int(rand 5);
if($panti == 0) {
$panti1 = 10;
else($panti > 0) {
$panti2 = 20;
}
* $bougyo;
}
}
0644nobodyさん
03/08/08 04:44ID:RBuH2Puuイフ捕まる(アメリカに核を落とす
エルス捕まらない(イフ包茎じゃない(イフ、オレは天才(オレを総理に
逆らう者北朝鮮へ
(エルス、オレは天才じゃない
(世界を滅ぼす
(エルス包茎(世界を滅ぼす
と言う様に、イフの中に、さらに3重、4重にイフやエルスを
クませることってできますよね?
0646nobodyさん
03/08/08 04:49ID:RBuH2PuuPerl/CGI
入門教室
<h1>定価2800円
税なし
0648nobodyさん
03/08/08 04:54ID:RBuH2Puuサーバーはエラーばっか出しヤガル
自分のパソコンにアクティブ入れようか考え中
0649nobodyさん
03/08/08 04:54ID:???今日、オートロードってヤツをなんと初めて知った。恥ずかしい限り。
見た瞬間感動しちまった初心者な自分。
うん、いいね。あれ。
それだけです。
0650nobodyさん
03/08/08 04:55ID:RBuH2Puuパわーアップさせたら、そうなった
0651nobodyさん
03/08/08 04:56ID:RBuH2Puu0654nobodyさん
03/08/08 04:58ID:RBuH2Puu0655nobodyさん
03/08/08 05:01ID:RBuH2Puu半を選ぶ
そこにさらに半を選ぶと、半か丁か選ばれて内容がかわる
半か丁かを簡単に改造しただけなんだが
この始末だ
10日でおぼえるどころか、1日目から動かない
この本、だめすぎ
0657nobodyさん
03/08/08 05:13ID:RBuH2Puuif($bougyo =< 1){
の=と<が逆だな
56Pでわかったよ
これで動きそうだ
0658nobodyさん
03/08/08 05:30ID:fJ1eIuTwいや、報告しなくていいから。
ここはあんたの日記帳じゃないんだし。
0659nobodyさん
03/08/08 05:41ID:???--------------
実行してないから動くのか知らんけど暇つぶしに。誰が攻撃するのか分からんかったからこう書いた。
--------------
srand;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'攻撃力'} - $defense->{'守備力'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'攻撃力'} - $defense->{'守備力'};
}
($damage < 0) and ($damage = 0);
$defense->{'HP'} -= $damage;
0660nobodyさん
03/08/08 05:44ID:???間違って存在しないサブルーチンに飛んだら、エラーを発生させず、特定のサブルーチンに移動してもらう昨日。
引数もちゃんと受け継がれる。
変数名で飛んでくルーチンを指定してる時とか便利かも。
使いかたは検索して。
0661nobodyさん
03/08/08 05:44ID:???二度と来るな!
0664nobodyさん
03/08/08 06:27ID:???0667nobodyさん
03/08/08 08:09ID:???if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
jcode::convert(\$buffer, 'euc');
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
てな感じで…
チャットなんもんで、htmlで出力してるんだけど
ヘッダには charset=Shift_JIS って書いてる。
でも文字化け全然しない…
不思議……(@▽@;)
0669nobodyさん
03/08/08 14:21ID:awu4UezKforeachを使うのが一番いいのでしょうか?
0672nobodyさん
03/08/08 15:25ID:???<q cite="http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlstyle.html">
戻り値をただ単に捨ててしまうような void 文脈で、grep()やmap()、
`backticks` (訳注: `ls`のようにバッククォートで括った実行文のこと)
を使うことは避けましょう。そういった関数はすべて戻り値を持って
いるのですから、それを使うべきです。戻り値に用がないのであれば、
代わりにforeach()を使ったループか system()関数を使いましょう。
</q>
0674nobodyさん
03/08/08 16:22ID:???もし、 : の後にhogehogeがあるなら、:から:までを消すのはできたんですが
※こんな感じで s/:hogehoge.*?://g
その逆の、 : の後にhogehogeが ない なら、:から:までを消す 方法を教えてください。
0675nobodyさん
03/08/08 16:30ID:???0676あぼーん
NGNG0677あぼーん
NGNG0678あぼーん
NGNG0679あぼーん
NGNG0680あぼーん
NGNG0681nobodyさん
03/08/08 16:47ID:RBuH2Puu# CGIヘッダの出力
print "Content-type: text/html\n\n";
srand;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'攻撃力'} - $defense->{'守備力'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'攻撃力'} - $defense->{'守備力'};
}
($damage < 0) and ($damage = 0);
$defense->{'HP'} -= $damage;
0682nobodyさん
03/08/08 16:52ID:RBuH2Puuあと何が必要ですか?
キャラはPlayer1とPlayer2
Player1はHP400、キック力は60、パンチ力は20、防御力は10
Player2はHP300、キック力は100、パンチ力は40、防御力は0
とりあえず1回動かしてみないと、先にすすめないし、
勉強もできない
困ったもんだ
0683nobodyさん
03/08/08 16:55ID:dNGBD9SF'tokyo' => [ qw(新宿 渋谷 原宿 池袋 秋葉原) ] ,
'kanagawa' => [ qw(横浜 藤沢 厚木 茅ヶ崎 横須賀) ] ,
);
という感じのデータで、$Japan{tokyo}を配列としてforeachでぐるぐる回したいのですが、
どのようにすればいいのでしょう?
foreach ( @$Japan{tokyo} ) { print; }
とやったのでは出来ませんでした。
0684nobodyさん
03/08/08 16:59ID:???サーバ上のPerlのバージョンを調べたいのです。
Niftyを利用しているのですが、
説明のページにもPerl5としかかかれておらず細かいところがわかりません。
#例えば5.6なのか5.8なのか不明だったり
Perlスクリプトで調べるにはどうやれば良いのでしょうか。
因みにNiftyはtelnet不可で標準モジュールも全く使えません。
0685nobodyさん
03/08/08 17:11ID:???#! /usr/local/bin/perl
print 'Content-Type: text/html',"\n\n";
print '<html>';
print $];
print '</html>';
ってな感じのCGIを設置してアクセスする。
0686nobodyさん
03/08/08 17:14ID:???>685
ありがとうございます。
5.00503だとわかりすっきりしました。
0687674
03/08/08 17:17ID:???0689688
03/08/08 17:20ID:???>>683
foreach (@{$Japan{tokyo}})
括弧ひとつ余計につけないとダメらしい
0690nobodyさん
03/08/08 17:33ID:RBuH2Puu# CGIヘッダの出力
print "Content-type: text/html\n\n";
# Player1
$HP = 400;
$KIK = 60;
$PAN = 20;
$DF = 10;
# Player2
$HP = 300;
$KIK = 100;
$PAN = 40;
$DF = 0;
# Player1
$kougeki1 = srand;
# Player2
$kougeki2 = srand;
srand;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
0691nobodyさん
03/08/08 17:33ID:RBuH2Puu#punch
$damage =
$offense->{'$PAN'} - $defense->{'$DF'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK'} - $defense->{'$DF'};
}
($damage < 0) and ($damage = 0);
$defense->{'HP'} -= $damage;
# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>対戦バトル</title></head>\n";
print "<body>
<p>Player1:体力は$HP1です</p>
<p>Player2:体力は$HP2です</p>
<p>Player1は<big>$kougeki1</big>のダメージを与えた。</p>
<p>Player2は<big>>$kougeki2</big>のダメージを与えた。</p></body>\n";
print "</html>";
0692nobodyさん
03/08/08 17:34ID:RBuH2Puu考えるか
0693nobodyさん
03/08/08 17:37ID:???わざわざ貼らんでよろしい。
0694nobodyさん
03/08/08 17:39ID:???0695nobodyさん
03/08/08 17:57ID:RBuH2Puu0696nobodyさん
03/08/08 18:04ID:???0698nobodyさん
03/08/08 20:00ID:???KIKって(;´Д`)
0700nobodyさん
03/08/08 20:13ID:???0701nobodyさん
03/08/08 20:25ID:???0702nobodyさん
03/08/08 20:28ID:???$defense->{'HP'} -= $damage;
0703nobodyさん
03/08/08 20:35ID:???例えば$hogeは$fooか$barか$baz以外の値であればエラーとしたくて
if ($hoge ne ($foo or $bar or $baz)){&error(不正な値が混じってます);}
のように書いたりしたのですがダメでした。
0704nobodyさん
03/08/08 20:39ID:???0706nobodyさん
03/08/09 02:34ID:9s2Ca0tO$HP = 400;
$KIK = 60;
$PAN = 20;
$DF = 10;
# Player2
$HP = 300;
$KIK = 100;
$PAN = 40;
$DF = 0;
# Player1
$kougeki1 = srand;
# Player2
$kougeki2 = srand;
0707nobodyさん
03/08/09 02:34ID:9s2Ca0tOif($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN'} - $defense->{'$DF'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK'} - $defense->{'$DF'};
}
($damage < 0) and ($damage = 0);
$defense->{'HP'} -= $damage;
0708nobodyさん
03/08/09 02:34ID:9s2Ca0tOprint "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>対戦バトル</title></head>\n";
print "<body>
<p>Player1:体力は$HP1です</p>
<p>Player2:体力は$HP2です</p>
<p>Player1は<big>$kougeki1</big>のダメージを与えた。</p>
<p>Player2は<big>>$kougeki2</big>のダメージを与えた。</p></body>\n";
print "</html>";
0709あぼーん
NGNG0710あぼーん
NGNG0711あぼーん
NGNG0712nobodyさん
03/08/09 02:40ID:???0713あぼーん
NGNG0714あぼーん
NGNG0715nobodyさん
03/08/09 02:48ID:???$defense->{'HP'} -= $damage;
■ このスレッドは過去ログ倉庫に格納されています