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

【Perl】初心者コーナー Part17

■ このスレッドは過去ログ倉庫に格納されています
0001 ◆Go4ZKngPGE 02/10/14 17:24ID:???
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。

1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

CGIだけど、なんか質問ある? Part 8
http://pc.2ch.net/test/read.cgi/php/1032704121/
参考書籍の話題は【Perl,CGI】参考書籍 第三版
http://pc.2ch.net/test/read.cgi/php/1030209573/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般/Part2】
http://pc.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は 【 スクリプト改造工房 PART 5 】
http://pc.2ch.net/test/read.cgi/php/1028193595/

過去ログ、その他の役立ち情報は>>2-10あたりを見よう。
0039nobodyさん02/10/15 14:22ID:???
>>37 =~ s/satndard/standard/;
ネタですか?
0040nobodyさん02/10/15 14:42ID:0TY8yVdT
>>38-39
ありがとうございます。解決しました。
すみやかに回線切って逝ってまいります。
0041nobodyさん02/10/15 15:07ID:1tgEM8TW
日本語をひらがなで区切って、出現単語をカウントするものってご存じでしょうか?
自分で作れっていわれそうですが、先人のプログラムがあれば是非利用してみたいです。
英単語をカウントするものはごろごろ落ちてるんですが、日本語のものってちょっと見つからなくて困っています。

例)
一番は一番で三番は四番。
↓

一番 2
三番 1
四番 1

0042nobodyさん02/10/15 15:09ID:???
文字を云々する際は、文字コードぐらいは・・・
0043nobodyさん02/10/15 16:08ID:???
>>41
ひらがなで単語を区切る?
じゃあ、これはどうよ。←
「これはどうよ」が一単語かよ。
日本語を単語に区切るにはchasenなどの形態素解析ソフトが必要。
00444102/10/15 16:45ID:???
>42さん、43さん
ご返答ありがとうございます。
茶筅も調べてみたのですが、細かく区切り過ぎてしまうようです。
一連の単語として区切るようなオプションがあれば一番なのですが。。

茶筅例)
拉致被害者→拉致 被害 者

拉致被害者→拉致被害者の一単語としてカウントしたい。

そこで、ひらがな、もしくは記号(、。「」等)で区切ることができればと考えています。
あくまで漢字、カタカナのみで、ひらがなの単語はカウントしないと考えています。
0045nobodyさん02/10/15 16:51ID:???
>44
「これはどうよ」はさ、「これは どうよ」なのか「これ はどうよ」なのかの判断はどうさせる気よ?
すでにPerlの問題でもない気がするけど。

こないだ見たプロジェクトXのワープロ開発の話を思い出したさ。
00464202/10/15 16:52ID:???
>>44
文字コード書いてないからSJIS対応で書いた。不完全だけと十分だろ。

map($set{$_}++, split(/(?:\x82[\x9f-\xf1])+/));
00474302/10/15 17:06ID:???
>>46
おおすばらし!大洲薔薇師!
たいなし!→他伊那市
0048login:Penguin02/10/15 19:40ID:???
Perl DBI 詳しく紹介したサイト教えて 英語でもOK
また、PerldBIで構築したサイト教えて下さい

また、強化書ですが、 oreilly の perl dbi が
がいいですか
それともascii のperl DBIの本がいいですか?
0049nobodyさん02/10/15 20:18ID:???
>>48
http://pc.2ch.net/test/read.cgi/php/1030209573/
0050nobodyさん02/10/15 20:34ID:???
前スレの続きになりますけど、
push@log,$_ while<LOG>;
と
@log=<LOG>;
とで、スピード的、メモリ的な違いは出ませんかね。
調べられないもので。
0051nobodyさん02/10/15 20:38ID:???
>>50
メモリは結局同じこと、スピードはベンチマークとらないと・・・
0052nobodyさん02/10/15 20:43ID:???
>>50
<LOG>から1行づつ読んで処理するとメモリ的に優しくなる。
00535102/10/15 20:46ID:???
>>50
スピードは大差ない

Benchmark: timing 1000 iterations of code1, code2...
  code1: 1 wallclock secs ( 1.43 usr + 0.00 sys = 1.43 CPU)
  code2: 2 wallclock secs ( 1.43 usr + 0.00 sys = 1.43 CPU)
00545002/10/15 20:51ID:???
あらま。<スピードは大差ない
じゃぁメモリに優しそうな前者を使うのがベターってことですかね。
00555102/10/15 20:53ID:???
>>54
前者が優しいということではないです。>>52さんの言う優しいとは以下のように
すること。

while (<LOG>){
処理
}
00565002/10/15 20:59ID:???
>>55
じゃ配列に格納する2つの例は結局違いはないとなりますな。
調べてくれてありがとございますた
0057nobodyさん02/10/15 23:01ID:???
>>53
何を測りたいベンチなの?
意味のある数字が出ていない気がするが。

--- bench ---
#!/usr/bin/perl
use Benchmark;
timethese( 5, {
 handle => q{
  open F, '<./test.log' or die;
  my @log = (); @log = <F>;
  close F;
 },
 while1 => q{
  open F, '<./test.log' or die;
  my @log = (); push @log, $_ while <F>;
  close F;
 },
 while2 => q{
  open F, '<./test.log' or die;
  my @log = (); while (<F>) { push @log, $_ }
  close F;
 },
});
__END__

> perl -e 'print map { "$_\n" } (0..999_999);' > test.log
> perl bench
Benchmark: timing 5 iterations of handle, while1, while2...
 handle: 19 wallclock secs (14.92 usr + 3.61 sys = 18.53 CPU)
 while1: 10 wallclock secs (10.52 usr + 0.19 sys = 10.70 CPU)
 while2: 12 wallclock secs (11.11 usr + 0.13 sys = 11.24 CPU)
00585002/10/15 23:56ID:???
>>57
おおう。省略形のwhileが最速ってことですかこれは。
省略形の方が速いんすね。
そして @log = <F> が一番遅いとは思いませなんだ。

結論として push @log, $_ while <F>; っていう記述が一番よろしいカンジですか。
0059 ◆hG4XfSMGTg 02/10/16 00:42ID:???
その程度の差はどうでもいいと思うが。
0060nobodyさん02/10/16 01:13ID:???
この程度の差を突き詰めていくもんなんじゃないのperlは
0061nobodyさん02/10/16 02:10ID:???
Perlでは一気にファイルをメモリにいれる方法はあるけど、そのやり方同士で
ベンチを競うほどでもないし、自分が好きなやり方でやったほうがいい。
やり方は何通りもあるってやつです。

速度が気になるのなら、
while (<LOG>) {
 処理
}
とやるか、いっそCで書き直すというほうがマシでしょ。
00625702/10/16 04:13ID:???
>>59-61
>>57 の数字を信じるなら、100万行*5で せいぜい10秒の差だ。
数千行のファイルをたまに触るだけの人が気にしなきゃいけない
数字じゃない。しかし日常的に数十万行のファイルを*Perlで*
扱っているなら、知っておくべき実験結果だろうな。

やり方は色々ある。どんな風に書くも自由だ。
だけど状況によって最適解は変わる事を常に意識しなきゃだめだ。
0063nobodyさん02/10/16 05:58ID:???
至極当たり前のことを。書いてて恥ずかしくないか?
0064nobodyさん02/10/16 07:32ID:???
>>62
まあ、数十万行のファイルを触るときに数千行と同じやりかたをするのか?って疑問を
もって欲しいもんだ。
# しかもそれが日常的な場合だと特に。
0065nobodyさん02/10/16 07:42ID:???
つか10.70 CPUと18.53 CPUじゃ2倍近い差なんだから
普通に効率のいい方を使えばいいっていうだけの話ちゃうの
0066 ◆hMJAPH9PWA 02/10/16 08:05ID:???
100万行のファイルに対してで@log = <LOG>;なんてことを行ったらマシン止まりそうな気がする
0067nobodyさん02/10/16 11:11ID:???

localtime の逆関数みたいのないですか?
$year $mon $mday $hour $min $sec --> $epoc にしてくるようなの。
0068nobodyさん02/10/16 11:28ID:4mkRoll6
>67
use Time::Local;

$epoc = &timelocal($sec, $min, $hour, $mday, $mon, $year);
0069nobodyさん02/10/16 11:36ID:4mkRoll6
>68
補足
年は4ケタ(2002とか)、それ以外はlocaltimeと同じでつ。
曜日は求めた値をlocaltimeにかけると分かるです。
不正な値はエラーになっちゃうんでうまく対策してください。
0070nobodyさん02/10/16 11:54ID:???
>>68
&timelocalの'&'は要らないと思う。
00716702/10/16 12:01ID:???

ありがとうございます。
助かります。
00725102/10/16 12:58ID:???
>>57
>何を測りたいベンチなの?
>意味のある数字が出ていない気がするが。

前レスを受けてのベンチだからわかると思ったんだけど・・・

意味のある数字? timing 1000 でとったんだけど・・・
0073nobodyさん02/10/16 13:15ID:???
>>72
だからさ、高負荷をかける状況になる場合、ファイル丸ごと変数に取り込む
ようなことしないよね。ってことから意味のある数字かどうか考えたらいいんじゃないか?
東京大阪間を最短で歩くコースを考えてくれても、「なんで新幹線乗らないの?」って
言われたらおしまい。これと同じこと。
0074nobodyさん02/10/16 13:27ID:???
全角数字を半角数字に直すにはどうしたら良いですか。
$hoge =~ s/0/0/g;
$hoge =~ s/1/1/g;
$hoge =~ s/2/2/g;
これを9まで続けるでいいでしょうか。
00755102/10/16 13:29ID:???
>>73
意味がわからないんだけど・・・
0076nobodyさん02/10/16 13:40ID:???
>74
ttp://www.din.or.jp/~ohzaki/perl.htm#JP_Z2H

まぁ、そのやり方が一番楽だと思うよ。
0077nobodyさん02/10/16 13:43ID:???
つーかさ、前から思ってたんだけど

open(F,"test.log");
my @log = (); push @log, $_ while <F>;
#@log = <F>;でもどっちでもいいよこの際。
close(F);
foreach(@log){
....
}

より

open(F,"test.log");
my $log = '';read(F,$log,-s "test.log");
close(F);
while($log =~ /\G([^\r\n]+)[\r\n]+/g){
....
}

とかにした方が全然速くない?
特に「ファイルを早く閉じたいから一気読みしてる」とか言ってる奴が
前者を使う理由がわからない。

#for$n($start..$end){$log[$n]の加工}とかで一部だけ
#加工したいなら読み込み段階で素直に
#while(<F>){$n++;next if($n < $start);last if($n > $end);$_の加工}
#とでもした方が全然速いし当然メモリはほとんど使わないし。
0078nobodyさん02/10/16 13:44ID:???
>76
ありがとうございます。
とりあえず今は数字しか必要ないので今のやり方でやります。
00797302/10/16 14:41ID:???
だからでかいファイルを一気にメモリに読み込むようなことはしないから、
それを前提にしたベンチやってても、その結果を考慮に入れる香具師は
いないってこと。
0080nobodyさん02/10/16 14:50ID:???
>>79
逆じゃないの?
一気にメモリに読み込む仕様にした時にでかいファイルを読まれたら
どうなるかは視野に入れて作った方が良いというか。
製作者の意図通りに使ってくれない人なんて沢山いるだろうし。
0081nobodyさん02/10/16 15:12ID:???
>>80
だからね、
「一気にメモリに読み込む仕様にした時にでかいファイルを読まれたら
どうなるかは視野に入れ」たら、普通そういう仕様にしないでしょ。
検討はしましたが、実際には使いませんね、でいいじゃん。

制作者の意図って誰の意図? Larryのことか?
00828002/10/16 15:35ID:???
>>81
落ちけつ。俺だってそんな仕様にはしないし
確かに普通そんな仕様にはしないだろう。

だがその話をしてる人は普通の用途では無いかもしれんし
実用云々は置いておいて単なる処理の話をしてるのかもしれん。
自分じゃまずやらない事だからこそ何か発見があるかもしれんし
色々話すだけなら構わんのでない?
0083nobodyさん02/10/16 15:49ID:???
置換演算子と変換演算子って似てると思うんですけどどこが違うんですか。
s/あ/ア/;
tr/あ/ア/;
これはどっちも同じですよね。
対象文字列に正規表現が使えるか使えないかの違いでしょうか。
0084nobodyさん02/10/16 15:56ID:???
>>83
下って

あの1バイト目とアの1バイト目
あの2バイト目とアの2バイト目

に置換。
0085nobodyさん02/10/16 17:30ID:???
最近、$CMD::form{'data'} みたいに、::を付けるソースが多いのですが
流行なんでしょうか?昔は見なかったような・・・
0086nobodyさん02/10/16 17:46ID:???
時代はPerl5ですよ。
0087nobodyさん02/10/16 18:44ID:???
昔か…
0088nobodyさん02/10/16 18:50ID:???
>>85は浦島さんですか?
0089nobodyさん02/10/16 20:34ID:???
>>77
>while($log =~ /\G([^\r\n]+)[\r\n]+/g){

\Gってなんですか?
あとテキストファイルの読み込みは<FILEHANDLE>が一般的と明言されてますけど
例にあるreadの方が本当に速いんですか?
0090nobodyさん02/10/16 20:56ID:???
>>89
\Gは前回マッチした場所の直後からスタート。
スピードは計ってみりゃいいじゃん。

#! /usr/bin/perl
open(LOG,">test.log");for(1..1000){print LOG 'a' x 1000 ."\n";}close(LOG);
use Benchmark;
timethese(50,{
  1=>q{
  open(F,"test.log");
  my @log = (); push @log, $_ while <F>;
  close(F);
  foreach(@log){next;}
  },
  2=>q{
  open(F,"test.log");
  my $log = '';read(F,$log,-s "test.log");
  close(F);
  while($log =~ /\G([^\r\n]+)[\r\n]+/g){next;}
  }
});
#Benchmark: timing 50 iterations of 1, 2...
#1: 22 wallclock secs (19.37 usr + 0.82 sys = 20.19 CPU) @ 2.48/s (n=50)
#2: 5 wallclock secs ( 3.37 usr + 1.01 sys = 4.38 CPU) @ 11.40/s (n=50)

0091nobodyさん02/10/16 21:44ID:???
>>89
readは読み込み専用に用意された関数だから、そりゃ速いだろ。
ファイルハンドルで回すのが一般的なのは扱いやすい、発展しやすいからじゃ
ないかな。(といってもreadで読むのは別に珍しくは無いと思うけど)
0092nobodyさん02/10/17 01:50ID:???
送信元ポートを指定してUDPパケットを発射したいんですけど、
どうやればいいんですかねえ?
0093nobodyさん02/10/17 03:57ID:???
配布されている掲示板のスプリクトをダウンロードして、
デザインを大幅に変えていた。
変え終わってローカルで最終テストをしている時に気づいた



パスワードが暗号化されていない・・。・゚・(ノД`)・゚・。

このままでは、ダメだと思い、別のところで配布されている
スクリプトに変えようかと思ったが、デザイン変えてしまったし、
折角だから、自分で暗号化してみようかと思い必死で暗号の仕方を探した。

何度も何度も試した。
エラーの繰り返し。

それから、12時間経過・・・(´Д`) =3

もう、別のスクリプト探すyoヽ(`A´)ノウワァン

こんなことなら、初めから別のスクリプトにしておけば良かった。
無駄な12時間だった・・・。(-_-)
0094nobodyさん02/10/17 08:19ID:???
>>93
パスワードの暗号化の部分だけ、別スクリプトからもらってきたら
よかったんじゃない? っていうかパスワード暗号化って必要な
ものなのか?
0095nobodyさん02/10/17 09:13ID:???
書き込み時に入力されたパスを crypt(パス,93)で暗号化して保存
記事変更・削除時に入力されたパスをcrypt(入力,93)使って暗号化、記録してある物と比較
一致すればOK   パスが記録されたファイルを見られても大丈夫

>>93 これじゃ駄目?
0096nobodyさん02/10/17 12:19ID:???
cryptがMD5な鯖でDESなcryptをシミュレートできますか?
0097nobodyさん02/10/17 15:52ID:???
>>94
>パスワード暗号化って必要なものなのか?

((((;゚д゚)))))
0098nobodyさん02/10/17 16:52ID:???
($buf_tmp,@lines)=$buf=~/[^\x0D\x0A]*\x0D?\x0A?/g;
を訳してください。
0099nobodyさん02/10/17 17:03ID:???
>>98
$buf の先頭から改行までを $buf_tmp にセット

以降を同様に配列 $lines にセット
0100nobodyさん02/10/17 17:06ID:???
>>99
ありがとうございます。
01019902/10/17 17:07ID:???
$lines ⇒ @lines
01029602/10/17 17:25ID:???
放置されたので自分でぐぐって調べてみますた。
http://www.mikeneko.ne.jp/~lab/perl/des/
0103nobodyさん02/10/17 20:41ID:???
>>94
何度も別のスクリプトからもらってきて
試してみたんですが、無理でつた。
僕の知識不足です。
さすがに、生のパスワードがそのままログに
残ってしまうのは、もしも漏れた時に・・と考えると・・・。
それに、自分では来訪者のパスワードが見れてしまうので
気持ち悪いのです。。

>>95
わざわざ説明ありがとうございますた。
今試してみたのですが、記事削除時の比較がなかなか上手く
できないです。もう少し頑張ってみます。ペコリ
0104nobodyさん02/10/17 21:26ID:???
>>103
漏れないようにログは拡張子だけのファイルにしてしまいませう
0105nobodyさん02/10/17 23:44ID:???
漏れの姦違いですね・・・
吊るされに逝ってきます
0106nobodyさん02/10/18 01:16ID:eCvV6YKP
古くなったwin95マシンを鯖にしたんですが、アプロダを設置してテストしたところ、

Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ:
"my" variable $year masks earlier declaration in same scope at C:\www\up\upload.cgi line 1366.
flock() is not available on Win95!

と出てしまったのですが、OSが95で flock() を含むスクリプトは使えないってことですか?
何か解決策はありませんでしょうか?
0107nobodyさん02/10/18 01:32ID:???
eval{ flock(); }
010810702/10/18 01:50ID:???
間違った

eval{ flock() };
010910602/10/18 01:58ID:???
>>107-108
できました!ありがとうございました。
0110nobodyさん02/10/18 13:52ID:lRuefofg
会員を募って会員にメールを送るシステムを作りたいんですけど、まず何から覚えるべきですか。
perlで作れるのは掲示板とかチャットとかです。
パスワード発行のやり方とかは知りません。
0111nobodyさん02/10/18 15:00ID:???
>>10
物事をチキンと説明、理解できる日本語
0112nobodyさん02/10/18 15:11ID:???
>>111 遅レスだなw
0113nobodyさん02/10/18 17:46ID:???
>>110
掲示板やchat作れるんならパスワード認証くらい簡単なはず。
一。<form action="hoge.cgi"></form>の中にメールアドレスとパスワードを入力する画面の設計。
二。hoge.cgiでメールアドレスとパスワードをファイルにかき出す。
三。メールアドレスを集めて、sendmailで用意したメール本文を送信。
ところで、パスワードは何に使うのかなぁ
0114名無しさん@カラアゲうまうま02/10/18 19:40ID:???
(゚Д゚)ハァ?
011511002/10/18 19:48ID:???
>>113
メールの送る内容(情報)を選べるようにしたいので、
会員登録後もIDとパスワードでログインして送信設定などを各会員にやってもらう予定なのです。

会員システムの時、IDとパスワードをユーザーが自分で決める方式と
IDは任意でパスワードは自動発行のだいたい二通りがあると思うんですけど
これってどっちがいいんでしょうか。別にどっちも大して変わらないんでしょうか。
0116超凄腕プログラマー02/10/18 20:22ID:???
ペリル程度でグダグダ質問してんじゃねぇよ!( ´,_ゝ`)プッ
0117nobodyさん02/10/18 22:04ID:XuCvNIce
何度試しても上手く行かないんですが、
CJ-CLUB の I-BOARD2001
のアイコンの種類と文字色の種類を増やしたいんですが、
set.cgi で増やしても
500 Internal Server Error
が出てしまいます。
他に書き換えなければならない部分があるのでしょうか?
エディタは秀丸とメモ帳でやってます。
改行は自分では入れていません。
0118nobodyさん02/10/18 22:30ID:???
改造工房逝けば?
0119nobodyさん02/10/18 22:31ID:???
>>117
どこをどうやったのか解らないので何も答えられません。
書き換えた部分と、その前後をコピペくらいしろ
0120nobodyさん02/10/18 23:08ID:???
>>115
自動発行ってトリップみたいなものかな?
実状は自分で決めたパスワードさえ忘れてしまう人が呆れるほど多かったりする罠。
自動発行だと忘れる人は倍増する気もするけど、
メールでしっかり忘れないようにするなら逆に忘れられても大丈夫かもしれない。
0121nobodyさん02/10/18 23:56ID:Ts+deQMH
ローカルでは動くのに、鯖にUPすると500エラーがでます。
どんな原因が考えられるでしょうか?
まったく見当がつかなくて困っています。
おながいします。
0122nobodyさん02/10/19 00:00ID:???
>>121
・CGIが使えない設定
・Perlやシェルの場合のパス違い
・パーミションの実行権なし
・アップロード時の文字コードまたは改行の設定ミスあるいはバイナリモードでアップした
0123 ◆hMJAPH9PWA 02/10/19 00:11ID:???
・必要なモジュールが存在しない
・環境依存なコードが書かれている
・Perlのバージョン
0124デフォルトの名無しさん02/10/19 00:45ID:???
・250台の鯖が死んでる。500もえらがとれたとはね。
0125nobodyさん02/10/19 00:53ID:SecGkhKp
正規表現にマッチした部分だけを変数に格納するには
どう書けばイイですか?
012612102/10/19 01:17ID:???
>>122-123
べんきょうになりますた。
>>124
すっげー根詰めてやってたから、和んだ(w

メールアドレスの@が犯人でした
ありがとうございました
0127rubyist@カラアゲうまうま02/10/19 09:13ID:???
>>121-126
糞言語に相応しい糞なやりとりだな。
0128デフォルトの名無しさん02/10/19 09:36ID:???
>>127
あんたさあ、糞言語の糞スレなんか読んでないで、
rubyスレでまともな発言したらぁ

0129nobodyさん02/10/19 09:51ID:???
>125
()で変数にしたい部分を囲む。
したら$1という変数に勝手に入る。
正規表現のとこに書いてあるだろ。
0130名無しさん@カラアゲうまうま02/10/19 15:26ID:5SBDqdQD
Perlのコーディング標準みたいなものってありますか?
0131nobodyさん02/10/19 15:28ID:???
>>130
1行目にPerlパスを書くことぐらいかな
0132nobodyさん02/10/19 15:31ID:???
教えてください。
perlと格闘してますがぁ、

^Mがどうしても消せません!!!!!!!!!!!!!!!
^Mがどうしても消せないのです!!!!!!!!!!!!!!!

chompやchopでは
^Mがどうしても消せません!!!!!!!!!!!!!!!
どうやって消すのでしょうか?
0133nobodyさん02/10/19 16:01ID:???
>>132
chop を2かいやれ
0134nobodyさん02/10/19 16:05ID:???
いまいち判らないので質問。

perl -e 'BEGIN{}' -p ファイル名 引数
みたいに、-e 、-pを共存してかけますか?
0135nobodyさん02/10/19 16:38ID:???
EXPR が 真なら、ループ処理を行なうコードをブロックを使わずに書くことって
できますか?
0136 ◆hMJAPH9PWA 02/10/19 16:46ID:???
>>130
perldoc perlstyle
perldoc.jpなどに日本語訳あり

>>134
こういうこと?
perl -pe "..." file1 file2 ...

>>135
出来るけど、ブロックだと何か困ることでも?
f() while EXPR;
013713502/10/19 17:01ID:???
>>136
あっ、そうだった・・・
質問間違えてた。EXPRが真なら処理A(ループ含む)をし、偽なら処理B(ループ含まない)なんてことできますかね?
べつにブロック使って困ることはありませんが、できそうになかったので敢えて質問してみました。
0138nobodyさん02/10/19 17:05ID:???
>>137
whileはEXPRが真の時しか実行されないんじゃ…
0139 ◆hMJAPH9PWA 02/10/19 17:20ID:???
>>137
処理を関数にすれば、普通にifなり三項演算子なり使えば問題なさそうだけど。

sub A
{
ループする処理
}
sub B
{
ループしない処理
}

if(EXPR){
A()
}else{
B()
}
■ このスレッドは過去ログ倉庫に格納されています