Perlについての質問箱 34箱目at TECH
Perlについての質問箱 34箱目 - 暇つぶし2ch409:デフォルトの名無しさん
08/02/12 12:12:12
use CGI;
my $delimiter = "\t";
my $q = new CGI;
my $save = $q->param('name') . $delimiter . $q->param('mail');
my ($name, $mail) = split /$delimiter/, $save;

入力はHTMLフォームからを想定しています。
こういった場合に適切なデリミタは何でしょうか。
たまに<>を見かけますが<>を><に変換してる場合じゃないと有効で無いですし
\tは入力が可能、\0は良い方法だと思いますがCGI.pmと衝突します。
\a等が良いのでしょうか。

410:デフォルトの名無しさん
08/02/12 12:14:45
× たまに<>を見かけますが<>を><に変換してる場合じゃないと有効で無いですし
○ たまに<>を見かけますが<>を&lt;&gt;に変換してる場合じゃないと有効で無いですし
ミスりました汗

411:デフォルトの名無しさん
08/02/12 12:52:41
板違いっぽいがスペースじゃだめ?

412:デフォルトの名無しさん
08/02/12 13:13:53
$save の前に入力チェックしてタブ文字を消せばいいだろ

413:デフォルトの名無しさん
08/02/12 14:12:21

my $save = join("&&", map { my $i = $q->param($_); $i =~ s/&/&/g; $i } ("name","mail"));
my($name,$mail) =~ map { s/&/&/g; $_ }(split("&&",$save));

414:デフォルトの名無しさん
08/02/12 18:08:01
>>409
<SOME_UNPREDICTABLE_STRING_XXX> でおk

415:デフォルトの名無しさん
08/02/13 11:16:04
投資家板で名高いプログラマの書いたコードですが
初心者が多く、下記コードについて評価できません
プロの目から見た下記コードの評価を教えて下さいませ

スレリンク(market板:454番)

$vict++;
$vict100++;
print $_ ."$riekiプラス!持ち越し成功!\n";
}
if($end < $start2){
$loss=$start2-$end;
$loss=~s/\-//;
$totall =$loss + $totall;
$totall100 =$loss + $totall100;
$lost++;
$lost100++;
print $_ ."$loss マイナス!持ち越し失敗!\n";
}
}



416:デフォルトの名無しさん
08/02/13 11:16:34
つづきです

if(($cost < 1000)&&($cost > 300 )){
if($end > $start2){
$rieki=$end -$start2;
$rieki=~s/\-//;
$totalr =$rieki+$totalr;
$totalr1000 =$rieki+$totalr1000;
$vict++;
$vict1000++;
print $_ . "$riekiプラス!持ち越し成功!\n";
}
if($end < $start2){
$loss=$end-$start2;
$loss=~s/\-//;
$totall =$loss + $totall;
$totall1000 =$loss + $totall1000;
$lost++;
$lost1000++;
print $_ . "$lossマイナス!持ち越し失敗!\n";
}


417:デフォルトの名無しさん
08/02/13 11:22:13
>>415
前の部分が欠けてて途中からになってるけど…?

418:デフォルトの名無しさん
08/02/13 11:35:29
書きかたはまるっきり初心者

処理内容としては
1.コストで場合分け(ここで見えてるのは300から1000まで)
2.スタートとエンドの差をとって,スタートがエンドより低ければ利益,逆なら損害として出力
3.利益または損害をトータルに加算
4.利益の出た回数と損害の出た回数をカウント.コストの範囲ごとにもカウント

なんつうか小学生でも計算できる内容だ

419:デフォルトの名無しさん
08/02/13 11:43:46
計算さえ出来ればいいんでしょ?
合ってりゃいいと思うよ

420:デフォルトの名無しさん
08/02/13 11:54:35
>>415
軽くスレ読んだが名高いプログラマじゃなくて単に周りに避けられてる面倒くさい人じゃん。
コードは上で言われてるように初心者でも書ける程度のもん。
プログラム書かない人にけん制になると思ったのかもしれんが
こんなの書いて自慢する人より電卓持ってる事務員のがずっとマシ。

421:デフォルトの名無しさん
08/02/13 12:08:22
ちゃんと動いて計算が合ってるならいいんじゃないの?
それ以外に評価しようが無い。

422:デフォルトの名無しさん
08/02/13 12:11:02
「名高いプログラマ」ってとこは確かにどうかと思うコードではあるw

423:デフォルトの名無しさん
08/02/13 12:17:13
あっちのことはよく知らないけど,変な演算する能力よりもデータを見極める目のほうが大事なんじゃないの?

424:デフォルトの名無しさん
08/02/13 12:25:14
主婦が、余った材料で栄養バランスの取れた料理を作るようなイメージ。
プロの料理人と比較しちゃいけない。

425:デフォルトの名無しさん
08/02/13 12:27:12
典型的なうんコードだな

426:デフォルトの名無しさん
08/02/13 12:31:07
>>421
あ、ごめん。機能満たすだけなら充分。
でも向こうのでの使い方が目的あって出してるコードじゃなく
素人にコード見せて牽制してるだけだからこんなの自慢にならんなぁって。

427:デフォルトの名無しさん
08/02/13 12:36:31
データを集積して処理するならともかく、この程度のことなら電卓+ノートのほうがいいと思うがな

428:デフォルトの名無しさん
08/02/13 12:40:32
サイタマン は やっぱり うんこだった!

429:415のスレ住人
08/02/13 12:41:56
名高いプログラマーというより彼は社長だそうです。
年収3000万だったそうです。
ですからプログラムの内容というよりは
アイデアで儲けている方なのかもしれませんね。
真実が定かでは無いのですが彼がIT企業の社長という点はどう思われますか?

430:デフォルトの名無しさん
08/02/13 12:42:37
>>424
だが余った食材をそのまま食べたほうが味も見た目も栄養も手間も優れていたというパターン
ただの自己満足にしかなってないという…

431:デフォルトの名無しさん
08/02/13 12:43:04
こっちに来られると困るからノーコメント。

432:デフォルトの名無しさん
08/02/13 12:44:33
内容云々じゃなくて、これくらいすばらしいコードを書けるスキルがあれば年収2000万くらいは最低限ある、
という内容のことを言っていたのですが、株板では判断できる人が少なかったので参考になりました。

433:デフォルトの名無しさん
08/02/13 12:45:27
           __        ♪
   ヨホホ♪    \   \        ♪
            \/  `' ==‐‐-- 、  ♪
      ξミミミミミ   ./\        .ヽ,
.      |´_`|  /  .\        ,l
       /.__) ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄ ̄|
      ~l└‐L、 _,==.,――=,==r′
      l~~`ゝつ.l l |||/ | l´      l |
 .     ´|| ̄||´ |.|≠  ||       ||

434:デフォルトの名無しさん
08/02/13 12:46:12
>>429
とりあえず
2chに入りびたってコテハンつけてる
そんなIT社長はイヤだ

435:デフォルトの名無しさん
08/02/13 12:46:21
サイタマン社長の名言集です。
どうぞ全部読んであげてください

スレリンク(market板)l50


436:デフォルトの名無しさん
08/02/13 12:46:32
            __,,γ⌒ヽ                _
           ,,-''", ―‐―イ―ュ---、,,,,,,,,,,_        三\
         / ∠  ム_ゝ三i二二(山山アヲ      -= 二)
        γ √  イ,, -"                  .三/
        .ん、_(γ7''"                     ̄
       r㍉,ノ''こ!、,,┴.
       .|  ‘''く′ ,/ │
       .r'ヘ,、  `'イ゙>'"
       .厂|,`'-,,  .|'ヽ、
       .~へ-―‐^''ー"

437:デフォルトの名無しさん
08/02/13 12:47:22
「○○なら年収○○万くらいは最低限ある」 なんて言い方する時点で中二病
ここは2chだぞ

438:デフォルトの名無しさん
08/02/13 12:48:36
個人のスレがたってるような奴を信じるなよw

439:デフォルトの名無しさん
08/02/13 12:50:03
>>437
投資板はcisっていうイレギュラーの塊のような人が住んでるから
うそつきが住みやすいんですよ

440:デフォルトの名無しさん
08/02/13 12:51:27
コテで自慢する人は注目されたいだけ。

>>435
いりません。お引き取りください。

441:デフォルトの名無しさん
08/02/13 12:51:27
2レス目まで読んだ

Results 1 - 10 of about 1,040 Japanese pages for 金拝主義. (0.21 seconds)
Results 1 - 10 of about 5,450 Japanese pages for ボラリティ. (0.14 seconds)
Results 1 - 10 of about 3,130,000 Japanese pages for シュミレーション. (0.10 seconds)
Results 1 - 7 of 7 Japanese pages for イートレイドワラッパー. (0.35 seconds)
プロフィールをていぞう
愚かの骨頂

個性的な語彙を持ってることはわかった

442:デフォルトの名無しさん
08/02/13 12:51:45
サイタマン社長はゴールドカードもupしてるし
信じたいんですがやっぱり嘘なのでしょうか。
客観的に見てあのくらいのプログラムが書ければ年収二千万はいけるのでしょうか

443:デフォルトの名無しさん
08/02/13 12:53:43
>>442
すでに必要な情報は提示されてる。あとは自分で考えれ。
ここは2chだぞ。

444:デフォルトの名無しさん
08/02/13 12:55:09
おー。変数名に数字つかうってスゴいセンスだな。
でどこの幼稚園の子供よ?

445:デフォルトの名無しさん
08/02/13 12:55:13
これだけ持ち上げられるってことはなにか持った奴なんじゃない?

446:デフォルトの名無しさん
08/02/13 12:57:50
どうやら面白ワード生成機として有名みたいだな。

447:デフォルトの名無しさん
08/02/13 12:59:57
サイタマン先生の今までupした物は
200万円くらいのお金と60万円の証券会社の口座と
ゴールドカード4枚ですね。
プログラムのスキルでよく株のツールなどを作ろうかなどと言ったりします

448:デフォルトの名無しさん
08/02/13 13:12:34
>>447
なんだかんだで君も彼にぞっこんっぽいなw

449:デフォルトの名無しさん
08/02/13 13:14:02
>>446
2ch語を適当に組み合わせるしか脳のない「普通の厨」なら、
似たようなクオリティの人工無能も書けるかもしれないけど、
天然素材は模しようがないなw

450:デフォルトの名無しさん
08/02/13 13:19:08
>>449
実は本人はスーパーハカーで,2chに書き込んでるのはサイタマンに作られた人工知能なんじゃないか…
そしてあのコードも学習して自動生成されたんじゃないかと妄想してみたwww

451:デフォルトの名無しさん
08/02/13 13:29:30
>>447
ゴールドポイントカードならぼくも持ってるよ。

452:デフォルトの名無しさん
08/02/13 13:33:07
ま、スレ違いだから去れ

453:デフォルトの名無しさん
08/02/13 15:54:58
aaa1 aaa2 aaa3 aaa4 というファイルがあったときに
通番どおりに結合して1つの出力にする上手い方法ありませんでしょうか?

454:デフォルトの名無しさん
08/02/13 15:59:00
cat 呼び出す

455:453
08/02/13 18:25:02
>>454
ありがとうございます。
catは盲点でした。無事解決しました。



456:デフォルトの名無しさん
08/02/13 18:31:44
配列のなかに配列を複数持っている場合
それらをうまく結合する手段ってないでしょうか?

具体的には以下のような感じです
@array[1] = {aaa, bbb}
@array[2] = {ccc, ddd}
@array[3] = {eee, fff}

このとき、一つの変数にまとめて
{aaa, bbb, ccc, ddd, eee, fff}
となるようにしたいです。

申し訳ないのですが、知恵を貸してください。

457:デフォルトの名無しさん
08/02/13 18:46:13
544 :デフォルトの名無しさん:2007/05/12(土) 02:54:05
深さのある配列を左から順番に呼んでフラットな配列を作りたいんですが、
よい方法ご存知の方いませんか
@a = ([1,2,3], [4,5,6], [[7,8],[9,0]]);
@b = flatten(@a); # 1,2,3,4,5,6,7,8,9,0

546 :デフォルトの名無しさん:2007/05/12(土) 03:16:52
>>544
sub flatten(@) { map { ref $_ eq "ARRAY" ? flatten(@$_) : $_ } @_ }

こんなんどうよ。


458:デフォルトの名無しさん
08/02/13 19:26:12
>>457
456です、回答ありがとうございます。
しかしながら、私が挙げた例の場合にはどのように用いればよいか分からず困っています。

ヒントだけでもいただけないでしょうか?

459:デフォルトの名無しさん
08/02/13 19:29:20
{}はハッシュだろ

460:デフォルトの名無しさん
08/02/13 19:31:12
>>459
理解できました、ありがとうございます!

461:デフォルトの名無しさん
08/02/14 00:42:53
Pgを使って(DBIじゃなく)複数スレッドから同時にDBアクセスを使用と思います。
DBへの接続は各スレッドで行います。
Perl自体はスレッドに対応していても、関連モジュールとかの対応状況がわかりません。
バージョンは以下の通りです。
Perl 5.8.8
libpg 2.1.1
PostgreSQL 8.1
ディストリビューションは、Debian etchです。
スレッドの方が子供の面倒が見やすそうなので、できればスレッドにしたいのです。


462:デフォルトの名無しさん
08/02/14 01:19:43
で、自分では試したくないので、だれかヒマなヤツ、オレのかわりに試してくれんか。
オレは家でゴロゴロしてアニメ観るのに忙しいから。

・・・とか?

463:デフォルトの名無しさん
08/02/14 01:27:23
いえ、アニメじゃないです。 アニメの実写劇場版です。

464:デフォルトの名無しさん
08/02/14 21:24:49
>>462
せっかくぼけてくれたところをマジレスすると、試して問題なかったからと言って、スレッドに対応しているとは限らないから困ってるんです。
たまたま動いているだけってことがあるし。

465:デフォルトの名無しさん
08/02/15 09:03:33
perl5.10が普及するのっていつごろ?

466:デフォルトの名無しさん
08/02/15 22:25:02
>>464
その当たりの情報は、ソースやリリースノートを追うしかないと思う。
やたら古くてあまり参考にならないけど
URLリンク(homepage3.nifty.com)

467:デフォルトの名無しさん
08/02/16 02:06:19
ActivePerlの5.10の最新版(ほかいくつかのバージョン)で、
ppm search (モジュール名)
でモジュールをネットから探してくれないのですが、
何か指定が必要でしょうか。


468:デフォルトの名無しさん
08/02/16 02:59:34
>>467
5.8 と5.10ではバイナリ互換性がないので、単に5.10向けにビルドしたのがないと思われる。


469:デフォルトの名無しさん
08/02/17 01:17:31
winで、perlからmysqlを使っているのですが、
insert into a(a) value("あ");
コマンドラインで打つとうまくいくのですが、perlのDBIではうまくいきません。助けてください。

470:デフォルトの名無しさん
08/02/17 03:10:36
>>469
向こうの(mysql)スレでも言われているように、mysqldのdefault-charsetは確認したか?

471:デフォルトの名無しさん
08/02/17 09:58:05
はい、sjisになっていて、win なのでPerlで書いているソースもそうじゃないかと。

472:デフォルトの名無しさん
08/02/17 11:02:29
>>471
ほんじゃ、unpack()つかって、バイナリの並びを表示して確認してみるとか?


473:デフォルトの名無しさん
08/02/17 11:04:16
>471
最近の Perl は内部 UTF-8 だべ。

474:デフォルトの名無しさん
08/02/17 12:00:13
>>471
>>470で聞いたのは、mysqldの’connect’と’client’のcharsetのこと。

mysqldのversionを明記してないけど、多分4.1か5.0だと仮定して、
perl-DBD-mysqlで接続したときの、default-charsetがちゃんと’sjis’なり’cp932’になってない。
(mysqldとDBD-mysqlを自前でコンパイルしてない限り)

つうことでそこを確認、変更しましょう。
ちなみに>>469で書いてるみたいに、コマンドラインのmysql.exeからLoginして確認した
’charset’関係は、あくまでもコマンドラインのmysqlからの接続時のみに効いてる状態なんでそれとは別。

475:デフォルトの名無しさん
08/02/17 13:47:20
>>469
insert 以前にさ、select はうまくいくの?
初心者なら、簡単な事からはじめてみよう。

use utf8;
use DBI;
my $db = DBI->connect("DBI:mysql:以下省略・・・
  $db->do('SET NAMES UTF8');

$id = 1;
my $sql = "SELECT name,address FROM members WHERE id=$id;";
my $sth = $db->prepare($sql);
 $sth->execute or die DBI::errstr;
 $sth->bind_columns(undef, \(my($M_name,$M_address))) or die DBI::errstr;

my $rc = $sth->fetch();
 utf8::decode($M_name);
 utf8::decode($M_address);

insert はこの逆をすればいいだけ。

476:デフォルトの名無しさん
08/02/17 16:29:46
設問1

f-e-d-c-b-a-0-a-b-c-d-e-f

477:デフォルトの名無しさん
08/02/17 16:31:00
設問2

9-8-7-6-5-4-3-2-1-X-1-2-3-4-5-6-7-8-9

478:デフォルトの名無しさん
08/02/17 17:13:02
以下の問題を定義しなさい。

1{"f" = "-f == f" && "+f == f"}
2{"9" = "-9 == 9" && "+9 == 9"}
3{構成文省略}
"9" は "f" に等しく、また "-9" は "-f" に等しい
"0" は "X" に等しいので "0" == "X" = "n" とする
先ず此の構成を "x,y,z && n" を成型にしなさい
また "n" は "y" で在り "9…0…9" まで存在する
しかし "n = y" の配列は"次の"配列 "9…0…9" を使用する事!
残された "9…0…9" は "1/3" の後の "1/4" で使うが?
"n" == "0 = X" && "x,y,z" = "x,y,z" == "n/4" に為りますが構成は入り組んで居りますね?

479:デフォルトの名無しさん
08/02/17 17:17:15
日本語が苦手なら英語でおk

480:デフォルトの名無しさん
08/02/17 17:19:52
どちらのお国のガイジンさんですか

481:デフォルトの名無しさん
08/02/17 17:26:21
宿題は自分でやるか先生に聞きなさい。ためにならん。

482:デフォルトの名無しさん
08/02/17 17:26:35
いくらなんでも丸投げすぎワロタw

483:デフォルトの名無しさん
08/02/17 17:28:26
解読できません><
誰か和訳たのむ

484:デフォルトの名無しさん
08/02/17 18:52:46
>>476-478
くだらねぇ問題はここへ書け ver.3.14(57桁略)4592
スレリンク(math板)

485:デフォルトの名無しさん
08/02/17 20:29:46
>>476
ん?

>>477
え?

>>478
パルプンテ

486:デフォルトの名無しさん
08/02/17 21:40:18
>>478
居りますよ

487:デフォルトの名無しさん
08/02/17 22:24:11
おちんちんの傘のまわりに小さいギザギザがあるんですが
医者に見せたほうがいいですか?

488:デフォルトの名無しさん
08/02/17 22:28:07
>>487
このスレ的には大きなツブツブのほうが好まれますね

死ね

489:デフォルトの名無しさん
08/02/18 21:53:13
active perl をダウンロードしようと思い
URLリンク(www.activestate.com)
にいったのですが
久々に訪れてみたら、
ずいぶん様子が違いダウンロードする場所がわかりません
どこにあるのでしょうか

490:デフォルトの名無しさん
08/02/18 21:55:36
URLリンク(www.activestate.com)

491:デフォルトの名無しさん
08/02/18 21:58:52
>>490
即答ありがとうございます 助かりました

492:デフォルトの名無しさん
08/02/18 23:48:34
XML処理用のマッピングファイルを以下を参考にして作成しました。

URLリンク(homepage3.nifty.com)

作成したマッピングファイルは、規定のディレクトリに置けば良いのですが、
ローカルディレクトリに置いたまま使用したいと考えています。
任意のディレクトリをマッピングファイル検索パスに追加する方法はあるのでしょうか?


493:デフォルトの名無しさん
08/02/19 10:39:35
中身見た?

494:デフォルトの名無しさん
08/02/20 18:14:27
$moji = 'a<>b<>c<>';

495:デフォルトの名無しさん
08/02/20 18:15:38
ミスです。

$moji = 'a<>b<>c<>';があって
2番目だけを切り取るいい方法ってありますか?
配列ならspliceみたいな

496:デフォルトの名無しさん
08/02/20 18:20:22
配列にしてspliceすればいい。

497:デフォルトの名無しさん
08/02/20 18:52:37
$moji =~ s/^([^<>]+<>)([^<>]+<>)/$1/;

498:デフォルトの名無しさん
08/02/20 18:54:53
s/^((?:.*?<>){1})(?:.*?)(?:<>|$)/$1/;

499:デフォルトの名無しさん
08/02/20 18:59:54
s/qあwせdrftgyふじこlp. くぁwせdrftgyふじこlp;/;

500:デフォルトの名無しさん
08/02/20 22:39:18
>>495
「切り取る」とは
除去なのか
$moji =~ s/(?<=<>).*?(?=<>)//; # a<><>c<>
$moji =~ s/(?<=<>).*?<>//; # a<>c<>
取得なのか
$value = (split /<>/, $moji, 3)[1]; # $value = 'b';

501:デフォルトの名無しさん
08/02/21 19:15:50
Windows Excel から Perl スクリプトを実行し、その結果を受け取ることはできますか?
目的は Perlスクリプトに GUIラッパーをかぶせることです。
処理結果を Excel に渡してグラフ表示することなども考えてますので、
その意味でも Excel から一貫して操作できれば、と考えています。
具体的には Web サーバからダウンロードした Apache の access log を
見やすく解析したいと思っています。
業者さんの設置してくれた アクセスログ解析CGI では得たい情報が得られないので、自分でなんとかしようと思いました。
実行するのは会社のパソコン上です。Perl の実行環境は用意しようと思っていますが、
それ以外のローカルサーバでの CGI とか PHP とかは今のところ考えていません。
環境は WindowsXP、Excel 2003 です。
どうぞよろしくお願いします。

502:デフォルトの名無しさん
08/02/21 20:21:42
Excelスレ池

503:デフォルトの名無しさん
08/02/21 20:45:24
Perlで解析結果をファイルに書き出して
Excelのマクロでグラフにすればいいんじゃないかな

504:デフォルトの名無しさん
08/02/21 20:46:10
え、Perlいらなくね?

505:>>501
08/02/21 22:11:59
レスありがとうございます。
>>502
やはりスレ違いでしたか…Excel VBAスレのテンプレ読んでこちらに来てしまったのですが、
書き込んでからやっぱりこっちのスレは違うかもと思いました。申し訳ありませんでした。
>>503
Perlを実行するのを、DOS窓からコマンドを打ち込むのではなく、例えば
Excel の マクロの中から実行できないかと思いまして…。
>>504
Excel の VBAでスクリプトを作りかけたんですけど、簡単な置換をさせただけでも
結果が帰ってくるまでに5分ぐらいかかってしまいました。それでPerlに変えたんです。
もっとも実行させたのがPPCのMac上だったので、Windowsだったらもっと早いとは思うのですが…。

ではExcelのスレに移動することにします。
レスいただきどうもありがとうございました。

506:デフォルトの名無しさん
08/02/22 09:29:51
携帯のアクセス制限はどうすれば良いの?
IPアドレスだと毎回変わるんだが

507:デフォルトの名無しさん
08/02/22 14:50:54
perlで、「iostat -x」の出力結果の
----------------------------------------------------
extended device statistics
device r/s w/s kr/s kw/s wait svc_t %b
twed0 6.3 35.9 81.1 565.8 0 9.8 7
----------------------------------------------------
の中の、「81.1」と「565.8」だけ標準出力したいのですが、
試行錯誤したのですが、うまくいきません。
最後に試したのが、以下のスクリプトですが、
何も表示されずにちょっとお手上げです。
どなたかご指摘頂けないでしょうか?
どうぞお願いします。


----------------------------------------------
#!/usr/bin/perl

open(FILE, "iostat -x");

while (<FILE>) {
if (/^twed0?\s+?[0-9\.]+?\s+?[0-9\.]+?\s+?([0-9\.]+)?\s+?([0-9\.]+)?\s+?[0-9]+?\s+?[0-9\.]+?\s+?[0-
9]+$/) {
print "$1\n";
print "$2\n\n\n";
}
}
close(FILE);
----------------------------------------------

508:デフォルトの名無しさん
08/02/22 14:55:33
open(FILE, "iostat -x |")

509:デフォルトの名無しさん
08/02/22 15:01:39
>>508
アドバイスありがとうございます。
>>508さんの方法でもやってみたのですが、やはり何も表示されませんでした。
何がまずいんだろう・・・

510:デフォルトの名無しさん
08/02/22 15:11:34
……

511:デフォルトの名無しさん
08/02/22 15:15:43
>>507
最後の改行コードは大丈夫?

512:デフォルトの名無しさん
08/02/22 15:25:30
chomp汁!

513:デフォルトの名無しさん
08/02/22 15:35:15
kwsk見てみたが正規表現が間違ってるっぽいな
もうちょっと見てみるわ

514:507
08/02/22 18:56:36
>>511>>512>>513
お手数お掛けしてすみません。
私は、いつもphpを使っているので、phpのperl互換の正規表現で色々と試行して、
phpでは正規表現の部分で正常にできました。
どこが動かないのかデバックコードを書いてみました。

----------------------------
#!/usr/bin/perl

open(FILE, "iostat -x |");
print"-";
while (<FILE>) {
if ("/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/i") {
print "$2\n";
print "$4\n\n\n";
}
print "*";
}
close(FILE);
-------------------------------------

上のスクリプトで実行すると、出力結果が
「-
*
*」(改行つめました)が出力されます。
シェルから、「iostat -x」とたたくと、前述ようにきちんと出力します。

たぶん、if文の使い方が悪いと思うのですが、
どのようにやるのが正しいのでしょうか?多分、初歩的なことかも?

引き続き、宜しくお願いします。お手数お掛けします。

515:507
08/02/22 18:58:41
あ!、改行が複数飛び飛びに入っている実行結果から$2と$4は空文字になっているのだと思います。
でも、そこからどう解決できるのかが分かりません。う~ん。

516:デフォルトの名無しさん
08/02/22 19:16:33
>>514
if(~)は何でdouble quoteしてるの?

517:507
08/02/22 19:21:21
>>516
これは初めてつけていなかったのですが、試行錯誤していて試しにつけてみたら、
if文の中を実行ができるようになりました。(複数改行が出力されます)

本来はつけないのが正しい記法なのでしょうか?
そうだとしますと、ますます混乱してきました。

518:デフォルトの名無しさん
08/02/22 19:27:11
>>517
"で括った文字列は空文字列でなければ必ず真と判断される。だから意図した条件を満たさない行も出力されてるでしょ
付けちゃだめだよ

今iostatが使えない環境なので>>507のデータをファイルに入れているんだが、これはきっと期待通りの動作だろう

#!/usr/bin/perl

open(FILE, "iostatdata.dat");
print"-\n";
while (<FILE>) {
chomp;
if (/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/i) {
print "\$2 = $2\n";
print "\$4 = $4\n";
}
print "*\n";
}
close(FILE);


519:507
08/02/22 19:44:14
>>518
わざわざコードまで書いて下さって、本当に親切にどうもありがとうございました。
早速試してみたのですが、う~ん...結果はうまくいきませんでした。

●iostatの実行結果
------------------------------------------------------------------------------
www# iostat -x
extended device statistics
device r/s w/s kr/s kw/s wait svc_t %b
twed0 5.1 37.6 78.3 598.9 0 10.5 7
------------------------------------------------------------------------------

520:507
08/02/22 19:44:38
●perlでの実行結果
----------------------------------------------------------------------------
#!/usr/bin/perl

open(FILE, "iostat -x |");
print"-";
while (<FILE>) {
# if (/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/i) {
# print $1 . "\n";
# print $4 . "\n\n\n";
# }

chomp;
if (/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/i) {
print "\$2 = $2\n";
print "\$4 = $4\n";
print "*";
}


print "*\n";
}
close(FILE);
------------------------------------------------------------------------------
# /home/test/test.pl
-*
*
*
------------------------------------------------------------------------------

521:507
08/02/22 19:45:41

●【参考】phpの参考結果
----------------------------------------------------------------------------
$word = "twed0 5.1 37.6 78.3 598.9 0 10.5 7";
$word = preg_replace("/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/", "$2--$4", $word);
echo "->". $word . "<-";
----------------------------------------------------------------------------
->37.6--598.9<-

522:デフォルトの名無しさん
08/02/22 20:29:58
>>506
各社の携帯電話が使うIPアドレスの範囲は公式ページに載っているので、それで制限することはできる。
特定の携帯電話をはじくのは無理かな。同じ機種使ってれば、区別のしようがないし。端末IDを送信してれば区別できるけど。

523:デフォルトの名無しさん
08/02/22 20:35:23
じゃオレも。

>>521 のphpをそのままperlの文法に書き換えただけでの結果
------------------------------------------
$word = "twed0 5.1 37.6 78.3 598.9 0 10.5 7";
$word =~ s/^twed0\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)$/$2--$4/;
print "->". $word . "<-";
------------------------------------------
->37.6--598.9<-

ほらちゃんと>>521と同じ結果が出たぞ。
何が違うのか、よ~く見てみろ。
「問題の切り分け」 って習わなかったのか?
phpだろうがperlだろうがjavaだろうが、
どんな言語でもデバッグの手法は同じだよ。
もういちど基本に帰れ。

524: ◆TWARamEjuA
08/02/22 21:41:04 BE:1524672-2BP(7072)
つ s

525:デフォルトの名無しさん
08/02/22 22:58:53
>506
やっぱ端末情報を拾うのが一番じゃないか?

526:デフォルトの名無しさん
08/02/23 03:38:59
>>507,523
x フラグつけてくれ。読みにくくてかなわんw


527:デフォルトの名無しさん
08/02/23 11:25:03
そもそも正規表現で拾う必然性すらない。

#!/usr/bin/perl -w
use strict;

# open IOSTAT, 'iostat -x |' or die $!;
*IOSTAT = *DATA;
scalar <IOSTAT>; # extended device statistics
my @col = split /\s+/, <IOSTAT>;
my %v;
$v{'device'} eq 'twed0'
    and print "$v{'kr/s'}\n$v{'kw/s'}\n\n\n"
  while @v{@col} = split /\s+/, <IOSTAT>;
close IOSTAT or die $!;

__DATA__
extended device statistics
device r/s w/s kr/s kw/s wait svc_t %b
twed0 6.3 35.9 81.1 565.8 0 9.8 7
twed1 5.1 37.6 78.3 598.9 0 10.5 7

528:デフォルトの名無しさん
08/02/23 15:19:23
それを言っちゃオシマイよ

529:デフォルトの名無しさん
08/02/23 21:35:32
// データを1行読み出す。
function GetNextData(){
if( $line = fgets($this->m_file_hd, 1024) ){
$line2 = split($this->m_pause_chr, $line);
$ans = new Line();
$ans->SetData($line2[0], $line2[1]);
}else{
$ans = "";
}
return $ans;
}

変数名の最後に数字使うのは初心者だろ?
もしコード拡張で数値計算が入ったら紛らわしい

530:デフォルトの名無しさん
08/02/23 22:04:21
だって、変数名の最初に数字がつかえないんだもん。


531:デフォルトの名無しさん
08/02/24 00:22:52
誤爆か?
考え込んでしまった

532:デフォルトの名無しさん
08/02/24 01:25:43
evalって、エラーがなければ$@が空文字列であることが保証されるとのことですが、
evalのリターンはエラーがあった場合、undefであることが保証されますか?
definedな戻り値と$@が両立するケースはありますか?

533:デフォルトの名無しさん
08/02/24 10:18:31
>>532
<q cite="URLリンク(perldoc.jp)">
構文エラーや実行エラーが発生するか、die 文が実行されると、
eval の値として未定義値が返され、$@ にエラーメッセージが設定されます。
エラーがなければ、$@ は、空文字列であることが保証されます。
</q>

534:530
08/02/24 11:01:47
>>531
ごめん。ぼけてみたんだけど、はずした。


535:デフォルトの名無しさん
08/02/24 11:42:40
>>533
どうもです!構文エラーと実行エラー以外に$@が設定されるエラーはないと
考えていいんですよね??素人丸出しな質問ですが。

536:デフォルトの名無しさん
08/02/24 13:15:54
>>535
URLリンク(search.cpan.org)
<q cite="URLリンク(perldoc.jp)">
最後の eval() 操作子による Perl の構文エラーメッセージです。
</q>

537:デフォルトの名無しさん
08/02/24 20:02:29
>>534
いやまあ、あなたのことじゃないんで気にしないで

538:デフォルトの名無しさん
08/02/26 02:30:35
コンパイル時にパッケージ名とサブルーチン名を区別できない可能性があるから、
サブルーチンの名前には大文字を使わないと聞いたことがあるのですが本当でしょうか?

また実際に区別できないことがあるのは、どういった使い方をした場合でしょうか?

539:デフォルトの名無しさん
08/02/26 11:05:25
>>538
コンパイラが大文字小文字でパッケージ名と関数名の
区別を付ける事はないので嘘。
URLリンク(perldoc.jp)

> 実際に区別できないことがある
人間が区別を付けにくいという意味では
func_or_method FuncOrClassOrFh @arg;

540:デフォルトの名無しさん
08/02/26 15:03:13


541:デフォルトの名無しさん
08/02/26 16:07:27
>>539
回答ありがとうございます。

一般的にパッケージ名に大文字を使うため、サブルーチンの名前にも大文字を使うと、
パッケージ名とサブルーチン名が重複する可能性があり、
重複するとコンパイラが区別ができないことがあるのかと、
疑問に思ってるのですが、これについてはどうでしょうか?

542:デフォルトの名無しさん
08/02/26 16:50:13
「名前空間」の勉強してこいよ

543:デフォルトの名無しさん
08/02/26 17:11:44


544:デフォルトの名無しさん
08/02/26 18:01:02
重複して困るのはサブルーチン名でなくラベルやファイルハンドル。

#!/usr/bin/perl -w
use strict;
package Foo; sub Foo { join '', @_ }
package Bar; sub Bar { print 'Bar!' }
package main;

# これはOK
# print Foo Foo Foo => "\n", Foo->Foo("Foo!\n"); # FooFoo\nFooFoo!\n
# Bar Bar; __END__ Bar!

# パッケージ名と同名のファイルハンドル
# open Foo, '>./Foo.txt' or die $!;
# Foo->Foo('Foo!'); # ここで混乱して実行時エラー
# close Foo; __END__

# goto EXPR を goto LABEL で解釈してコンパイルエラー
# for (1..5) { $_ > 2 ? goto Foo Foo 'Foo' : print "$_, " }
# FooFoo: print 'foo!'; __END__

# 優先順位の明確化で解決
# for (1..5) { $_ > 3 ? goto(Foo Foo 'Foo') : print "$_, " }
# FooFoo: print 'foo!'; __END__ 1, 2, 3, foo!

545:デフォルトの名無しさん
08/02/26 18:45:04
>>544
非常に分かりやすく解説してくださってありがとうございます。

URLリンク(perl.g.hatena.ne.jp)
こちらで書いてあるのは間違いということで、理解しました。

546:デフォルトの名無しさん
08/02/26 21:59:27
素人が趣味で書いたホームページを鵜呑みにされても・・・

547:デフォルトの名無しさん
08/02/26 23:18:46
何かあるのかと思って確認のために聞いただけじゃないか

548:デフォルトの名無しさん
08/02/27 10:27:01
素人かどうかなんてわからないだろ

549:デフォルトの名無しさん
08/02/27 10:28:24
わからないなら素人として扱うのが安全だろ

550:デフォルトの名無しさん
08/02/27 11:18:38
じゃあここでレスしてるのも素人ばっかりだなw

551:デフォルトの名無しさん
08/02/27 16:12:38
お前はその前提で喋ってればいいんじゃね?
馬鹿だなーって思われるだけだけど。

552:デフォルトの名無しさん
08/02/27 16:23:09
わかった。>>551は超素人ってことで。

553:デフォルトの名無しさん
08/02/27 16:42:13
笑うところだろw

まぁ鵜呑みにするな、っていうのは真理だな

554:デフォルトの名無しさん
08/02/27 22:22:22
素人です。教えてください。
何もわかりません。動きません。
絶対プログラムは正しいので、Perlのバグだと思うのです。
・・・・。

555:デフォルトの名無しさん
08/02/27 22:32:58
どっかのコピペか?

556:デフォルトの名無しさん
08/02/28 09:41:09
質問です。

func_hoge() というサブルーチンがあります。
このサブルーチンは、内部でエラーが起こった場合のみ、エラー番号やエラーメッセージを返してきます。
何も問題なければ 0 やら空文字列が返ってくるとします。

func_hoge()を呼び出すときは、

  my $err = func_hoge();
  if ($err) { die "Error func_hoge [$err]"; }

というように返り値を保持しておき、
エラーがあれば、その時のエラー番号(可能であればサブルーチン名などの目印も)を表示したい。

これはこれで全く問題ないのですが、func_hoge()の呼び出し箇所が増えると
エラー格納用の一時的な変数が増えてしまいますし、何より面倒です。
何か楽できる方法ありませんか?

557:デフォルトの名無しさん
08/02/28 11:00:53
func_hoge de die

558:デフォルトの名無しさん
08/02/28 11:13:37
func_hoge()の中でuse Carpしてcroakすればいいんじゃね?
die させないときはeval{}で囲えばいいし。


559:デフォルトの名無しさん
08/02/28 11:46:45
サブルーチンの中を弄らないと無理かー。
呼び出し側だけで何とか小手先の変更で出来ないかなとか考えてた。ありがとう。

560:デフォルトの名無しさん
08/02/28 12:41:38
ん?
push @err, func_hoge();
みたいなもんでいいのかな。

561:デフォルトの名無しさん
08/02/28 12:53:34
新しいサブルーチン作ればいいじゃん。

562:デフォルトの名無しさん
08/02/28 14:44:00
if (my $err=func_hoge()) { die "Error func_hoge [$err]"; }


563:デフォルトの名無しさん
08/02/28 22:13:15
>560
状況にもよるけど、サブルーチンを呼ぶたびにエラー判定しなきゃならないような類だと
結局手間は変わんないかも。

>561
最終的には多分そうなると思う。

>562
やっぱそれが一番スマートなのかなあ。

564:デフォルトの名無しさん
08/02/29 00:37:04
Perlってパースした後の構文木をプログラムで書き換えることはできないの?

565:デフォルトの名無しさん
08/02/29 03:20:56
dieで死ぬだけなら再利用しちゃえばいいんじゃないの?w

566:デフォルトの名無しさん
08/02/29 09:02:53
>>564
目的は?

567:デフォルトの名無しさん
08/02/29 10:51:40
Perl の localtime 関数はエポックからの秒数をローカル時刻の年月日に
分解してくれますね。これとは逆に、ローカル時刻の年月日を
エポックからの秒数に変換するにはどうしたらよろしいでしょうか?

568:デフォルトの名無しさん
08/02/29 11:05:27
timelocal


569:デフォルトの名無しさん
08/02/29 13:23:58
一度くらい自分で作ってみるのも悪くないけど(簡単だから)、
出来上がったらそれ以降は>>568を使っておけばいいな。

570:デフォルトの名無しさん
08/02/29 14:22:22
Perl で split 関数が返す配列を、一度配列に入れずに、すぐに配列参照として
受け取ることはできますか?

$ar = split(/,/, $str);
$ar_ref = \@ar;

じゃなくて

$ar_ref = split(/,/, $str);

のようにしたい。

↓こんなのじゃうまくいかなかった。
$ar_ref = \split(/,/, $str);


571:デフォルトの名無しさん
08/02/29 14:38:52
anonymous array reference constructor

572:デフォルトの名無しさん
08/02/29 14:43:44
>>571
つまり、こういうことですか?

$ar_ref = [ split(/,/, $str) ];

でも、これだと、配列の要素をコピーすることになりそうで (なりますよね?)
無駄ではありませんか?

573:デフォルトの名無しさん
08/02/29 14:45:55
>>572
実際の動作がどうなるのかはソースを読む。
読みたくないなら、明らかにコピーしそうなperlコードとBenchmarkで比較。

574:デフォルトの名無しさん
08/02/29 15:05:51
>>572
最適化されるよ。

575:デフォルトの名無しさん
08/02/29 16:29:22
>>574
証拠はある?

576:デフォルトの名無しさん
08/02/29 16:39:17
証拠がソースだったら読むのか?

577:デフォルトの名無しさん
08/02/29 16:47:30
他人に頼りすぎだ。
パフォーマンスが気になるなら、ちょっと確かめてみればいい。
こんなコード断片が書けないのなら、パフォーマンスなど気にするだけ無駄。

use Benchmark qw(timethese);
my $source = join(',', ('abcdefg')x80000);
my $result_ref;
timethese(100, {
temp => sub { my @temp_array = split(/,/, $source); $result_ref = \@temp_array; },
bracket => sub { $result_ref = [ split(/,/, $source) ]; },
none => sub { split(/,/, $source); },
});

Benchmark: timing 100 iterations of bracket, copy, none, temp...
bracket: 9 wallclock secs ( 8.94 usr + 0.00 sys = 8.94 CPU) @ 11.19/s (n=100)
none: 6 wallclock secs ( 6.76 usr + 0.00 sys = 6.76 CPU) @ 14.80/s (n=100)
temp: 15 wallclock secs (14.27 usr + 0.00 sys = 14.27 CPU) @ 7.01/s (n=100)

578:デフォルトの名無しさん
08/02/29 17:00:25
>>575
証拠は俺の脳内。
信じられないなら自分でソース読もう。

579:デフォルトの名無しさん
08/02/29 17:54:31
>>577
void コンテキストで split 使うと @_ に入るので注意な。

580:デフォルトの名無しさん
08/02/29 19:05:26
lala-zコンテキストなら?

581:ジミー
08/02/29 21:41:12
$str = "a,b,";
@ar = split(/,\n/, $str);
print join(',', @ar);

これを実行すると a,b と表示されます。
つまり、split は末尾の空文字列を取り出してくれないようです。
末尾の空文字列を取り出して、このコードが a,b, と表示させるように
するための簡単な方法ってありませんかね。
(もちろん愚直に工夫すれば何とでもなるが、スマートな解がほしい)

582:ジミー
08/02/29 21:41:59
>581
コード間違えた。(実験してたコードにしてもた。)
× @ar = split(/,\n/, $str);
○ @ar = split(/,/, $str);



583:ジミー
08/02/29 21:46:48
解決した。
@ar = split(/,/, $str, -1);
ですね。

584:デフォルトの名無しさん
08/02/29 21:48:12
print join ',', split /,/, q/a,b,/, -1;

585:デフォルトの名無しさん
08/03/01 00:44:11
>>566
特にないけど、Perlならそういう面白いインターフェイスが用意されてそうだなと思ったまでで

586:デフォルトの名無しさん
08/03/01 01:06:48
麻雀なのに、娘とか嫁とか家族とかw


乞食は想像を絶するなw

587:デフォルトの名無しさん
08/03/01 01:07:14
スマン、誤爆

588:デフォルトの名無しさん
08/03/01 09:16:39
色々と妄想させてくれる。

世の中には「義妹が最強だろ」という誤爆レスが元になって作られたゲームとかあるからな。
人間の妄想力ってのは凄いもんだぜ。

589:デフォルトの名無しさん
08/03/02 10:27:48
おにぃちゃん、ヤメテ!

590:デフォルトの名無しさん
08/03/02 10:48:55
ヘッヘッヘ、いいじゃねぇか ポン ヘッヘッヘ

591:デフォルトの名無しさん
08/03/02 11:09:57
Active Perl 5.10.0 用の DBD-mysql ってどこにあるの?

592:デフォルトの名無しさん
08/03/02 11:48:26
>589-590
エロゲじゃねーよw

593:デフォルトの名無しさん
08/03/02 14:23:27
>>591
URLリンク(cpan.uwinnipeg.ca)

594:591
08/03/02 21:46:50
>>593
ありがとう。無事インストできたよん。

595:デフォルトの名無しさん
08/03/03 09:11:40
インスト

596:デフォルトの名無しさん
08/03/03 09:43:34
泣いても笑っても、お前のまんじゅうは無いよ。

597:デフォルトの名無しさん
08/03/03 16:28:09
Wiki文法でのテキスト整形で悩んでいます。

改行含めた長い文章が $i に入ってます。
文章中のリンクアンカーに相当する部分はWikipediaなどでお馴染みの
[[テキスト]]
という感じで書かれています。

これを
$i =~ s/\[\[(.+?)\]\]/<a href="$1">$1<\/a>/g;
で変換しているのですが、できれば <a href="$1"> の中のほうの$1をURLエンコードして収めたいのです。

URLエンコードのサブスクリプトはこんな感じです。

sub url_enc {
local($_) = @_;
s/(\W)/'%' . unpack('H2', $1)/eg;
s/\s/+/g;
$_;
}

よろしくお願いします。


598:デフォルトの名無しさん
08/03/03 16:49:12
すみません、補足です。
CGIにはインフォパスか引数で渡します。

<a href="hoge.cgi?$1">

こんな感じで。

599:デフォルトの名無しさん
08/03/03 17:31:00
サブルーチンに置換部分をまとめて、
$i =~ s/\[\[(.+?)\]\]/&url_enc($1)/eg;

600:デフォルトの名無しさん
08/03/03 17:58:47
そっか!e修飾子を利用した時は置換部分は関数以外は入れたらダメなんですね。

$i =~ s/\[\[(.+?)\]\]/<a href="&url_enc($1)">$1<\/a>/eg;

だとエラーが出るんで何でだろうとずっと思ってたんです。
ありがとうございます。勉強になりました。

601:デフォルトの名無しさん
08/03/03 18:25:15
>>600
自分で '%' . unpack('H2', $1) なんてのを入れてるじゃん。

sub html_escape {
  my $str = $_[0];
  $str =~ s/&(?!(?:\w+|#(?:[Xx][0-9A-Fa-f]+|[0-9]+));)/&/g;
  $str =~ s/([\x00-\x09\x0B\x0C\x0E-\x1F"'<>\x7F])/&#${ \ ord $1 };/g;
  $str;
}
sub uri_escape {
  my $str = $_[0];
  $str =~ s/%(?![0-9A-Fa-f][0-9A-Fa-f])/%25/g;
  $str =~ s/([\x00-\x20"'<>\\^`{|}\x7F-\xFF])/ sprintf '%%%02X', ord $1 /eg;
  $str;
}
$i =~ s{ \[\[ (.+?) \]\] } {
  my($url, $face) = ($1, $1);
  $url = uri_escape($url);
  $face = html_escape($face);
  qq|<a href="$url">$face</a>|;
}egx;

602:デフォルトの名無しさん
08/03/03 18:40:50
>>601

すみません、
実はurl_encは誰かから教えてもらったもので丸写しなんです ^_^
でも今回のことでやっともろもろ判りました。

コード、参考になります(というかありがたくいただきます)。
ありがとうございます。

603:デフォルトの名無しさん
08/03/05 05:49:41
JavaのプログラムからCGIを実行しようとしたのですが、302エラーが返されます。
何故なんでしょうか?

604:デフォルトの名無しさん
08/03/05 10:21:39
>>603
302 はエラーじゃないし Perl の話でもない。
URLリンク(www.studyinghttp.net)

CGI: Common Gateway Interface part 13
スレリンク(php板)

605:デフォルトの名無しさん
08/03/05 10:22:39
Moved Temporarily

606:デフォルトの名無しさん
08/03/05 13:38:15
>>604-605
パーミッションの設定をしたら動きました;;
お騒がせしました

607:デフォルトの名無しさん
08/03/05 15:23:38
perlのuntil文っていらないと思うんですけど、皆さんどんなときに使ってますか?

608:デフォルトの名無しさん
08/03/05 16:30:42
使わなきゃいいじゃん

609:デフォルトの名無しさん
08/03/05 17:00:16
while (! hoge)よりも直感的に書ける場合もある気がする
とくに後置したときに英文っぽくておさまりがいいような

610:デフォルトの名無しさん
08/03/05 17:23:51
while ( !( ... || ... && ... || ...) )
とかになったらさすがに使うw

611:デフォルトの名無しさん
08/03/05 17:26:43
あー、あと成功したら0エラーならエラーの種類が1以上って関数が
成功したらとにかく実行って時とかに == 0 とかやらなくて済むとか。

612:デフォルトの名無しさん
08/03/05 18:07:48
>>609->>611
なるほど。参考になりました。
untilも使い道はいろいろあるんですね。

613:デフォルトの名無しさん
08/03/05 18:32:27
意味的に「~になるまで続ける」って感じの時も until のがわかりやすいかも

614:デフォルトの名無しさん
08/03/05 18:37:39
>>613
確かに。これは考えたことなかったな。

615:デフォルトの名無しさん
08/03/06 02:27:57
XSでCライブラリを使ったモジュールを作ったが、
それが$HOME/local/libのライブラリを使っていて
CGIにLD_LIBRARY_PATHが設定できないのでモジュールで使っている.soが読めない。
$ENVとuse Envでやったが、無視されるみたいだし
共有サーバでhttpdがsuExecで動いているので.htaccessでSetEnvすることもできない。
DynaLoaderがロードする.soがリンクしているsoのパスを指定できる方法ある?


616:デフォルトの名無しさん
08/03/06 12:16:11
>>615
ldの-Rオプションでバイナリに埋め込むのはどう?

617:デフォルトの名無しさん
08/03/06 19:32:32
>>615
前スレの570~580あたりで書き込みした者ですが、

DynaLoader.pmがLoadするだけならば、
use DynaLoader;
@DynaLoader::dl_library_path に、対象のPATHを放り込んでやればLoad出来ます。

その{perl_module}.soがよその(/use/lib,/lib以外の)ライブラリをロードするようにコンパイルされていたら、
多分 use した時点でエラーになります。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch