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
0717あぼーん
NGNG0719nobodyさん
03/08/09 04:21ID:???教えたがりというか、得意になりたがるというか。
感謝のレスをもらって満足したいんだろうなぁ。
0720nobodyさん
03/08/09 04:37ID:???荒らしとしても最低の部類に入る。
あ、>>715と>>718見て気付いた。ここWebProgだったか。ならいいや。
0721nobodyさん
03/08/09 05:13ID:???馬鹿にして満足しているようだが、つまらんな。
いなくても誰も困らないからム板に引っ込んでいれば?
ム板住人にしては最低の部類に入るけどな。
0723nobodyさん
03/08/09 05:20ID:9s2Ca0tOおれは荒らしじゃねーよ!ヴォケ!!
相手にすんなよ、とか言ってる馬鹿がいるから荒れるんだよ
もとは、てめーみたいな無脳がいるから、住みつくんだっつーの!!
無脳を相手にするのは一番、気持ちいいからな!!馬鹿だから!!
0724nobodyさん
03/08/09 05:40ID:9s2Ca0tO# CGIヘッダの出力
print "Content-type: text/html\n\n";
while($HP1 > 0) and ($HP2 > 0){
srand1;
srand2;
}
# Player1
$HP1 = 400 - $kougeki1;
$KIK1 = 60;
$PAN1 = 20;
$DF1 = 10;
# Player2
$HP2 = 300 - $kougeki2;
$KIK2 = 100;
$PAN2 = 40;
$DF2 = 0;
# Player1
$kougeki1 = srand;
# Player2
$kougeki2 = srand2;
0725nobodyさん
03/08/09 05:40ID:9s2Ca0tOif($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN1'} - $defense->{'$DF2'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK1'} - $defense->{'$DF2'};
}
0726nobodyさん
03/08/09 05:40ID:9s2Ca0tOif($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN2'} - $defense->{'$DF1'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK2'} - $defense->{'$DF1'};
}
($damage < 0) and ($damage = 0);
$defense->{'HP1'} -= $damage;
($damage < 0) and ($damage = 0);
$defense->{'HP2'} -= $damage;
0727nobodyさん
03/08/09 05:41ID: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>";
0728nobodyさん
03/08/09 05:42ID:9s2Ca0tO($damage < 0) and ($damage = 0);
$defense->{'HP1'} -= $damage
がいまいち理解できんよ。
0729nobodyさん
03/08/09 06:25ID:???0731nobodyさん
03/08/09 07:18ID:???それに、こういうのは名無し相手には強気になれても、システム側の人間が動き出せば
態度が一変するよ。ほんと面白いぐらいに。
0732nobodyさん
03/08/09 07:20ID:???0733nobodyさん
03/08/09 07:40ID:???0734659
03/08/09 08:42ID:???基本的な文法と、ハッシュとリファレンスを覚えなよ(659のヤツを組み込みたいなら)。
ここで質問しても迷惑だし、無意味だぞ。
ただ目立ちたいだけならさっさとどっか行きな。
0735nobodyさん
03/08/09 09:58ID:???>($damage < 0) and ($damage = 0);
>$defense->{'HP1'} -= $damage
>がいまいち理解できんよ。
ほかもまったく理解できてないだろ
0736nobodyさん
03/08/09 10:34ID:???幼女板にもおながいします。
◆スクリプト&コピペ(乱立)荒らし報告スレ7
http://qb.2ch.net/test/read.cgi/operate/1060158648/l50
>>735
> >($damage < 0) and ($damage = 0);
and しなくてもいいよな(w
0737同一人物による大量の書き込み
03/08/09 10:50ID:???560,563,565-568,572,574,576,578,592,593,611,613
03/08/08(Fri) ID:RBuH2Puu
620,630,636-642,644,646,648,650-651,654-655,657,676-678,680-682,690-692,695
03/08/09(Sat) ID:9s2Ca0tO
706-711,713-714,723-728
スレッドの約6%を消費。
0738nobodyさん
03/08/09 11:24ID:???0739nobodyさん
03/08/09 12:33ID:???&error('不正な値が混じってます') unless grep{$hoge eq $_}($foo,$bar,$baz);
とか
0740703
03/08/09 13:02ID:???$hogeと$fooが一致しないか(or)$hogeと$bar一致しないか(or)とかいう風に
考えてしまいました…。
>739
どもです。
そちらの方がすっきりしてますね。
0741nobodyさん
03/08/09 13:03ID:aJfrmQrg0742あぼーん
NGNG0743nobodyさん
03/08/09 14:05ID:9s2Ca0tOというより、動かねーよ!
0744あぼーん
NGNG0745あぼーん
NGNG0746あぼーん
NGNG0747あぼーん
NGNG0748あぼーん
NGNG0749あぼーん
NGNG0750あぼーん
NGNG0751nobodyさん
03/08/09 14:59ID:???0754nobodyさん
03/08/09 15:32ID:???@array = ($foo,$bar,$baz);
&error('不正な値が混じってます') unless grep{$hoge eq $_}@array;
すっきりしてる、っていうか上みたいな使い方ができるので、
比較対照が可変の場合に楽。
0755nobodyさん
03/08/09 18:46ID:9s2Ca0tO# CGIヘッダの出力
print "Content-type: text/html\n\n";
while($HP1 > 0) and ($HP2 > 0){
srand1;
srand2;
}
# Player1
$HP1 = 400 - $kougeki1;
$KIK1 = 60;
$PAN1 = 20;
$DF1 = 10;
# Player2
$HP2 = 300 - $kougeki2;
$KIK2 = 100;
$PAN2 = 40;
$DF2 = 0;
# Player1
$kougeki1 = srand;
# Player2
$kougeki2 = srand2;
0756nobodyさん
03/08/09 18:47ID:9s2Ca0tOif($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN1'} - $defense->{'$DF2'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK1'} - $defense->{'$DF2'};
}
0757nobodyさん
03/08/09 18:47ID:9s2Ca0tOif($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN2'} - $defense->{'$DF1'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK2'} - $defense->{'$DF1'};
}
($damage < 0) and ($damage = 0);
$defense->{'HP1'} -= $damage;
($damage < 0) and ($damage = 0);
$defense->{'HP2'} -= $damage;
0758nobodyさん
03/08/09 18:47ID: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>";
0759あぼーん
NGNG0760あぼーん
NGNG0761あぼーん
NGNG0762nobodyさん
03/08/09 18:52ID:???killかrmかなんだかしてやってほしい
0763nobodyさん
03/08/09 18:54ID:aJfrmQrg0766nobodyさん
03/08/09 19:21ID:???0767nobodyさん
03/08/09 20:55ID:???0768nobodyさん
03/08/09 21:13ID:???http://qb.2ch.net/test/read.cgi/operate/1060158648/585
こっちにもあげときました。
0769momo
03/08/09 21:29ID:jpYU10pthttp://***.com/~sub/みたいなチルダが入るとバグってしまうんです…
以下にそのまま書いたのでどこを直せばいいのか教えて頂けないでしょうか?
よろしくお願いいたします。
#!/usr/local/bin/perl
print qq|content-type: text/html\n\n
<HTML>
<HEAD>
<TITLE>JUMP</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</HEAD>
<BODY bgcolor="#FFFFFF" text="#000000">
<B><A href=$ARGV[0]>$ARGV[0]</A></B>
<HR>
次のサイトにジャンプしようとしています。
</BODY>
</HTML>|;
0770nobodyさん
03/08/09 21:41ID:???あと、METAタグを使う理由がわからん…
0771nobodyさん
03/08/09 21:43ID:???0772nobodyさん
03/08/09 21:49ID:???http://pc2.2ch.net/test/read.cgi/php/1059878966/21
0774nobodyさん
03/08/09 22:47ID:???0775sage
03/08/09 22:47ID:jpYU10pt0776nobodyさん
03/08/09 22:49ID:GqH0THDn}elsif(a){
}elsif(b){
}elsif(b){
と表示するのと、
}elsif((a)||
(b)||
(c))){
と表示するのとでは効果は同じですよね?
上の方が分かりやすいから私は上を使っているんですが、
何かデメリットはあるんでしょうか?
0778nobodyさん
03/08/09 23:13ID:???俺なら下を使うね。
0779momo
03/08/09 23:18ID:???http://hogehoge.com/jump.cgi?http://yahoo.com/~sub/
のリンクだと
http://yahoo.com/\~sub/となってしまい、うまくhttp://yahoo.com/~sub/に
飛ぶことが出来ないんです
0781nobodyさん
03/08/09 23:41ID:???失礼ですが貴方は hogehoge.comとyahoo.comのオーナー様でしょうか?
公に使用者が開示されているドメインネームを不当にドキュメント等に用いるマナー違反者が
増えていますので。 念のため確認です。
0782nobodyさん
03/08/09 23:51ID:???#! /usr/local/bin/perl
print qq|Content-type: text/html; charset=Shift_JIS
<HTML>
<HEAD>
<TITLE>JUMP</TITLE>
</HEAD>
<BODY bgcolor="#FFFFFF" text="#000000">
<B><A href=$ENV{'QUERY_STRING'}>$ENV{'QUERY_STRING'}</A></B>
<HR>
次のサイトにジャンプしようとしています。
</BODY>
</HTML>|;
exit;
これでいいかね
0783あぼーん
NGNG0785あぼーん
NGNG0786あぼーん
NGNG0787あぼーん
NGNG0788あぼーん
NGNG0789nobodyさん
03/08/10 02:36ID:c9slSjrq# CGIヘッダの出力
print "Content-type: text/html\n\n";
while($HP1 > 0) and ($HP2 > 0){
srand1;
srand2;
}
# Player1
$HP1 = 400 - $kougeki1;
$KIK1 = 60;
$PAN1 = 20;
$DF1 = 10;
# Player2
$HP2 = 300 - $kougeki2;
$KIK2 = 100;
$PAN2 = 40;
$DF2 = 0;
# Player1
$kougeki1 = srand;
# Player2
$kougeki2 = srand2;
0790nobodyさん
03/08/10 02:36ID:c9slSjrqif($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN1'} - $defense->{'$DF2'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK1'} - $defense->{'$DF2'};
}
0791nobodyさん
03/08/10 02:37ID:c9slSjrqif($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN2'} - $defense->{'$DF1'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK2'} - $defense->{'$DF1'};
}
($damage < 0) and ($damage = 0);
$defense->{'HP1'} -= $damage;
($damage < 0) and ($damage = 0);
$defense->{'HP2'} -= $damage;
0792nobodyさん
03/08/10 02:39ID:c9slSjrqprint "<!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>のダメージを与えたため、
Player1は喜んだ。「命!!」</p>
<p>Player2は<big>>$kougeki2</big>のダメージを与えたため、
Player1は喜んだ。「炎!!」</p></body>\n";
「つまんねー、馬鹿!」とやじが飛んだ。
print "</html>";
0793あぼーん
NGNG0795nobodyさん
03/08/10 03:16ID:???削除人は何やってる?
0796nobodyさん
03/08/10 03:34ID:???削除依頼だけしっかりやっときましょう。
0797nobodyさん
03/08/10 03:43ID:???所定の回数に達したらアク禁になるわけだし
俺と同じISPじゃなきゃいいが・・・
0799nobodyさん
03/08/10 09:57ID:???俺の書き込みも削除依頼されとる・・・
0800nobodyさん
03/08/10 10:05ID:???変換前の形式は、ちょっと特殊で年月日時分となってます。
0308100000
変換後は、クッキー形式にしたいです。
Thu, 01-Jan-1970 00:00:00 GMT;
年、月、日、時、分は、ほぼそのままでOKですが、曜日とGMTへの変換はどのように
すればよいのでしょうか?
よろしくお願いします。
0801あぼーん
NGNG0802nobodyさん
03/08/10 10:31ID:9Q9rpSmQuse ABC; と @ISA = ('ABC'); とは何が違うのですか?
0803nobodyさん
03/08/10 10:38ID:???0804nobodyさん
03/08/10 10:39ID:???自前で計算して用意するか、
time()みたいに、1970年1月1日からの秒数に変換して、そこからlocaltimeで変換するか
0805nobodyさん
03/08/10 10:40ID:???http://books-support.softbank.co.jp/pn/fumo01.html
>>802
http://www.rfs.jp/sitebuilder/perl/04/03.html
0806nobodyさん
03/08/10 10:50ID:???後者の方法はサブクラス化という方法で ABC 内の関数を
オーバーライドしたい時などその方法を使用する
…ぐらいしか思いつかないな
0807nobodyさん
03/08/10 13:03ID:????あれにかかわったレスも削除して「なかったことに」してもらうのが一番。
ついでに削除屋さんは広告も一括して削除してくれたらありがたいなぁ。
0808nobodyさん
03/08/10 13:25ID:???依頼者と違いますが、>>73に追加です。削除理由は同じです
削除対象アドレス:
http://pc2.2ch.net/test/read.cgi/php/1059043704/744-750
http://pc2.2ch.net/test/read.cgi/php/1059043704/759-761
http://pc2.2ch.net/test/read.cgi/php/1059043704/768-788 ←ここ!
http://pc2.2ch.net/test/read.cgi/php/1059043704/793
削除理由・詳細・その他:
巨大AA連続投稿(ほぼ同一人物)
荒らしをしている人物は夏の風物詩で、暫く粘着しそうなので、こまめに削除依頼出すのでよろしく。
0809nobodyさん
03/08/10 14:29ID:???my ($year, $mon, $mday, $hours, $min) = unpack('A2A2A2A2A2', $packed_data);
で返った値をtimegm();につっこむ。$mon-1と$year+100を忘れずに。
>>802
useは@INCを辿ってモジュールを探して、
見つけたら読み込んでimportメソッドを実行する。
importされた関数、変数などが別名(エイリアス)で扱えるようになる。
コンパイル時に処理される。
@ISAはクラス内に呼び出されたメソッドがない場合、
@ISAを辿って目的のメソッドを探して実行するようになる。
実行時に処理される。
0810nobodyさん
03/08/10 16:29ID:???作ってみました。
package AB;
sub aloc {
my ($pkg, $a, $b) = @_;
my $obj = bless {"a" => $a, "b" => $b}, $pkg;
return $obj;
}
1;
0811nobodyさん
03/08/10 16:30ID:???package X;
use AB;
@ISA = ('AB');
sub new {
my ($pkg, $a, $b, $x) = @_;
my $obj = $pkg->aloc($a, $b);
$obj->{"x"} = $x;
return $obj;
}
1;
#!/usr/bin/perl
use X;
$q = X->new('A', 'B', 'X');
$ans = $q->{'x'};
print "$ans\n"; # Xと表示、OK
試しに、パッケージXの@ISAの行をコメントにしてみると、alocが見つから
ないと言われます - 当然です。
そこで、パッケージABの2行目に、
use Exporter; @ISA = ('Exporter'); @EXPORT_OK = ('aloc');
を挿入し、パッケージXのuseを
use AB('aloc');
に変更してみたら、上手く行きました。
ということで、useと@ISAの機能は分かりましたが、今度は、ABやXのような
クラスを実装する場合、Exporterで輸出するのが良いのか、それとも@ISAで
継承するのが良いのか、が分からなくなりました。
0812あぼーん
NGNG0813nobodyさん
03/08/10 16:31ID:c9slSjrqif($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN1'} - $defense->{'$DF2'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK1'} - $defense->{'$DF2'};
}
0814nobodyさん
03/08/10 16:32ID:c9slSjrqif($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN2'} - $defense->{'$DF1'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK2'} - $defense->{'$DF1'};
}
($damage < 0) and ($damage = 0);
$defense->{'HP1'} -= $damage;
($damage < 0) and ($damage = 0);
$defense->{'HP2'} -= $damage;
0815nobodyさん
03/08/10 16:32ID:c9slSjrqprint "<!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>";
0816あぼーん
NGNG■ このスレッドは過去ログ倉庫に格納されています