[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 07/03 13:37 / Filesize : 153 KB / Number-of Response : 618
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Perlについての質問箱 34箱目



1 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:07:22 ]
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。

CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 ttp://pc11.2ch.net/php/ )

CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

ttp://www.perl.org/get.html
● 2008/01/11現在の最新版: 5.10.0
● 2007/01/11現在の開発版: 5.9.5

前スレ
Perlについての質問箱 33箱目
pc11.2ch.net/test/read.cgi/tech/1192463997/

リンク集は>>2-3
過去スレは>>4 あたり


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

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

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

live27.2ch.net/test/read.cgi/market/1188339064/l50


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

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

438 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:48:36 ]
個人のスレがたってるような奴を信じるなよw

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

440 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:51:27 ]
コテで自慢する人は注目されたいだけ。

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

441 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん [2008/02/13(水) 12:51:45 ]
サイタマン社長はゴールドカードもupしてるし
信じたいんですがやっぱり嘘なのでしょうか。
客観的に見てあのくらいのプログラムが書ければ年収二千万はいけるのでしょうか

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

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

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

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

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

448 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:12:34 ]
>>447
なんだかんだで君も彼にぞっこんっぽいなw

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

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

451 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:29:30 ]
>>447
ゴールドポイントカードならぼくも持ってるよ。



452 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:33:07 ]
ま、スレ違いだから去れ

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

454 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:59:00 ]
cat 呼び出す

455 名前:453 mailto:sage [2008/02/13(水) 18:25:02 ]
>>454
ありがとうございます。
catは盲点でした。無事解決しました。



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

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

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

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

457 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:26:12 ]
>>457
456です、回答ありがとうございます。
しかしながら、私が挙げた例の場合にはどのように用いればよいか分からず困っています。

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

459 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:29:20 ]
{}はハッシュだろ

460 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:31:12 ]
>>459
理解できました、ありがとうございます!

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




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

・・・とか?

463 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 01:27:23 ]
いえ、アニメじゃないです。 アニメの実写劇場版です。

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

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

466 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:25:02 ]
>>464
その当たりの情報は、ソースやリリースノートを追うしかないと思う。
やたら古くてあまり参考にならないけど
tp://homepage3.nifty.com/hippo2000/perltips/DBI/FAQ.htm#5_1_Can_I_do_multi_threading_wit

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


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


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

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

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



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


473 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 11:04:16 ]
>471
最近の Perl は内部 UTF-8 だべ。

474 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん [2008/02/17(日) 16:29:46 ]
設問1

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

477 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 17:17:15 ]
日本語が苦手なら英語でおk

480 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 17:19:52 ]
どちらのお国のガイジンさんですか

481 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 17:26:21 ]
宿題は自分でやるか先生に聞きなさい。ためにならん。



482 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 17:26:35 ]
いくらなんでも丸投げすぎワロタw

483 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 17:28:26 ]
解読できません><
誰か和訳たのむ

484 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:52:46 ]
>>476-478
くだらねぇ問題はここへ書け ver.3.14(57桁略)4592
science6.2ch.net/test/read.cgi/math/1197828000/

485 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 20:29:46 ]
>>476
ん?

>>477
え?

>>478
パルプンテ

486 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 21:40:18 ]
>>478
居りますよ

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

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

死ね

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

490 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:55:36 ]
www.activestate.com/store/download.aspx?prdGUID=81fbce82-6bd5-49bc-a915-08d58c2648ca

491 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:58:52 ]
>>490
即答ありがとうございます 助かりました



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

homepage3.nifty.com/hippo2000/perltips/xml/xmlenc.htm

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


493 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:39:35 ]
中身見た?

494 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:14:27 ]
$moji = 'a<>b<>c<>';

495 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:15:38 ]
ミスです。

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

496 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:20:22 ]
配列にしてspliceすればいい。

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

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

499 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:59:54 ]
s/qあwせdrftgyふじこlp. くぁwせdrftgyふじこlp;/;

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

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



502 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:21:42 ]
Excelスレ池

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

504 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:46:10 ]
え、Perlいらなくね?

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

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

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

507 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 14:55:33 ]
open(FILE, "iostat -x |")

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

510 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 15:11:34 ]
……

511 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 15:15:43 ]
>>507
最後の改行コードは大丈夫?



512 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 15:25:30 ]
chomp汁!

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

514 名前:507 [2008/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 [2008/02/22(金) 18:58:41 ]
あ!、改行が複数飛び飛びに入っている実行結果から$2と$4は空文字になっているのだと思います。
でも、そこからどう解決できるのかが分かりません。う〜ん。

516 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:16:33 ]
>>514
if(〜)は何でdouble quoteしてるの?

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

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

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

523 名前:デフォルトの名無しさん [2008/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 mailto:sage [2008/02/22(金) 21:41:04 BE:1524672-2BP(7072)]
つ s

525 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 22:58:53 ]
>506
やっぱ端末情報を拾うのが一番じゃないか?

526 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 03:38:59 ]
>>507,523
x フラグつけてくれ。読みにくくてかなわんw


527 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん [2008/02/23(土) 15:19:23 ]
それを言っちゃオシマイよ

529 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:04:21 ]
だって、変数名の最初に数字がつかえないんだもん。


531 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:22:52 ]
誤爆か?
考え込んでしまった



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

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






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<153KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef