トップページphp
981コメント337KB

くだすれPerl(超初心者用)3

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/03/31(火) 22:20:27ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Perl使いが優しくコメントを返しますが、
お礼はPerlの布教と初心者の救済をお願いします。

前スレ
くだすれPerl(超初心者用)2
http://pc11.2ch.net/test/read.cgi/php/1204488452/

関連スレ
Perlについての質問箱 39箱目
http://pc12.2ch.net/test/read.cgi/tech/1234181856/
Perlコーディング初心者質問スレ Part 59
http://pc11.2ch.net/test/read.cgi/php/1234752149/
【Perl上級者コーナーPart01】
http://pc11.2ch.net/test/read.cgi/php/1024741312/
0213nobodyさん2009/08/15(土) 08:03:40ID:???
>>211-212
はい、Encode::Guessの結果後の処理です。
具体的なコードありがとうございます。
0214nobodyさん2009/08/15(土) 09:36:01ID:njfakeIM
>>208
それでもいいので教えてください
0215nobodyさん2009/08/15(土) 16:36:11ID:???
>>207
%ENV
0216nobodyさん2009/08/18(火) 18:06:40ID:RO5+3AJ6
CUIで実行する時print使うときに改行つけないと画面に表示されないけど
あれなんとか出来ないの?
0217nobodyさん2009/08/18(火) 18:29:11ID:???
flush
0218nobodyさん2009/08/18(火) 18:30:34ID:???
$|=1;
0219nobodyさん2009/08/18(火) 18:53:46ID:RO5+3AJ6
ありがとう
0220nobodyさん2009/08/19(水) 23:25:05ID:???
$|とかググれないし、いい加減なんとかするべきだと思うんだ
0221nobodyさん2009/08/20(木) 02:33:32ID:???
$|でググるやつはおらんだろ・・・
0222nobodyさん2009/08/21(金) 21:25:25ID:OnG1WZEr
$s = 0;
$s =~ /(.)/;
for($i=4; $i>0; $i--) {
print "$1\n";
$i =~ /(.)/;
}
↑これ実行すると「0321」となるはずなのに「0000」になるんだけど何で?
正規表現処理した後にプリント使うと「4321」になるけど、どうしてもこのまま使いたいです
0223nobodyさん2009/08/21(金) 21:34:13ID:???
for($i=4; $i>0; $i--) {
print "$i\n";
$i =~ /(.)/;
}
0224nobodyさん2009/08/21(金) 21:42:18ID:OnG1WZEr
hspとvbがはやいんだろう
0225nobodyさん2009/08/21(金) 21:42:35ID:???
>>222
いや、どう見ても「0321」なんてならんぞ。>>223でも「4321」だし。
何見て書いたそれ?
0226nobodyさん2009/08/21(金) 21:44:13ID:???
試してないけど0432じゃ?
0227nobodyさん2009/08/21(金) 21:49:31ID:???
>>222
多分ループごとに $1 が変数スコープ外れてる

my $num = 0;
my $put;
$num =~ /(.)/;
$put = $1;
for(my $cnt = 4; $cnt > 0; $cnt--){
print "$put\n";
$cnt =~ /(.)/;
$put = $1;
}

これでいけるけど、もっといい書き方がきっとあるはず
具体的に何したいのかを書けばもっといいアドバイスがもらえると思うよう
あと一文字の変数を使うのと use strict しないのはよしといたほうがいいよ
落とし穴ハマってうっきーってなるから


と思ったけど実行結果 0321 なのな・・・ちょっと意味分からんわ
0228nobodyさん2009/08/21(金) 22:33:56ID:???
my $i = 0;
do{
$i =~ /(.)/;
print "$1\n";
$i = ($i-1) % 4;
}while($i > 0);

結果は出るけど、質問の意図が読めないからどうなんだろ。
0229nobodyさん2009/08/21(金) 23:10:07ID:???
my $s = 0 =~ /(.)/ ;
for( my $i=4; $i>0; $i-- and print "$1\n" and $i =~ /(.)/ ) { }
0230nobodyさん2009/08/22(土) 01:20:43ID:???
いろんな書き方知りたいわけじゃなくて
$Nのスコープってどうなってんだ?
って質問なんじゃ?
0231nobodyさん2009/08/22(土) 05:10:44ID:???
#!/usr/local/bin/perl --

$a = "[123][456][789]";

while($a =~ /[(.*?)]/){
print $1"\n";
}

123、456,789と表示したいです
一回ずつづらしてマッチさせられないですか?
0232nobodyさん2009/08/22(土) 05:24:03ID:???
>>231
1回ずつじゃないけど

$str = "[123][456][789];
@contents = $str =~ /[(.*?)]/g;
print "$_\n" foreach @contents;
0233nobodyさん2009/08/22(土) 05:26:41ID:???
実験して3秒あせったw
正規表現もバグってるよ

$str = "[123][456][789]";
@contents = $str =~ /\[(.*?)\]/g;
print "$_\n" foreach @contents
0234nobodyさん2009/08/22(土) 07:32:50ID:???
>>231
my $s = "[123][456][789]";

while($s =~ /\G\[(.*?)\]/g){
print $1, "\n";
}
0235nobodyさん2009/08/22(土) 07:41:35ID:???
>>230
正規表現周りは奇妙だからなぁ。
たとえば、最後にマッチした正規表現を使う、空マッチを使うと期待通りに動く。
$1などの変数はマッチ直後に保存しとくのがベストだろうと思う。

my $s = 0;
$s =~ /(.)/;
for(my $i = 4; $i > 0; --$i){
print $1, "\n";
$i =~ //;
}
0236nobodyさん2009/08/22(土) 08:33:57ID:???
>>234
\Gは何の意味があるのですか?
0237nobodyさん2009/08/22(土) 09:07:20ID:???
>>236
m//gで、前回マッチした直後からマッチングを行う。
my $s = "[123]456][789]";
こんなときに、処理を止める。
0238nobodyさん2009/08/22(土) 09:40:50ID:???
>>237
>>234で\Gをはずしても同じ結果になるのですが、それでも意味があるのでしょうか?
0239nobodyさん2009/08/22(土) 09:48:08ID:???
>>238
意味が分からん。
別に気に入らなければ、付けなきゃいいじゃん。

>>238
じゃあさ、>>231のシェバング行の -- が無くても同じ結果になるけど、
-- に意味があると思う?
0240nobodyさん2009/08/22(土) 10:21:27ID:???
ループ内で宣言したものはその中でしか生きられない

正規表現で () 使った後に使える $n は、
正規表現使った時に my されると思った方が
いいかも知れません
0241nobodyさん2009/08/22(土) 10:40:35ID:???
しかしスコープの問題だとすると、>>222の結果って「0000」じゃなくて「」(null)になりそうな気もするがな。
$1の初期値が「0」ってことはないだろうし。
0242nobodyさん2009/08/22(土) 11:10:48ID:???
>>241
>>240の言葉を借りれば、グローバルなレキシカル変数$1(下の(1))と、forループ内で
$i =~ /(.)/;より下で有効なレキシカル変数$1の2つが混在していると。

$s = 0;
$s =~ /(.)/; #=> my $1 = "0" ・・・(1)
for($i=4; $i>0; $i--) {
print "$1\n"; "=> この時点では1つ上のスコープのグローバルな$1、すなわち(1)を表示
$i =~ /(.)/; #=> my $1 = $i ・・・(1)のグローバルなレキシカル変数$1は、一旦ここで見えなくなる
}
0243nobodyさん2009/08/22(土) 12:04:28ID:???
>>240
では、面白い例を。結果は0432。

my $s = 0;
$s =~ /(.)/;
foreach(reverse 1..4){
print $1, "\n";
/(.)/;
}
0244nobodyさん2009/08/23(日) 21:12:44ID:???
>>243
何故…
なんか理由があってこうなってんの?
0245nobodyさん2009/08/25(火) 18:13:21ID:???
会社で引き継いだスクリプトに下記の様な記載がありました。
別に現状では何も問題が無いんですが、何の意味があるか良くわかりません。

if 文で変数が未定義だったら何をしているんでしょうか?

$stlist{$kumi}{$bangou}= [] if ! exists $stlist{$kumi}{$bangou};
0246nobodyさん2009/08/25(火) 22:37:47ID:???
use strict;
use warnings;

my %stlist = ();
my $kumi = 1;
my $bangou = 2;

$stlist{$kumi}{$bangou} = 3;
$stlist{$kumi}{$bangou} = [] if ! exists $stlist{$kumi}{$bangou};
print $stlist{$kumi}{$bangou},"\n";

undef $stlist{$kumi}{$bangou};
$stlist{$kumi}{$bangou} = [] if ! exists $stlist{$kumi}{$bangou};
print $stlist{$kumi}{$bangou},"\n";

--

>perl test_perl.pl
3
Use of uninitialized value in print at test_perl.pl line 14.
0247nobodyさん2009/08/25(火) 22:54:19ID:???
まあ

$stlist{kumi}{bango} ||= [];

で同じことできるんだけどな
0248nobodyさん2009/08/26(水) 00:28:41ID:???
>>247
$stlist{$kumi}{$bangou} //= [];

じゃなくて?
0249nobodyさん2009/08/26(水) 09:57:20ID:???
245です。ありがとうございます。

意味はモヤッと解ってきたのですが「[]」 の使い方が解らないんです。
「()」では駄目なんですか?

0250nobodyさん2009/08/26(水) 18:52:28ID:mCRAV2Yd
Cのscanf関数みたいなのってないの・
0251nobodyさん2009/08/26(水) 21:01:17ID:???
>>249
() 配列
[] 配列のリファレンス

ここで
$hoge = ();
とすると、多分スカラーコンテキストで無名配列が評価されるので0が入る
$hoge = [];
だと配列のリファレンスが入るから、何も値が入ってない状態で
$hoge->[0]
とかやってもうまく動く

多分ね
0252nobodyさん2009/08/27(木) 02:29:49ID:???
便乗ですいません。

my $hoge = [1, 2, 3, 4, 5];
my $huga = [6, 7, 8, 9];

という風に二つの配列へのリファレンスがあったとして、
この二つの配列を合わせた配列へのリファレンスを新しく作るには

my $kei = [ @{$hoge}, @{$huga} ];

以外に方法はありますか?
いろいろ試してみたんですが上手くいかなくて…。
0253nobodyさん2009/08/27(木) 05:43:28ID:???
>>250
regular expression

オレオレスクリプト以外に使用厳禁↓
http://search.cpan.org/dist/String-Scanf-2.1/lib/String/Scanf.pm

>>251
undefがはいるよぉぉぉぉぉぉ。

>>252
考えすぎるとハゲるぞ。

おめーら、クソスレより初心者スレ使えよ。
0254nobodyさん2009/08/28(金) 10:14:29ID:???
ubuntu 9.04 で DBIx::Class::Schema::Loader をインストールしようと
してるんだけど, 一緒に要求される DBI::DB2 が入らない.

ubuntu 8.04 用の DB2 deb パッケージを入れたあと

$ sudo su
# export DB2_HOME=/opt/ibm/db2exc/V9.5
# cpan DBI::DB2

すると, include するべきヘッダが無いらしく, 大量の未宣言エラーが出る。
DB2 自体をソースからコンパイルして make install するしか無いかな?

というか DB2 は使う予定が無いから, DBI::DB2 自体をスルーしたいのだけど...

ちなみに CPAN-Testers でもインストール成功例は無いようです.
ttp://static.cpantesters.org/distro/D/DBD-DB2.html
0255nobodyさん2009/08/28(金) 10:16:09ID:???
>>254
develパッケージ入れないとダメなんじゃない?
02562542009/08/28(金) 13:30:37ID:???
えーと最初に, >>254 の DBI::DB2 は DBD::DB2 の間違いでした.

それでですね...
ずらずら出るエラーメッセージを見ていたら, include 出来ずにエラー出してるのは
DBIXS.h とかだったので, cpan DBI してみたらビンゴ.
無事 DBD::DB2 のインストールに成功しました.

しょうもないオチですまんかった. 付き合ってくれた >>255 ありがとう.
0257nobodyさん2009/08/31(月) 21:28:16ID:SNcF+RG0
$s="str"
if ($r =~ /str/){exit;}

↑マッチしたら偽判定にするにはどうしたらいいの?
0258nobodyさん2009/08/31(月) 21:28:57ID:SNcF+RG0
間違えた
$s="str"
if ($s =~ /str/){exit;}
0259nobodyさん2009/08/31(月) 22:32:07ID:???
$s !~ /str/
0260nobodyさん2009/09/01(火) 02:45:08ID:???
unlessと!~でどっちがはやいか調べて早い方使う
0261nobodyさん2009/09/04(金) 13:32:16ID:???
>>257
if ($r !~ /str/){exit;}
if ( ! $r =~ /str/){exit;}
if (not $r =~ /str/){exit;}
unless($r =~ /str/){exit;}

すきなの使え。この条件ならunlessも!~もほとんど差がないと思うぞ。
0262nobodyさん2009/09/04(金) 20:00:55ID:???
テストを作っているんですが、前のページに戻れないようにするには
どうすればいいでしょうか?戻るボタンや戻るボタンの過去の履歴を
押しても、最後にいたページにリダイレクトされるようにしたいんですが、
できるでしょうか?
0263nobodyさん2009/09/04(金) 20:22:09ID:???
全てのページの偏移をリダイレクトにすればいい
つか毎回ログつくってしまうかクッキーで管理すればおk
0264nobodyさん2009/09/05(土) 04:55:23ID:UpeEOLWy
DOS画面出さずに実行する方法無いの?
cgi以外で
0265nobodyさん2009/09/05(土) 06:08:28ID:???
tcshでいいんじゃね?
ていうかwperl知らんのけ
0266nobodyさん2009/09/05(土) 06:30:25ID:UpeEOLWy
こんなの知らなかった
ありがとう
0267nobodyさん2009/09/05(土) 11:50:51ID:???
>>262
フレームワークで制御。

>>263
アホかw
0268nobodyさん2009/09/05(土) 12:52:13ID:???
フレームワークって言っても、結局セッションでクッキー管理の罠。
0269nobodyさん2009/09/05(土) 14:46:03ID:???
>>267
ありがとうございます。さっそくググって勉強中ですが、cakeやらsymfonyやら
あるようですが、私の用途ですと、どれを使っても問題ないでしょうか?

>>263
リダイレクト関連でheaderを勉強して、キャッシュが残らないように設定して、途中で
「戻る」と、問題がテスト開始前に設定した問題数分最初から出題されるように
なったので(同時にセッションも新規セッション)、20問なら20問後戻りせずに解かせる
という最低限やりたいことは、これで対処できるようになったかと思います。
>>262で質問した内容とはまだ少し違いますが。ありがとうございます。
0270nobodyさん2009/09/06(日) 07:34:15ID:???
>>269
cakeとかPHPだろ。とりあえずCatalyst使っとけ。他にもあるがCatalystは少し枯れてるし情報も豊富。
中規模以のアプリケーションを楽しく書きたいならフレームワーク一択。
0271nobodyさん2009/09/06(日) 10:19:40ID:???
Moose 化以前の Catalyst なのか、Moose 化後の Catalyst なのか
まずはそこをはっきりさせた上で他人に勧めてくれないか。
0272nobodyさん2009/09/06(日) 14:55:45ID:???
>>267が無能だというのはよく分かる質疑応答
0273nobodyさん2009/09/06(日) 16:56:48ID:???
>>271
Catalystスレあるんだからそこでやろーぜ。
0274nobodyさん2009/09/09(水) 16:52:27ID:???
foreach $value (keys %DATA{$unko}){
print $value;
}

これって駄目なの?
0275nobodyさん2009/09/09(水) 17:52:15ID:???
うーん、意味が理解できないけど動いた・・・・。

foreach $value (keys %{$DATA{$unko}}){
print $value;
}

0276nobodyさん2009/09/09(水) 17:57:47ID:???
これはハッシュだよこれはハッシュだよ

と2回言ってるようなもの


簡単にいえば無駄な書き方
0277nobodyさん2009/09/09(水) 19:03:55ID:???
>>276
何が?
0278nobodyさん2009/09/09(水) 20:53:19ID:???
>>275
1. $DATA{$unko} はハッシュの要素であり、その例の場合は値としてハッシュリファレンスを持っている。
    # その点は print $DATA{$unko} してみるとわかる。
    # 恐らく "HASH(0xdeadbeef)" 的なものが表示される。

2. keys() は引数としてハッシュそのものしか取らず、従ってハッシュの要素は受付けない。

3. ハッシュリファレンスをハッシュとして扱うためにはデリファレンスを行う必要がある。

4. ハッシュとして明示的にデリファレンスするには、リファレンスを "%{ }" でくくる。

perlreftut, perlref 及び perllol の各 perldoc も参照してください。


>>274
%DATA{$unko} # これはありがちな文法ミス
%DATA    {$unko} # <- こうパースされる

0279nobodyさん2009/09/09(水) 23:42:35ID:???
>>276
そのりくつはおかしい

my %hash = ( data => {hoge => 'huga', foo => 'bar'});
print $hash{data}, "\n"; #=> HASH(0x9c4a880)
print %{$hash{data}}, "\n"; #=> foobarhogehuga
print keys %hash, "\n"; # => data
print keys %{$hash{data}}, "\n" #=> foohoge

ほら、明らかに違うもの指してるでしょ
0280nobodyさん2009/09/10(木) 12:07:31ID:jH+1ZMcm
DBIにて同じテーブルを二つのプロセス(プログラム)を動かしてアップデートをする時
デッドロックが発生してしまいます。
これを検知して作業を続行するにあたり、evalでexecuteを見張る以外に
何かいい方法はありますか?
0281nobodyさん2009/09/10(木) 12:33:59ID:???
プログラム側で排他ロック持てばいいんじゃないの?
0282nobodyさん2009/09/10(木) 12:41:38ID:???
そもそもデットロックしないように作らない?
0283sage2009/09/10(木) 15:42:38ID:jH+1ZMcm
>>282
ええ、その通りなんですがその方法が解らず・・・
>>281
DBI 排他ロックのキーワードで解決できそうです
ありがとうございます。
0284nobodyさん2009/09/11(金) 17:02:10ID:???
亀ですんません
>>278
なんとなくですが解りました。ありがとうございます。
perldocを読破しないと似た問題には対応出来ないですね・・・
ハッシュは複雑すぎる
0285nobodyさん2009/09/11(金) 23:11:01ID:???
CGIチャットを設置しているのですがsubmitボタン(手動更新用)を連打している形跡があり
ボタンを更新後数秒間物理的に押せないようにしたいと思い
色々調べてみましたがいい案が浮かびませんでした
何かよい案があればお力添えを戴けませんでしょうか
0286nobodyさん2009/09/11(金) 23:16:11ID:???
手動だけ対策って事ならjavascriptで一定時間隠す
0287nobodyさん2009/09/11(金) 23:28:49ID:???
>>286
即レス有難うございます 書き込みながらググってますがどうもピンときません
超初心者のレベルにも達してないということですね…吊ってきます
0288nobodyさん2009/09/12(土) 03:01:13ID:???
>>287
html disabled とほほ

送信ボタンをdisabledにして数秒スリープして元に戻す関数を送信ボタンクリックボタンにトリガーする感じ?

ただ直接URL叩かれてたら無意味
0289nobodyさん2009/09/12(土) 10:46:01ID:???
CGIのスクリプトをいじれるなら
時刻とIPアドレスのハッシュを一定時間保持しといて
マッチしたらはじくとかでもいいかと
02902852009/09/12(土) 11:10:28ID:???
>>288さんの単語で検索して呻ってる最中です
本当にドがつくレベルなので出来るかどうかわかりませんが
もう少しがんばってみますね
02912852009/09/12(土) 12:25:36ID:???
disabledにするところまでは出来ました
元に戻すというのが理解できず詰まってる状態です
もう少し色々試してみますね
0292nobodyさん2009/09/15(火) 03:11:36ID:m9vb+1wp
ファイルハンドルに配列みたいなのって無いの
ループ毎に別のハンドルに切り替えたいのだけれど
0293nobodyさん2009/09/15(火) 10:52:12ID:???
my @fhs = map { open my $fh, $_ or die $!; $fh } qw(file1 file2 file3 ......);

use IO::File;
my @fhs = map { IO::File->new($_, "r") } qw(file1 file2 file3 ......);
0294nobodyさん2009/09/15(火) 11:43:17ID:???
近年、近いところでは前スレでも
ファイルハンドルはベアワードではなくレキシカル変数に入れろ
と啓蒙する動きが見られるようになったけど、
そうすることによって出来ることも増えるのだなぁと今思った。
0295nobodyさん2009/09/23(水) 18:54:15ID:???
2 8 10 13 27 30 39
1 9 16 20 21 43 5
1 5 15 31 36 38 13

最近、コード打ってなくて、頭が回らんので助けてくだあい
1回目=1行 のデータがたくさんあって
この中から、各数字の組み合わせの頻度を出したいのですがループの回し方が思い浮かばず

2-9の組み合わせ○回
2-10の組み合わせ○回…というように。

上記のようなファイルが用意してあって
それを1line読み込んで、ループに回す、と考えているのですが
スマートなループを教えてください。
0296nobodyさん2009/09/23(水) 22:21:04ID:???
>>295
日本語でおk
0297nobodyさん2009/09/23(水) 22:41:30ID:???
エスパー登場。
説明しやすいように1行に3つの数字とする。

1 2 3 #=> 2つの組み合わせ=1-2、1-3、2-3
1 3 5 #=> 2つの組み合わせ=1-3、1-5、3-5
2 3 6 #=> 2つの組み合わせ=2-3、2-6、3-6

1-2の組み合わせの登場は1回
1-3の組み合わせの登場は2回
1-5の組み合わせの登場は1回
2-3の組み合わせの登場は2回
2-6の組み合わせの登場は1回
3-5の組み合わせの登場は1回
3-6の組み合わせの登場は1回
0298nobodyさん2009/09/23(水) 23:47:33ID:???
>>297
把握した

my (@data, %hash);
@data = (
[1, 2, 3],
[1, 3, 5],
[2, 3, 6],
);
foreach my $row(@data){
foreach my $i(0..$#$row){
foreach my $j(($i + 1)..$#$row){
my $key = ($row->[$i] < $row->[$j]) ? "$row->[$i]-$row->[$j]" : "$row->[$j]-$row->[$i]";
$hash{$key}++;
}
}
}
print "$_の組み合わせの登場は$hash{$_}回\n" foreach sort keys %hash;
0299nobodyさん2009/09/24(木) 23:09:26ID:BEttX1dB
レンタル鯖においたCGIでHTTPSのページにログインしたいんだけど、可能?
0300nobodyさん2009/09/25(金) 01:20:19ID:???
その鯖にCrypt::SSLeayが入ってりゃ可能だし
入ってなけりゃSSHかなんかでユーザ領域インストールすりゃいいんじゃね
0301nobodyさん2009/09/27(日) 16:08:13ID:dRLFhFfi
WWW::Mechanizeを使って2chに書き込みたいのですが

$mech->submit_form(
form_number => 1,
fields => {
FROM => '',
mail => '',
MESSAGE => 'aaa',
}
);

でポストすると
http://jfk.2ch.net/test/read.cgi/mmo/test/bbs.cgi?guid=ON
に飛ばされてしまいます

mech-dumpで見てみるとスレッドのフォームでポストすべきものは
  submit=書き込む(HTML設定済み)                    (submit)
  FROM=                          (text)
  mail=                          (text)
  MESSAGE=                       (textarea)
  bbs=<板識別子(HTML設定済み)>                        (hidden readonly)
  key=<スレッドナンバー(HTML設定済み)>                (hidden readonly)
  time=<時間(HTML設定済み)>                (hidden readonly)

となっているので$mechでサブミットすべきものはFROM,mail,MESSAGEと
認識してるんだけどこれ間違ってますか?
0302nobodyさん2009/09/27(日) 16:34:12ID:???
UAとかクッキーを見ているかもしれない
0303nobodyさん2009/09/27(日) 18:33:21ID:???
はいはい monazilla 。
0304nobodyさん2009/09/28(月) 00:39:43ID:???
たしかクッキーにある値がセットされてないと書けなかった気がする
03053012009/09/28(月) 08:23:50ID:ae4P5TMo
ネット上に転がってる仕様のまとめは一通り目を通してあるつもりなんですが、
クッキーが必要でないだろう初回書き込みのポスト(書き込み確認画面へ移動)
が通らないんですよね・・・
0306nobodyさん2009/09/28(月) 09:32:00ID:???
クッキーを覗けばわかる
専ブラとかもそのせいで書けなくなって、一時期話題になってるから
探せばすぐにわかると思う
03073012009/09/28(月) 09:48:59ID:???
プログラム中のPOST先が間違っていました・・・。
またちょっと自力で奮闘してみます
お騒がせしました。
0308nobodyさん2009/09/30(水) 10:06:13ID:???
Sniffer::RTMPのtar玉どこかからダウンロードできませんか
0309nakacyan2009/10/01(木) 09:38:30ID:Q77nXvDi
書き込み先がここであっているかわかりませんが、質問させていただきます。

現在、大学の課題でミリセック単位での処理時間を計算するスクリプトを作成しているのですが、
どうロジックを組めばいいのかわかりません。
肝になるのは識別子でソートをすることとms単位で時間差分をとることだと思うのですが、
後者はtime関数等を使えば実現できるのでしょうか?
ヒントになりそうなスクリプトをいご教授いただけると助かります。


課題は以下になります。

あるPCの処理時間を出力したmeiji_test001.csv meiji_test002.csv というファイルがある。
ファイルの詳細は以下。

meiji_test001.csv
 ファイル名,処理時間,区別,識別子
 meiji_test001,01:30:22.392,S,SHJAKIU02387HQ87OK.dd1
 meiji_test001,01:31:44.223,S,LKIE832JUH20KJKKKH.dd1
 meiji_test001,01:35:56.356,S,KJNEYHQPLK95718HNJ.dd1
 meiji_test001,01:36:47.313,S,OQI81KMHFDJ98NBHJI.dd1
 meiji_test001,01:40:14.009,S,09KAJNMCVZH83KJEUL.dd1
 meiji_test001,01:42:58.763,S,KJQPOI045KMNJKMAUU.dd1
 meiji_test001,01:43:59.443,S,KI948MMNGYWUQIIIOK.dd1
0310nakacyan2009/10/01(木) 09:40:29ID:Q77nXvDi
>>309
続きです
meiji_test002.csv
 ファイル名,処理時間,区別,識別子
 meiji_test002,01:30:21.002,R,SHJAKIU02387HQ87OK.dd2
 meiji_test002,01:31:24.003,R,LKIE832JUH20KJKKKH.dd2
 meiji_test002,01:34:22.106,R,KJNEYHQPLK95718HNJ.dd2
 meiji_test002,01:35:22.003,R,OQI81KMHFDJ98NBHJI.dd2
 meiji_test002,01:39:06.009,R,09KAJNMCVZH83KJEUL.dd2
 meiji_test002,01:41:40.103,R,KJQPOI045KMNJKMAUU.dd2
 meiji_test002,01:42:34.023,R,KI948MMNGYWUQIIIOK.dd2

それぞれのファイル内で識別子をキーに処理時間を比較し、
同一のものがあれば処理時間を計測し、ログファイルに出力せよ。
同一のものが存在しない場合はなにも処理を行わない。
処理時間はミリセック単位(ms)で表示し、ログファイルには以下の形で出力すること。
※区別Rには処理時間を出力しない。
meiji_Kekka.csv
 ファイル名,処理時間,区別,識別子,処理時間
 meiji_test001,01:30:22.392,S,SHJAKIU02387HQ87OK.dd1 01.390
 meiji_test002,01:30:21.002,R,SHJAKIU02387HQ87OK.dd2
 meiji_test001,01:31:44.223,S,LKIE832JUH20KJKKKH.dd1 20.220
 meiji_test002,01:31:24.003,R,LKIE832JUH20KJKKKH.dd2
 meiji_test001,01:35:56.356,S,KJNEYHQPLK95718HNJ.dd1 01.34.250
 meiji_test002,01:34:22.106,R,KJNEYHQPLK95718HNJ.dd2
 meiji_test001,01:36:47.313,S,OQI81KMHFDJ98NBHJI.dd1 01.25.310
 meiji_test002,01:35:22.003,R,OQI81KMHFDJ98NBHJI.dd2
 meiji_test001,01:40:14.009,S,09KAJNMCVZH83KJEUL.dd1 01.08.000
0311nobodyさん2009/10/01(木) 11:29:20ID:???
>>309
っ[Time::HiRes]
0312nobodyさん2009/10/01(木) 11:30:52ID:???
>>311
あ、ちがうか。自分で計測するんじゃないのか。
■ このスレッドは過去ログ倉庫に格納されています