トップページ⇒php
1001コメント315KB

Perl コーディング初心者質問コーナー Part25

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/06/28 01:18ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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
045544703/07/11 00:46ID:???
>>454=>>447です
0456nobodyさん03/07/11 01:00ID:???
>>454
大丈夫。Web系の開発で飯食って10年になるけど、エラーの大半は初歩的ミス。
だから、もし人に聞くときはこれでもかというくらい慎重にしなきゃならん。
045744703/07/11 01:46ID:???
>>456
どうもです。

また何かトラブったらお伺いするかもしれません。
そのときはよろしくお願いします。
0458nobodyさん03/07/11 02:28ID:???
ホントだよね。
俺も3時間はまって、もういいや、寝よっと思って布団はいったとたんに気づいたよ。
外のループと内のループのカウンタ変数混同してた。。。。

それもちゃんと動いてたの途中で壊してやんの。

ずーーーとさかのぼっても駄目であきらめて寝よ、と思ったのに、

手許だよ、テモト!!

ぐしゃっ
0459nobodyさん03/07/11 08:27ID:+GXxdBTx
おはよう。
0460あぼーんNGNG
あぼーん
0461nobodyさん03/07/11 13:23ID:XltnJZI3
すいません。
以下のPERLで、敵が普通に反撃する時の
条件はどの様になっているのか、
教えて下さい↓
http://gekiya77.gi-ga.net/cgi/oshiete.txt
見れば分かると思いますが、
$pに1〜6迄のランダムの数字を与え、
それに従い技を出します。
ただ、420行目からある普通の攻撃もして
くる場合があるので、それはどんな条件に
なった時なのか、教えて下さい。
宜しくお願い致します。
0462nobodyさん03/07/11 13:29ID:???
>>461
600行近くあるソースを「見れば分かる」かよ……
それ以前に何を聞きたいのか不明。日本語の勉強をしてから出直してきてくれ。
0463nobodyさん03/07/11 13:30ID:???
>>461
if elsif else がわからないのか?
上から条件式で判定してどれにもあてはまらないときに&bogu_bt;で
# 敵キャラ通常攻撃処理のサブルーチンに飛ぶだけだろ。
046440103/07/11 13:35ID:???
perlじゃできないってこと?
046546103/07/11 13:35ID:XltnJZI3
>>463
分からないから聞いてるんでしょうが。
まあ、とりあえず、どうもでした。
>>462
何を聞きたいのかは充分に書いて
あるでしょうが。
もう、その表現を使えば勝てると
思ってるね、この馬鹿はw
貴方が日本語の勉強をされた方が、
以下略・・・。
046644103/07/11 13:35ID:???
>>450にだれかおこたえプリーズ
0467nobodyさん03/07/11 13:47ID:???
>>465
基本的な文法もわからないようじゃどうにもならんな。
何度か同じような初歩的質問をしているが、もう相手にしない。
ある程度勉強して理解できるようになるまで二度と来るなよ。
0468nobodyさん03/07/11 13:49ID:???
>>464
「プラットフォームに依存しない」 ← 無理
0469nobodyさん03/07/11 13:52ID:???
>>466
完璧な安全性が保たれるとは言えないけど、
実用レベルの強度は得られるんじゃない?
0470nobodyさん03/07/11 14:04ID:???
>>465
まともなコードも書けない時点であんたは負けてんのよ。
0471nobodyさん03/07/11 14:10ID:???
どうしたのこの子>>465
0472nobodyさん03/07/11 14:15ID:???
>465 ??

$ whois gekiya77.jp
[ JPNIC & JPRS database provides information on network administration. Its ]
[ use is restricted to network administration purposes. For further infor- ]
[ mation, use 'whois -h whois.nic.ad.jp help'. To suppress Japanese output, ]
[ add'/e' at the end of command, e.g. 'whois -h whois.nic.ad.jp xxx/e'. ]

Domain Information: [ドメイン情報]
[Domain Name] GEKIYA77.JP

[登録者名] 西園修
[Registrant] Osamu Nishizono

[Name Server] ns.gekiya77.jp
[Name Server] dns.wadax.ne.jp

[登録年月日] 2003/06/23
[有効期限] 2004/06/30
[状態] Active
[最終更新] 2003/06/23 18:34:07 (JST)

Contact Information: [公開連絡窓口]
[名前] ワダックス
[Name] WADAX
[Email] [email protected]
[郵便番号] 556-0005
[住所] 大阪府大阪市浪速区日本橋4-1-4-903
[Postal Address] 4-1-4-903,Nipponbashi,Naniwa Ward,Osaka City,
[電話番号] +81(6)6630-6049
[FAX番号] +81(6)6630-6049
0473nobodyさん03/07/11 14:17ID:???
if文もわからないやつが書いたソースじゃないだろ
拾い物でしょ
047440103/07/11 14:18ID:???
>>468
じゃぁ、依存するものでもいいからどっかに転がってませんか?
047546603/07/11 14:21ID:???
>>469
その安全性の強度ってのは、ctyptの安全性の強度に依存するって意味ですか?
0476nobodyさん03/07/11 14:28ID:???
>>401
CD-ROM読むだけなら、モジュールいらねーぞ。普通にopen使えば?
0477nobodyさん03/07/11 14:31ID:???
>>475
そういうことだね。
047840103/07/11 15:21ID:???
>>476
え?俺、リッピングしたいんだけど…
open でできるの?
047940103/07/11 15:32ID:???
>>477
ありがとうございます。
0480nobodyさん03/07/11 15:37ID:???
>>478
依存するものでもいいとかリッピングとか後になってあれこれ言わずに
まとめて書け。
それにスレ違い。
048140103/07/11 15:47ID:???
で、どうやるの?
0482nobodyさん03/07/11 16:03ID:???
>>450
それだと暗号化済みのIDとPASSをコピられたら同じことじゃないの?
あとid、passみたいな分かりやすい名前は止したほうがいいと思う。
0483nobodyさん03/07/11 16:10ID:???
>>474
そんなモジュールは知らないが、依存してもいいならWin32::APIとか使えば
何かできそうな気がしなくもない。

漏れはリッピングのコードなんて書いたことないから、これで足りるのかも分からんが。
0484nobodyさん03/07/11 16:30ID:???
>>474
ttp://search.cpan.org/search?m=all&q=CD&s=1&n=100
0485nobodyさん03/07/11 16:57ID:H65xN+pz

perlってどういう意味ですか?
0486nobodyさん03/07/11 16:58ID:H65xN+pz

ていうか何ですか?
0487nobodyさん03/07/11 17:06ID:???
なんでperlでリッピングするのだろう?
0488nobodyさん03/07/11 17:08ID:???
>>485
プログラミング言語です。

english,japanease,perl
0489nobodyさん03/07/11 18:02ID:???
漏れはエロゲーをperlで作りたいのですが、できますか?
0490nobodyさん03/07/11 18:28ID:???
>>489
どんなゲーム形態なのか問わないのであればすぐに作れるぞ。
例えば標準出力にテキスト垂れ流しで、たまに分岐があるぐらいとか。
0491nobodyさん03/07/11 18:29ID:???
>>489 できる。だから、おまいが作りなさい。
0492nobodyさん03/07/11 18:34ID:???
>>489
TkとかWin32::APIとか使えば理論上は可能。
だからがんばれw
0493nobodyさん03/07/11 19:35ID:???
print分さえ分かれば誰でも作れる
0494nobodyさん03/07/11 19:42ID:jaAmfExn
ある一覧のデータを全表示した時に、
例えば年齢の高い順とかって言う風に、
出来るようにしたいです。
その様な場合には、どう記載したら
宜しいのでしょうか?
0495nobodyさん03/07/11 19:50ID:???
>>494
ソートしる。
0496nobodyさん03/07/11 21:31ID:???
>>494
提示したやりたいことが曖昧すぎて、>>495以上のことは言えない。
0497nobodyさん03/07/11 22:02ID:???
そうっとしとけ。
0498nobodyさん03/07/11 22:36ID:???
        \   |    /
         _┌┬┬┬┐_
       ――┴┴┴┴┴―、         __________
      //    ∧// ∧ ∧||. \      /
  __[//____(゚_//[ ].゚Д゚,,) || _ \__ <  >>497を逮捕しにきました
 lロ|=☆= |ロロ゚|■■|■■∪警視庁■■||   \__________
 | ∈口∋ ̄_l__l⌒l____|___l⌒l___||
   ̄ ̄`ー' ̄   `ー'  `ー'   `ー'
049945003/07/12 11:20ID:???
>>482
あ、そうだった・・・だめじゃん
050050003/07/12 12:27ID:???
500 GET ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
050144103/07/12 13:00ID:???
>>441 の質問を最初にしたものです。最初にもどってしまいますが、
自分が >>441 で言った、

>自分が考えつくのは、
>ソケット通信で、
>地道にpostメソッドで渡す方法くらいなんですが・・・。

だと、とくに問題ないですか?
・・・っていうか、これって、可能ですよね?
0502nobodyさん03/07/12 13:14ID:???
perl で使える gzip, gunzip モジュール解説しているページ教えてくれませんか?
倶愚ったけど、ほとんどインストールの解説で gzip とかヒットして探すの疲れた…
0503nobodyさん03/07/12 13:31ID:???
「perl open gzip」
0504nobodyさん03/07/12 13:44ID:???
open( FILE, "| /usr/bin/gunzip -1 -c" );
↑こういうのは無し。外部プログラム呼び出さないで、
perl 内ですませたいので
0505nobodyさん03/07/12 13:58ID:???
Compress::Zlib::memGzip( $buff );
Compress::Zlib::memGunzip( $buff );
0506nobodyさん03/07/12 15:56ID:???
>>505

            ∫    _________
   ∧,,∧     ∬   /
   ミ,,゚Д゚彡っ━~  < ご苦労!
_と~,,  ~,,,ノ_.  ∀   \
    ミ,,,,/~), │ ┷┳━   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ .じ'J ̄ ̄| ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄  ┻

0507nobodyさん03/07/12 15:57ID:???
この店はなんでもあるな
0508 ◆hMJAPH9PWA 03/07/12 16:02ID:???
使った事ないけど、PerlIO::gzipってのもある。
0509nobodyさん03/07/12 17:34ID:???
NOのパラメータから、ファイルに入っている該当の行を削除処理したいのですが、
全く反応が無いです。。。
エラーも出ないため、いや、何よりも初心者なので原因がつかめません。
ご教授お願い致しますm(__)m

sub dl{
if(!open(OUT,"$file")){&error(err_file);}
@DATA = <OUT>;
close(OUT);
$count = @DATA;
$delcount = $count - $in{'NO'};

if($delcount ne ""){
$no = $delcount;
$DATA[$no] = "";
}

if(!open(IN,">$file")){&error(err_file);}
print IN @DATA;
close(IN);
}
0510nobodyさん03/07/12 17:38ID:???
>>509
INとOUTが逆だな。
それはともかく、$DATA[$no] = "";のところを
print $no;
print $DATA[$no];
$DATA[$no] = "";
print $DATA[$no];
とやってみれ。
0511nobodyさん03/07/12 17:49ID:p/T5Jtg4
初心者スレの鉄則

「逆ギレする質問者は釣りか荒らし」

ということで。

>>478
デバイスファイルがあればできるよ。

% perl
open(FILE, "/dev/cd0a") or die $!;
print <FILE>;
^D
CD001EP@@@@@@@@@@@@@@@@@IWANAMI_K4@@@@@@@@@@@@@@@@@騷@IWANAMI_K4
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IWANAMI SHOTEN
DAI NIPPON PRINTING CO,LTD
000000000000000
0000000000000000000000000000000000000000000000000CD001
CDDIC�dPWCTLG 榲PWDEMOUROKUUIDEsKOUJIEN懼SCREEN�ATAlGAIJI 殲TREAM
(略)

ほらね。ちなみに↑は広辞苑のCD-ROM。
0512nobodyさん03/07/12 18:11ID:2K5dewso
質問させてください。
いま、JAVAアプレットでCGIを呼び出してファイルをCGIが読み込んでその内容はアプレットに
返すっていう内容のを作っているんですが、CGIが内容を返すときにヘッダーの内容まで
送られてしまって、困っています。
最悪、その部分はJAVAの方で消してもいいんですが、できればCGIからの送信内容は
通信量の面でも軽くしたいし、ヘッダーの内容は送らないようにしたいんですが
可能でしょうか?
0513nobodyさん03/07/12 18:16ID:???
>>510さん
ありがとうございます。

print $no;------------�@
print $DATA[$no];-----�A
$DATA[$no] = "";
print $DATA[$no];-----�B

NO=8を与えてみたところ、
�@に[9]の表示のみとなりました。
$DATA[$no];-----�Aが無いのはどうしてでしょうか?
(゜▽゜;)
0514nobodyさん03/07/12 18:25ID:???
>>513
変数名が他の部分とかぶってるとか
0515nobodyさん03/07/12 18:27ID:p/T5Jtg4
>>512
可能。nph使う。多くのサーバーでは、CGIスクリプトの名前の先頭に nph- と入れるだけでよい。

例: nph-test.cgi
#!/usr/bin/perl
print "data\n";
exit;

0516nobodyさん03/07/12 18:30ID:???
ヽ(*`Д´)ノ なんでもかんでもここで質問するなー!

ちゃんと適当なスレに書け!
051751203/07/12 18:31ID:2K5dewso
>>515
ありがとうございます。
早速やってみます。多謝
0518nobodyさん03/07/12 18:44ID:???
510>>
515>>
$DATA[$no];-----�A

前の処理で、スカラーに代入してました(゜゜;)

基本は printですね。。。初心に返ります。
ありがとうございました
0519nobodyさん03/07/12 18:52ID:???
>>515
おぉ!初めて知った。その根拠というか、メカニズム教えて
0520nobodyさん03/07/12 19:44ID:???
G(o^-^o)gle < 「No Parsed Header」 or 「NPH」

nphでサーバゲットだぜっの時代があったねぇ
0521nobodyさん03/07/12 19:56ID:???
ディレクトリ作成について質問

深い階層のディレクトリを作成する為に、
以下のコードを書いたんだけど、
もっと効率のいい方法は無い?

#!/usr/bin/perl

$d = './aaa/bbb/ccc/'; # まだ存在ディレクトリ構造

@list = split( /\//, $d );
shift @list;

foreach ( @list ) {
$t .= "$_\/";
mkdir( $t, 0755 );
print "$t\n";
}
0522nobodyさん03/07/12 19:57ID:???
× $d = './aaa/bbb/ccc/'; # まだ存在ディレクトリ構造
○ $d = './aaa/bbb/ccc/'; # まだ存在しないディレクトリ構造

0523nobodyさん03/07/12 20:01ID:p/T5Jtg4
>>522

system qw(mkdir -p $d);

とかじゃ駄目?そういやモジュールもあった気がするけど覚えてない。
0524あぼーんNGNG
あぼーん
0525nobodyさん03/07/12 20:02ID:p/T5Jtg4
訂正。
system("mkdir", "-p", $d);
0526nobodyさん03/07/12 20:02ID:???
>>518
@DATA = <OUT>;
が嘘だったということか?
まあ解決したようなんで別にいいんだけども、ちょっと気になるんで。
0527nobodyさん03/07/12 20:08ID:???
>>523 >>525
ごめん。それだと、win系じゃ動かないんだ…(´д⊂ヾ

確か、win のシステムコール(API) は一発で深い階層の
ディレクトリ作ってくれるんだよね。だから、perl にも俺の
知らない関数かモジュールあるかと思って聞いてみたんだ。

まぁ、chdir しながら mkdir するよりはマシかな
0528nobodyさん03/07/12 20:22ID:???
#!/usr/bin/perl
って書いててもwin系なのか。難儀だな。
できないという結論?
0529nobodyさん03/07/12 20:28ID:???
>>528
\usr\bin\perl.exe があるんです(w
0530 ◆hMJAPH9PWA 03/07/12 21:22ID:???
>>527
File::Pathモジュールをつかう。
ディレクトリの作成だけじゃなく、一括削除もできるよ。
0531nobodyさん03/07/12 21:31ID:???
ま た モ ジュ ー ル か
0532nobodyさん03/07/12 21:32ID:i3OrVbjx
q|ポテトサラダ|
というのがあるとエラーが出ました
それを
"ポテトサラダ"
にしたら正常に動くようになりました
何ででしょう?
0533nobodyさん03/07/12 22:06ID:???
ポが駄目文字に違いない
0534nobodyさん03/07/12 22:12ID:???
だめポ。。。
0535nobodyさん03/07/12 22:14ID:???
>>532
「ポ」は 0x83 0x7c の2バイトで構成される。
qの区切り文字 | は 0x7c。

ポの2バイト目が区切り文字と同じコードのため、そこで q が閉じてしまうので
エラーになる。
0536nobodyさん03/07/12 22:16ID:???
ちなみにこの手のトラブルは、シフトJISでソースを書く以上どうしても避けられない。
EUCで書くようにすると幸せになれるかも。
0537nobodyさん03/07/12 22:35ID:???
こんなところでエムエクースの知識が役立とうとは
0538nobodyさん03/07/13 01:27ID:cL3G8Wfc
だれも>>521にマジレスしないのはなぜだ?
mkpathしかなかろうに・・・・
0539あぼーんNGNG
あぼーん
0540nobodyさん03/07/13 01:51ID:???
>>538
>>530に回答あるじゃん
もしかして使い方まで?
0541nobodyさん03/07/13 02:41ID:???
@aと@bに重複する要素を全て取り出したいです。

例えば
@a=(1,2,3,4);
@b=(2,3);
ならば、2と3が取り出せる。

いい方法ない?
0542nobodyさん03/07/13 02:58ID:???
>>541
ttp://www.pure.co.jp/~learner/program/Perl_tips.html#array_ope
054354103/07/13 03:17ID:???
>>542
サンクス。
0544nobodyさん03/07/13 03:52ID:???
http://www.pure.co.jp/~learner/program/Perl_tips.html#array_ope
0545nobodyさん03/07/13 04:27ID:zHTguhVX
$ban_word='*';
if($comment=~ /$ban_word/){&error();}

上記ケースにおいて、$ban_wordに「*」や「+」が指定されると構文エラーになります。
$comment=~ /*/をやればエラーになるのは明白なので原因はまあいいんですが、
Perlの組み込み関数に「メタ文字をすべてエスケープしてくれる」関数はなかったでしょうか。確か、
&escMeta('文字列');
みたいな使い方をすると文字列中の「*」は「\*」にエスケープされるような・・・
うろ覚えなのですが、心当たりありましたらご教授願います。
0546nobodyさん03/07/13 04:37ID:???
>>545
quotemeta
0547nobodyさん03/07/13 04:41ID:nQJ8+8Yh
>>545
quotemeta。

> &escMeta('文字列');

ここまで分かってるんなら、人に聞く前にperldoc perlfuncを開いてmetaで検索するとか
してみよう。
054854503/07/13 04:43ID:???
朝早くからthx!
どうりでescapeで探しても当たらないわけだ・・・
0549あぼーんNGNG
あぼーん
0550nobodyさん03/07/13 14:14ID:eiBgp+ln

if(!$a && !$b)
は、どういう意味でしょうか?
0551nobodyさん03/07/13 14:23ID:???
>>550
if(!($a != 0) && !($b != 0))
0552nobodyさん03/07/13 14:27ID:???
>550
if($a=~/^0?$/ && $b=~/^0?$/)
0553nobodyさん03/07/13 14:34ID:???
%uFF2D%uFF33 をエンコードしたいのですがどうすればいいでしょうか。
0554nobodyさん03/07/13 14:35ID:???
>>553 エンコードではなく、デコードです…。
■ このスレッドは過去ログ倉庫に格納されています