Perlについての質問箱 ..
[2ch|▼Menu]
369:デフォルトの名無しさん
07/01/18 17:07:02
>>367
> ファイル名を間違えているとかそういうのは無いはずなんですが。

「はず」じゃなく確認しる。

とはいえ、手元で動かしてみたところ、同じエラーが出て失敗したり
成功したりする。なんじゃらほい。

370:デフォルトの名無しさん
07/01/18 17:15:03
>>369
> とはいえ、手元で動かしてみたところ、同じエラーが出て失敗したり
> 成功したりする。なんじゃらほい。

急いで捕捉すると、テストに使った対象ftpサーバが、複数個をラウンドロビン
していたようた。要するに、ftpサーバソフトウェアによって成功したり
失敗したりしていたようだ。




371:361
07/01/18 17:17:49
>>368
すみません。
Debug=>1の意味が理解できていませんでした。
今調べてDebug=>1で流したらこんなメッセージになっています。

Net::FTP=GLOB(0x15ecd4)>>> MDTM xxx.log
Net::FTP=GLOB(0x15ecd4)<<< 500 'MDTM xxx.log': command not understood.
Use of uninitialized value in concatenation (.) or string at bbb.pl line 16.

MDTMというコマンドがないみたいですが↓このファイル見たら_MDTMならあるけど
MDTMはありませんでした。
/usr/local/lib/perl5/5.8.6/Net/FTP.pm

>>369
調べましたがちゃんと見れていました。

372:デフォルトの名無しさん
07/01/18 17:36:30
>>371
> Net::FTP=GLOB(0x15ecd4)>>> MDTM xxx.log
> Net::FTP=GLOB(0x15ecd4)<<< 500 'MDTM xxx.log': command not understood.
> Use of uninitialized value in concatenation (.) or string at bbb.pl line 16.

これはひどい(笑) MDTMコマンドが実装されていないのだろうか。

手元でやった例だと
失敗例
Net::FTP=GLOB(0x8212d38)>>> MDTM pub
Net::FTP=GLOB(0x8212d38)<<< 550 Could not get file modification time.

成功例
Net::FTP=GLOB(0x8212d38)>>> MDTM pub
Net::FTP=GLOB(0x8212d38)<<< 212 20060419172149

となります。


373:デフォルトの名無しさん
07/01/18 17:45:44
今ぐぐってみたら
MDTMはFTPの拡張仕様だから対応してない鯖が多いみたいだ
MDTM対応してない鯖は気合でLISTの結果を解析するしかなさそうな感じ

374:デフォルトの名無しさん
07/01/18 18:02:46
LISTのフォーマットもまちまちだから、本当に「気合」が必要だなw

375:デフォルトの名無しさん
07/01/18 18:56:34
普通のftpクライアントはどうやってリスト作成しているんだろうね・・・

#暇なときにffftpのソース眺めてみよう

376:デフォルトの名無しさん
07/01/18 19:01:19
IEもLISTを解析してるらしい
URLリンク(support.microsoft.com)
かなり大変そうだな・・・

377:デフォルトの名無しさん
07/01/18 19:37:54
CPANを漁ったらこんなのがあった。使い物になるかな
URLリンク(search.cpan.org)

378:デフォルトの名無しさん
07/01/18 20:47:53
>>375
悲惨なものよ

379:デフォルトの名無しさん
07/01/19 00:21:38
ファイル交換ソフトの利用履歴を調査するソフト「Winny特別調査員」
URLリンク(internet.watch.impress.co.jp)
>Winny特別調査員は、フォレンジック技術を応用した検査により、Winnyなどのファイル交換ソフトを利用した最終日時を調査するソフト。

これ、デモ版とはいえPerl(PAR)で書かれている珍しい製品
exeの拡張子をzipにして解凍すればソースを取り出すことが可能。


このソースを見てフォレンジック技術と"売り物"のクォリティを感じろ、おまいら

380:デフォルトの名無しさん
07/01/19 00:33:42
>>379
@KINTAMA_STRとかあってワロス

381:361
07/01/19 09:54:34
>>373
拡張なんですね。。
>>372->>380
$ftp->dir("./")で取得するとサーバによってこんな風になるんですよね。
表示が英語か日本語だけならまだ対応出来るんですが
日本語で去年のファイルになると時間が年表記になって
時間が取り出せないorz

drwxrwxr-x 2 user group 1024 Dec 5 00:03 dir_name

drwxr-xr-x 5 user group 512 3月 29日 2006年 dir_name

何か他に日付とサイズ取得できるのないかな。

382:デフォルトの名無しさん
07/01/19 10:18:31
>>381
> 日本語で去年のファイルになると時間が年表記になって
> 時間が取り出せないorz

いや、UNIXのlsコマンドの詳細表示は、半年以上過ぎるとそういう表示になる
仕様だというだけ。それを反映しているのでしょう。英語でもそうなるはず。
っていうか、そうなるのがある、か。

383:デフォルトの名無しさん
07/01/19 13:16:05
>>379
これぐらいの物ならPerlで作らなかった方が良かったのにね。。
コメントとテストコードが残っている事以外に関して言えば
別に酷いコードじゃないと思うけど、フォレンジック技術について言えば;;
文字連結が好きだって事は分かった。

384:デフォルトの名無しさん
07/01/19 14:01:44
> 別に酷いコードじゃないと思うけど、
マジで?

385:デフォルトの名無しさん
07/01/19 14:07:39
112 :番組の途中ですが名無しです [sage] :2007/01/17(水) 15:23:40 ID:p3fP2iOG0
sub pf_check_p2p{
if ($_[0]=~/winny\.exe/i){add_ctime($_[0],$WINNY,"WINNY");}
if ($_[0]=~/winnyp\.exe/i){add_ctime($_[0],$WINNYP,"WINNYP");}
if ($_[0]=~/Share\.exe/i){add_ctime($_[0],$SHARE,"SHARE");}
if ($_[0]=~/PERFECT DARK\.EXE/i){add_ctime($_[0],$PD,"PD");}
if ($_[0]=~/cabos\.exe/i){add_ctime($_[0],$CABOS,"CABOS");}
if ($_[0]=~/limewire\.exe/i){add_ctime($_[0],$LIMEWIRE,"LIMEWIRE");}
if ($_[0]=~/BITTORRENT\.EXE/i){add_ctime($_[0],$BIT,"BIT");}
if ($_[0]=~/BITCOMET\.EXE/i){add_ctime($_[0],$BIT,"BIT");}
}

(;^ω^)


139 :番組の途中ですが名無しです [sage] :2007/01/17(水) 15:35:19 ID:p3fP2iOG0
なんか製品版も同じな気がする…
だってp2ptest.plの30行辺り見ると…

my $kin="\x5b\x90\x6d\x8b\x60\x82\xc8\x82\xab\x83\x4c\x83\x93\x83\x5e\x83\x7d\x5d";

ついでにこれってShift_JISで見ると [仁義なきキンタマ] なんだよね

386:383
07/01/19 14:20:43
>>384
苦なく読めるという点で。改良点を挙げようとすればそりゃ出てくるがな。

387:デフォルトの名無しさん
07/01/19 15:04:42
>>385
これだけ見ても何が面白いのかワカランだろ。まぁ、十分ヘタクソなコードだけど。
これが商用のソフトのファイル共有ソフトの検出処理だってのが凄い。
URLリンク(72.14.253.104)

388:デフォルトの名無しさん
07/01/19 15:15:48
Prefetchに気づいてる香具師が一人しかいないそのスレも大分痛い

389:デフォルトの名無しさん
07/01/19 15:37:59
>>388
ニュー速だぞ?w

390:デフォルトの名無しさん
07/01/19 16:29:43
>>379
調査員が、PC操作してる俺の隣に座って
監視するわけじゃないのか。 じゃイラネ。

391:デフォルトの名無しさん
07/01/19 16:41:48
人件費が馬鹿にならんだろそれじゃ

392:デフォルトの名無しさん
07/01/19 17:08:45
マwジwレwwスwww

393:デフォルトの名無しさん
07/01/19 17:12:31
391に突っ込むって
どんだけ2ch初心者なんだよ

394:デフォルトの名無しさん
07/01/19 17:19:27
2chw初w心ww者www

395:デフォルトの名無しさん
07/01/19 17:56:46
はいはい
vipに帰りな

396:デフォルトの名無しさん
07/01/19 18:00:16
はwいwwはwwwいwwwww
いい加減自演疲れただろうパトラッシュ

397:デフォルトの名無しさん
07/01/19 19:04:24
>>393
熟練の方ですか?wwww

398:デフォルトの名無しさん
07/01/19 19:05:06
          ばばばばばばっ
    w      w  _  _   w   w
        w   ヽ(・ω・)ノ   w    w
         w .(( ノ(  )ヽ )) w
wwwwwwwww..............┛┗...........wwwwwwwww

399:デフォルトの名無しさん
07/01/19 20:11:44
言い負けてからが長い

400:デフォルトの名無しさん
07/01/20 00:53:18
2chViewer ●にログインして、過去ログをひたすら(ウェイトは挟みつつ)取得するスクリプトを書いたのですが、
●ログインは出来るものの、肝心の過去ログが取得できません。gzip圧縮された「-ERR もう つかえません」と言うメッセージが取得されるだけです。
●アカウントそのものは既成の専用ブラウザ(OpenJane 0.1.12.6b)で生きていることを確認しています。
コーディングの問題なのか、2chの●過去ログ取得の仕様にあっていないための不都合なのか、自分では切り分けが出来ませんでした。

ソースはこれです。 URLリンク(sub.jetabbs.org) (コメント・メッセージがキモくてごめんなさい)
スレ違いでしたら誘導をお願いします。


401:デフォルトの名無しさん
07/01/20 15:39:22
>>400
ソースは読んでいないけど、
それって、Perlの問題というより、2ちゃんねるの認証の問題だね。
専用ブラウザ以外のソフトで過去ログを取得しようとすると、拒否する
ように設定していると聞いた覚えがある。
あとは、こちらのスレで聞いたほうがいいよ ↓

monazilla Part 5
スレリンク(tech板)l50


402:デフォルトの名無しさん
07/01/20 15:51:03
専用ブラウザでのやりとりをキャプチャして同じリクエスト投げるようにすればいいんじゃね?
暗号化されてたらシラネ

403:401
07/01/20 15:51:23
>>400
あと、Snifferというソフトを使って、専用ブラウザが出しているIPパケットと、
自作のスクリプトが出しているIPパケットとを比べれば解決するかもしれないよ。

404:デフォルトの名無しさん
07/01/20 22:02:59

use threads;
use threads::shared;

# 終了の合図
my $kill:shared = 0;

# スレッド作成
my $thread = threads->new(\&loop);

処理...

$kill = 1;
$thread->join;

sub loop {
  while (!$kill) {

    処理...

    sleep(60);
  }
}

少し長くてすみません…。
マルチスレッドでwaitを挟みつつ処理を行い
任意のタイミングで終了させるプログラムを組んでいるのですが、
このコードだと終了用の変数をセットしてから処理が戻るまで60秒もかかってしまいます。
何かいい方法はないでしょうか
よろしくお願いします。

405:デフォルトの名無しさん
07/01/20 22:24:10
>>400
UAをMonazilla/1.00にするとか

406:デフォルトの名無しさん
07/01/20 22:47:00
>>404
threads::sharedにcond_ナントカというのがいくつかあるので
よく説明読め。たぶんお前が求めているものはそれだ。


407:デフォルトの名無しさん
07/01/20 22:55:23
>>406
ありがとうございます
調べてみます

408:デフォルトの名無しさん
07/01/20 23:33:03
Perl Hacks
URLリンク(www.amazon.co.jp)

これ今日発売だけど買った奴居る?
中身どうですか?

409:デフォルトの名無しさん
07/01/20 23:57:59
そんな本が出るこそさえ知らなかったわさ

410:デフォルトの名無しさん
07/01/21 00:14:29
>>406
cond_timedwait
cond_signal
を併用する事でできました
昨日からずっと悩んでいたので助かりました
ありがとうございました

411:デフォルトの名無しさん
07/01/21 00:19:55
>408
O'Reillyで目次見れるから、だいたい判断つくんじゃない?
俺は英語版持ってるから買わないけど。
URLリンク(www.oreilly.co.jp)

412:デフォルトの名無しさん
07/01/21 00:54:41
第1章の1項ってテクニック?

413:デフォルトの名無しさん
07/01/21 01:23:23
1章2章はツールの話だろ

414:デフォルトの名無しさん
07/01/21 01:24:15
「firefoxから簡単にCPAN検索できるようにする」だからテクニックといえばテクニックだろ。
俺はsleipnirもfirefoxもCPAN検索できるようにしてある。
あとはローカルにppmリポジトリを立てればすごく便利。

415:デフォルトの名無しさん
07/01/21 05:57:20
>>408
買った買った。ペラペラとめくってからほぼ衝動買い。
お前も買え。

416:デフォルトの名無しさん
07/01/21 12:10:31
すみません

@week = ("Sun","Mon","Tue","Wed","Thr","Fri","Sat");
$i = 0;

for($i=0; $i <= 7; $i++){
print $week[${i}];
}

このソースで-wオプション付けて実行すると
Use of uninitialized value in print at ./hairetu.pl line 7.
と警告が出るのですが何故でしょうか?
見たところ変数はきちんと初期化していると思うのです。

417:デフォルトの名無しさん
07/01/21 12:12:55
わかりました
7じゃなくて6ですた…
自己解決染ました

418:デフォルトの名無しさん
07/01/21 12:41:03
>>417
> 7じゃなくて6ですた…

植木算のミスといいます。そして Perl では「必要がなければ添え字を扱わない」ことで、このリスクを回避できます。

foreach my $wday (@week) {
    print $wday;
}

あるいは、

print for @week;


419:デフォルトの名無しさん
07/01/21 13:30:56
すごい省略できるんですね…

420:デフォルトの名無しさん
07/01/21 16:25:18
Perlの省略記法は、芸術ですから。
いろいろ言われるところもあるけど、ラリー・ウォール先生もPGは傲慢であれとおっしゃっていることだし。
うん。大丈夫。半年前に書いたスクリプトがさっぱり分からなくても大丈夫。泣くことなんて無いよ。

421:デフォルトの名無しさん
07/01/21 16:39:35
> foreach my $wday (@week) {
> print $wday;
> }

"my" なんて入れる必要ないだろ

422:デフォルトの名無しさん
07/01/21 16:45:32
PBP6.9に入れた方がいいと書いてあるだろ

423:デフォルトの名無しさん
07/01/21 18:36:44
自分のフォルダのtextファイル(1000行〜1500行)を

ひとつの変数に入れる方法を教えてください


open(IN,"< foo.txt");
foreach(IN){ ・・・
}

のように一行づつ処理ではなく、全部の行をまとめて処理したいのです。
(正規表現で複数の行に渡って処理したいため)

何かいい方法はないでしょうか?
よろしくお願いします

424:デフォルトの名無しさん
07/01/21 18:40:53
read関数

425:デフォルトの名無しさん
07/01/21 18:47:46
my $txt = join('', (<IN>)[999 .. 1499]);

426:423
07/01/21 18:49:16
>>424
>>425
ありがとうございます。
無事解決できました

427:デフォルトの名無しさん
07/01/21 19:00:13
いいのかおい

428:デフォルトの名無しさん
07/01/22 23:22:29
正規表現の量指定子{}に変数は使えますか?

429:デフォルトの名無しさん
07/01/22 23:25:53
すいません、自己解決しました
てか自分で試せばよかった・・・

430:デフォルトの名無しさん
07/01/23 17:27:38
すみません。
教えてください。

my @aaa = () ;
my @bbb = () ;
for(my $i=0;$i<5;$i++) {
@aaa = ($i,$i+1) ;
@bbb = (@bbb,\@aaa) ;
}
foreach(@bbb){
print "$_\n" ;
}
foreach(@bbb){
foreach(@$_){
print "$_\n" ;
}
}

上を実行すると下の結果になります。

ARRAY(0x13c93c)
ARRAY(0x13c93c)
ARRAY(0x13c93c)
ARRAY(0x13c93c)
ARRAY(0x13c93c)
4 5
4 5
4 5
4 5
4 5

>>↓に続く

431:430
07/01/23 17:28:11
>>↑の続き

出力させたい結果は以下なのですがどうも
リファレンスの中がARRAY(0x13c93c)で全て同じになってしまっているようです。
(同じ@aaaという配列名をリファレンスしているせい?)
ループさせてリファレンスを増やしていきたいのですが
どのようにしたら下記のような出力結果に出来ますでしょうか。

0 1
1 2
2 3
3 4
4 5

432:デフォルトの名無しさん
07/01/23 17:40:06
レキシカルスコープ

433:デフォルトの名無しさん
07/01/23 17:41:40
>>430-431
ループのなかでmyするようにする。
my @aaa = ($i,$i+1) ;

若しくは無名配列のコンストラクタを使う。
@bbb = (@bbb,[@aaa]) ;

ループの外では@aaaを使っていないのだから、
スコープをループ内に縛る前者をお勧めする。

434:デフォルトの名無しさん
07/01/23 17:48:50
質問です。

テキストファイルから顔文字を除去しようと考えていますが、いい方法がみつかりません。
正規表現でうまく除去する方法というのはないでしょうか?


現在考えていますのが、括弧の中に記号あると顔文字であると判断するとしています(例=(゜Д゜) (ノ∀`*) など。
この正規表現を書く場合全ての記号を書かないといけないでしょうか?

質問が2つとなりましたが、よろしくお願いします

435:デフォルトの名無しさん
07/01/23 17:52:37
>>434
まず正規表現を勉強しろ。

顔文字のリスト作ってそれと比較するのが単純で速いと思うが。

436:デフォルトの名無しさん
07/01/23 17:55:52
(゜o゜)これはおk?
(TへT)これもおkだね

437:434
07/01/23 17:57:28
>>435
リスト作ったほうが早いですか。

その場合、リストにない顔文字は一致しませんけど、しょうがないか…
全部の顔文字をうまく除去するなんて、難しいですよね

438:デフォルトの名無しさん
07/01/23 18:01:19
上手く作ったとしても
 テンプレート・ツールキット(TT)
なんて文脈じゃ誤判定は避けられないな

439:デフォルトの名無しさん
07/01/23 18:04:54
>>437
"ヽ(`Д´)ノ"
とかが、"ヽノ"になってもいいのかってこったわな。
結局は、顔文字の辞書ファイルを保守するしかないだろ。


440:434
07/01/23 18:18:05
"ヽ(`Д´)ノ"の場合は前後が記号ならそれも弾くとか考えてたんですよね

まぁ、ノのほうが記号じゃないんで、残りますが。

顔文字の辞書作ってるけど。結構メンドクセ

441:430
07/01/23 18:21:54
>>433
解決しました。
ありがとうございました。

>>432
こういうのをレキシカルスコープって言うんですね。
ありがとうございます。

442:デフォルトの名無しさん
07/01/24 01:40:36
文字の置換の際に、「マッチした文字列になんらかの処理をする」ということは可能でしょうか?

$str = "ABCDEF";
$str =~ s/(B)/&conv($1)/;

のように、マッチした文字列を、関数を使って、返り値で置換したいのですが・・・
(ちなみの、このコードだと、
A&conv(B)CDEF
という文字列になってしまいました。。。)

443:デフォルトの名無しさん
07/01/24 02:25:10
e

444:デフォルトの名無しさん
07/01/24 04:16:24
v

445:デフォルトの名無しさん
07/01/24 06:30:30
>>442
Windowsならコマンドプロンプト開いて
perldoc perlre
でperlの正規表現のドキュメント読めるよ。
ドキュメントにざっと目を通してれば人に質問するような内容じゃないぞ。

446:4442
07/01/24 07:16:24
>443
>445
ありがとうございます。 /e で、できました。

ドキュメントを確認せずに質問してしまって
済みませんでした。
プログラミングPerlにも、 /e が載ってました・・・

447:デフォルトの名無しさん
07/01/24 14:10:56
CGI作るつもりでperl始めたんだけど、テンプレにあるようなCGIとは無関係な使い方ってどんな使い方するの?
例えばどんな仕事でどう使うとか教えてほしい

448:デフォルトの名無しさん
07/01/24 14:14:36
>>447
スクリプトとして使えるじゃん。 バッチ処理とかさ。

449:デフォルトの名無しさん
07/01/24 14:26:58
>>447
CGIと関係なく、データベースとのやりとりとか。

450:デフォルトの名無しさん
07/01/24 14:27:35
>>447
えーと、えーと

451:デフォルトの名無しさん
07/01/24 14:29:52
こんな質問するやつに教えても理解できないと思うよ

452:デフォルトの名無しさん
07/01/24 14:31:22
エロ画像エロ動画収集に決まってるだろ

453:デフォルトの名無しさん
07/01/24 14:32:40
分類したエロ画像ファイルをリネームする

454:デフォルトの名無しさん
07/01/24 15:02:24
CUIだから単純で且つ面倒くさい処理やらせてる。すぐ書けるしね
>>452
漏れ以外にPerlをエロ収集に使おうと考える奴がいるとは・・・

455:デフォルトの名無しさん
07/01/24 16:01:07
>452-454
あれ、俺が何人もいる…

456:デフォルトの名無しさん
07/01/24 17:03:32
たしかにエロ収集に便利、というよりエロ収集してる時が一番はかどるな。

457:デフォルトの名無しさん
07/01/24 17:06:36
組みたくなってきた・・・
エロパワーは絶大だな

458:デフォルトの名無しさん
07/01/24 17:31:07
 ▀▄    ▀▄      ▄█    ▄█  ▀▀▀▀█
   ▀▄    ▀▄   ▄▀█   ▄▀█     ▄▀
    ▄▀    ▄▀ ▄▀ █  ▄▀ █     █
  ▄▀    ▄▀   ▀▀▀█▀ ▀▀▀█▀   █
 ▀     ▀        ▀     ▀    ▀

   █ ▄▄▄   █    ▀▀▀▀    ▄      ▄█ █
  █  █▄▄ █ █  ▄▄▄▄▄▄▄   █  ▄▄▄▄█▄▄
 ▀█ ▄█ █ █ █      ▄▀    █      █
  █ ▀ █▀ █ █    ▄▀▀▄    █   ▄▄▄█
  █  ▄▀    █  ▄▀   █    █  █   █▀▄
  ▀  ▀    ▀▀ ▀      ▀▀▀ ▀   ▀▀▀

こんなスレアラシに使える。

459:デフォルトの名無しさん
07/01/24 18:27:19
正規表現が使いやすいからPerlで組んだ
でもCUIなのがなぁ

460:デフォルトの名無しさん
07/01/24 18:34:47
Perlでは、ワンライナーか数行程度のスクリプトでテキストをいじったりとか
しかしてないが
Unicode対応がボミョウなので、たまに困ったことになる

use encoding('cp932')とかって、-n/-pスイッチとかと一緒に使うと
うまく動かなくね?つか、これって基本的に非推奨なんだべ?

Unicode文字列のリテラルや正規表現を直接記述できないので、
use encoding()しないとなると途端にウザい事態になるわPerlは

461:デフォルトの名無しさん
07/01/24 18:39:55
スクリプトをutf8で書けばuse encodingいらないし特に問題ないけどね。


462:460
07/01/24 18:43:07
>>461
それはスクリプトも入力もUTF-8を仮定できるときだけだべ?
少なくともWindows環境でそれは仮定できないなぁ
UTF-8なファイル名でファイル開いたりできないし

463:デフォルトの名無しさん
07/01/24 19:11:42
>>115

464:デフォルトの名無しさん
07/01/24 21:44:41
>462
URLリンク(aspn.activestate.com)

465:460
07/01/24 23:34:35
>>463
-pスイッチや-nスイッチを使わない場合はそれで上手く行くようです。
そもそも毎度毎度こんなに長いのではワンライナーは書けませんし、
簡単な仕事を簡単にやっつけられないのなら、Perlとしての魅力は
激減ですが。

やっつけ仕事によく使う-pスイッチや-nスイッチと
use utf8を共存させる方法はありますか。
#!/usr/bin/perl -pi.bak
なスクリプトで>>115の方法を試すと全くおかしなことになります。

>>464
なるほど、便利なモジュールがあるのですね。

466:デフォルトの名無しさん
07/01/25 00:31:18
間違いなく合ってない。
煽りとかではなく。
別の言語にしたほうが幸せになれるとおもうよ。

467:デフォルトの名無しさん
07/01/25 01:21:17
Perl/Tk で GUI でエロ画像を集めてるよ。

468:デフォルトの名無しさん
07/01/25 02:46:48
エロのエネルギーはおよそ12kW/hです。

469:デフォルトの名無しさん
07/01/25 09:55:07
質問
use strict; warn $c;
だとstrictが効くのに
use strict; warn $a;
だとstrictが効かないのはなぜ?
$bも効かない

470:デフォルトの名無しさん
07/01/25 10:04:09
sort() で使われるから例外扱い
perlvar嫁

471:デフォルトの名無しさん
07/01/25 10:16:32
質問します。

for(my $i=0;$i<=$#aaa;$i++){
$out = $aaa[$i] ;
if( $aaa[$i+1] ){
while($aaa[$i+1] =~ /^\+/){
$i++ ;
$out = "$out $aaa[$i]" ;
}
}
print "$out\n" ;
}

これのforをforeachで書いたらどんな記述でかけますでしょうか。
やりたいことは、ある要素のアタマに"+"があれば
その要素は一つ前の要素とつなげようとしています。
foreachで回している最中に強制的に次の要素にアクセスすることは出来るのでしょうか。

472:デフォルトの名無しさん
07/01/25 10:18:14
from>>469 to>>470

perldoc perlvar
$a
$b Special package variables when using sort(), see "sort" in perlfunc. Because of this specialness $a and $b don’t need to
be declared (using use vars, or our()) even when using the "strict ’vars’" pragma. Don’t lexicalize them with "my $a" or
"my $b" if you want to be able to use them in the sort() comparison block or function.

thx!


473:デフォルトの名無しさん
07/01/25 10:27:06
>>foreachで回している最中に強制的に次の要素にアクセスすることは出来るのでしょうか。

foreachでは今アクセスしている要素が何番目かを知ることはできない。
もちろん、中で別に変数を$i++とかすりゃ別。

俺ならこんな感じに書く。

foreach (@aaa) {
if (/^\+/) {
$out[-1] .= " $_";
} else {
push @out, $_;
}
}


474:デフォルトの名無しさん
07/01/25 10:34:48
すまん、なぜかソラ目でprintがpushに見えていた。

printだとこうかな。printが2つあるのがいまいち気に入らないが...

my $buf = undef;
foreach (@aaa) {
if (/^\+/) {
$buf .= " $_";
} else {
print $buf, "\n" if defined $buf;
$buf = $_;
}
}
print $buf, "\n" if defined $buf;

475:デフォルトの名無しさん
07/01/25 10:38:17
>>473 の後
print map { "$_\n" } @out; でもすりゃいいんだから別にいいんじゃ

476:デフォルトの名無しさん
07/01/25 15:20:56
print "$_\n" for @out;
このほうが短い。

477:デフォルトの名無しさん
07/01/25 15:30:03
print join "\n", @out;
の方がわかり安い

478:デフォルトの名無しさん
07/01/25 15:49:57
どれが速いんですかね^^

479:デフォルトの名無しさん
07/01/25 16:05:03
>>477
ダウト。それだと最後の要素の後に改行が出ない。

480:471
07/01/25 16:31:27
>>473
できました!!
すっきりしてわかりやすくなりました。
ありがとうございます。

481:デフォルトの名無しさん
07/01/25 16:40:25
>>479
そういう細かい部分ってすっごい大事だよね
後で泣き見たりする
しかし「ダウト」って使う人はあんまり見たことが無い

482:デフォルトの名無しさん
07/01/25 18:24:14
クイズのゲームを作っているのですが、問題を回答したら次ってどんどん進んでいき
正解したら各問ごとに正解数をカウントしていってりうのですちゃんとカウントされません。

perlはテキストでも作ってそれに書き込んでそのあと読み込んでしないと記憶した
変数が消えるのですか・・・?
変な質問ですみません。HSPからperlに乗り換えてみたんですが混乱してしまって

483:デフォルトの名無しさん
07/01/25 18:28:08
>>482
日本語でおk
HSPで作ったほうがいいんじゃね?

484:デフォルトの名無しさん
07/01/25 18:30:01
>>483
perlの勉強をしてみたいと思いましたので・・・

myで定義をしてるんですけど、なんかいろいろと定義の仕方があるみたいですねperlは

485:デフォルトの名無しさん
07/01/25 18:32:17
さっさとソースを見せろ

486:デフォルトの名無しさん
07/01/25 18:45:37
if($tugi eq "Q1"){
if($toi eq "t"){
$sum=$seikai+1;
}
&mon0;
}
if($tugi eq "Q2"){
if($toi eq "t"){
$sum=$seikai+1;
}
&mon1;
}
if($tugi eq "Q3"){
if($toi eq "t"){
$sum=$seikai+1;
}
&goukei;
}

sub goukei{
print "正解は"+$sum+"個";
}


487:デフォルトの名無しさん
07/01/25 18:45:40
次の問題へ進むたびに正解数を my してるんだろうな

488:デフォルトの名無しさん
07/01/25 18:47:08

sub mon0{
print "<P>";
print "<SELECT name='answer' size='3'>";
print "<OPTION value='true'>みかん</OPTION>";
print "<OPTION value='false'>アップル</OPTION>";
print "<OPTION value='false'>ばなな</OPTION>";
print "</SELECT>";
print "</P>";
print "<INPUT type=hidden name=tugi value=Q2>";
print "<P><INPUT type='submit' value='次の問いへ'></P>";
}
sub mon0{
print "<P>";
print "<SELECT name='answer' size='3'>";
print "<OPTION value='false'>インコ</OPTION>";
print "<OPTION value='true'>ふくろう</OPTION>";
print "<OPTION value='false'>鳩</OPTION>";
print "</SELECT>";
print "</P>";
print "<INPUT type=hidden name=tugi value=Q3>";
print "<P><INPUT type='submit' value='次の問いへ'></P>";
}

こんな感じです

489:デフォルトの名無しさん
07/01/25 18:48:04
webprogでやれ

490:487
07/01/25 18:49:27
はずした。

> $sum=$seikai+1;

491:デフォルトの名無しさん
07/01/25 18:49:59
$sum=$sum+1
じゃないの?

492:デフォルトの名無しさん
07/01/25 18:53:22
>>491
そこは修正しました。
上のほうで
my $sum;
と定義してるのが問題なんでしょうか?

493:デフォルトの名無しさん
07/01/25 18:57:38
上のほうで、とか言われてもわからないから全部見せろ

494:デフォルトの名無しさん
07/01/25 18:58:39
そもそもCUIなのかCGIなのか

495:デフォルトの名無しさん
07/01/25 18:59:02
↓こっちのがいいんでね?
スレリンク(php板)

496:デフォルトの名無しさん
07/01/25 19:08:30
URLリンク(www.vipper.net)
ここに書き込むと長いのでアップしてきました

497:デフォルトの名無しさん
07/01/25 19:19:26
htmlなんだろw

498:デフォルトの名無しさん
07/01/25 19:22:30
板違いっぽいですね(−−

499:デフォルトの名無しさん
07/01/26 05:44:42
>>477 は最後の改行もそうだが、メモリ内で一旦展開するから、
効率よくないんでない?


500:デフォルトの名無しさん
07/01/26 07:40:35
さらに、文字列を連結するためにメモリの再割り当てが何度も起きる悪寒

501:デフォルトの名無しさん
07/01/26 11:44:01
UTF8 で並んでいる名前の一覧があるのですが、それをあいうえお別に分類したいのですが
どういう方法が良いでしょうか。

青木 -> @AGyou へ
斉藤 -> @SaGyou へ
という感じにしたいとおもいます。

502:デフォルトの名無しさん
07/01/26 12:04:33
読み仮名付けなきゃ無理だね

503:デフォルトの名無しさん
07/01/26 12:07:36
>>502
お返事ありがとうございます。やっぱり難しいですね orz
別の手段を考えて見ます。

504:デフォルトの名無しさん
07/01/26 12:10:01
>>503
> 別の手段を考えて見ます。

なんで? 読みがなつければいいじゃん。


505:デフォルトの名無しさん
07/01/26 12:13:15
>>504
表現が悪くてすいません。別の手段 → 読み仮名をつけることです。

506:デフォルトの名無しさん
07/01/26 12:32:13
読みがなをつけるモジュールって、あっても良さそうなもんだけどね。
mecabにぶっ込めば一発か?

507:デフォルトの名無しさん
07/01/26 12:35:47
>>506
あ〜それ欲しいですね。

508:デフォルトの名無しさん
07/01/26 13:24:24
不確実すぎるだろ・・・

509:デフォルトの名無しさん
07/01/26 14:09:40
すべて登録されているとは限らないし ―特に名前の方、
読みがアンビなのもあるから、必要なのは、読みがなふり支援ツール
じゃなかんべか。

510:デフォルトの名無しさん
07/01/26 15:48:49
漢字にふり仮名を自動でつけるのは
ある程度は自動化できるが
同じ字で読みが違う場合もあるので(ex.徳沢 => とくさわ,とくざわ etc.)
完全な精度では無理。

511:デフォルトの名無しさん
07/01/26 18:19:13
URLリンク(www.alles.or.jp)
684万人を調べて、約7万8千種の名字ランキングを公開している人がいるぞ。
そのデータを使うのが手っ取り早いと思われる。
....しかし、ヒマ人だな〜。


512:デフォルトの名無しさん
07/01/26 19:17:30
読みを当てはめるのも結局確率だから
↑のデータ使ってもやっぱ無理っしょ

513:デフォルトの名無しさん
07/01/26 20:45:14
そこでAIの出番なわけだ

514:デフォルトの名無しさん
07/01/26 20:52:49
そこでエスパーの出番なわけだ

515:デフォルトの名無しさん
07/01/26 20:57:04
WindowsXP上でActivePerlを使ってるんですが、USBデバイスをコントロールする方法はありますか?
学習リモコンのクロッサム2+USBとデータをやりとりしたいんですが。

516:デフォルトの名無しさん
07/01/26 21:07:32
>>511のリンク先より引用
----
名字 ふりがな 人数 順位 累積人数  累積比率
鈴木 スズキ 139,627 1  139,627 2.04029%
鈴木 ススギ 25 13,107 6,517,718 95.2398%
鈴木 ススキ 7 27,840 6,723,557 98.2476%
鈴木 スズノキ 3 41,426 6,795,040 99.2922%
鈴木 スズ 2 47,333 6,812,494 99.5472%
鈴木 スズシ 2 47,333 6,812,506 99.5474%
鈴木 スヅキ 2 47,333 6,812,518 99.5476%
鈴木 スス 1 56,150 6,832,142 99.8343%
鈴木 ススヘキ 1 56,150 6,832,147 99.8344%
鈴木 ススリキ 1 56,150 6,832,148 99.8344%
鈴木 スズギ 1 56,150 6,832,151 99.8344%
鈴木 ズスキ 1 56,150 6,832,308 99.8367%
鈴木 ズズキ 1 56,150 6,832,309 99.8367%
鈴木 ヌズキ 1 56,150 6,836,957 99.9047%
----

姓しかわからない状況で確実に読み仮名をつける方法は
>>513のAIじゃなく >>514のエスパーだな。
AIについて無知な>>513はAIと書けばかっこいいと思ってるのか?

517:デフォルトの名無しさん
07/01/26 21:11:14
ヌズキはねーよw どう考えても書き間違いだろwww

あ、ヌズキさん見てたらごめんなさい><

518:ヌズキ
07/01/26 21:24:52
呼んだ?

519:デフォルトの名無しさん
07/01/26 21:26:36
名前の仮名振りは、人間がやってもかなり難しい。
自動化なんてとても無理。 入力補助が限界でしょうね。

520:デフォルトの名無しさん
07/01/26 21:50:28
あと「ズスギ」さんと「ズズギ」さんが入れば
濁点のあるなしの組み合わせがそろうのにな

521:デフォルトの名無しさん
07/01/26 22:00:02
読みが存在しない漢字が存在する

522:デフォルトの名無しさん
07/01/27 00:46:22
たとえば、「東」と書いて「あずま」「ひがし」「とう」と、読み方がいろいろある。
漢字だけからは読み方は判別できない。
そのため、正しい読み方は、本人にしかわからない。

523:デフォルトの名無しさん
07/01/27 00:52:27
同じクラスに五島(ごとう)と五島(ごしま)が居たことあるよ。

524:デフォルトの名無しさん
07/01/27 01:09:35
>>523
おまえ、ひょっとして1年2組の時の近藤(こんどう)か?
おれ隣のクラスの権藤(ごんどう)だよ。おぼえてるか?

525: ◆TWARamEjuA
07/01/27 01:37:47 BE:4356285-BRZ(6761)
住基ネットワークに問い合わせれば総て解決♪

526:デフォルトの名無しさん
07/01/27 15:01:28
>>515
キミの質問は、2つに切り分けないといけない。
1.クロッサム2のDLLのインターフェースが公開されているかどうか。
2.ActivePerl から DLLを呼び出せるかどうか。

両方とも「YES」だからできるのだが、質問の切り分けができず、
「1」の当否を回答者に調べさせるキミには無理だ。

527:デフォルトの名無しさん
07/01/27 15:20:23
>>525
スーパーハッカーキタ━━━(゚∀゚)━━━ !!

528:デフォルトの名無しさん
07/01/27 16:01:58
あふぉか
姓しかわからないデータと住基ネットのデータをどうリンクするんだよ。
>>525=>>527か?
くだらないネタにみんなスルーしてるわけだが、
自作自演するほど反応してほしかったのか?


529:デフォルトの名無しさん
07/01/27 16:22:13
ネタだと思っているなら何故あふぉとか言ってマジ突っ込みするんだろう。分裂気味?
まぁ大方、真相がネタでもマジでも恥かかないよう工夫したら前後で矛盾が出たってとこか。

530:デフォルトの名無しさん
07/01/27 17:17:34
まぁ未承諾さんだし。

531:デフォルトの名無しさん
07/01/27 18:02:01
>>526
もちろんDLLとかWindowsの約束とかよく分かっておりません。
そのあと、mrccom.dllを見つけてWin32::APIでimportを試すところまで来ましたが、
unknown errorでimport出来ず\(^o^)/。どなたか気が向いたら教えてください。

532:デフォルトの名無しさん
07/01/27 20:09:12
>>528
サブイ

533:デフォルトの名無しさん
07/01/27 22:26:03
>>527,>>529,>>532
ここはvipでも口論・議論ではなくperlの質問箱スレだ。
前日の終わったネタをいつまでも引きずったり、
指摘されて逆切れして粘着するぐらいならほかのスレ行けよ


534:デフォルトの名無しさん
07/01/27 22:45:22
>>528=533 別に君以外誰も文句も言ってないし、しきりも頼んでないけど。
頓珍漢レスを>>529に指摘されて逆ギレしてる張本人乙にしかみえないよ?w

535:デフォルトの名無しさん
07/01/27 22:52:37
粘着だが逆ギレだか知らんが、
PerlのスレでPerlの話をしないやつはすべて平等に価値がない

536:デフォルトの名無しさん
07/01/27 23:29:55
ここは批判されると30分以内に逆切れコメントする527を観察スレですか?

537:デフォルトの名無しさん
07/01/28 00:35:56
>>531
>どなたか気が向いたら教えてください。
まず、C++を勉強しろ。C++でDLLを扱えるようになること。
PerlでDLLを扱う話はそれからだ。

538:デフォルトの名無しさん
07/01/28 01:35:42
>>533
ここはvipでも口論・議論ではなくperlの質問箱スレだ。
前日の終わったネタをいつまでも引きずったり、
指摘されて逆切れして粘着するぐらいならほかのスレ行けよ

539:デフォルトの名無しさん
07/01/28 02:58:29
    __
    |   |
    |   |   ___                  ___
    |   | .  /     |  __    _____   / _  \
    |   |  /  /|  |  /  /   / ____/  / /  >  l
    |   |. /  / .|  |. /  /   / /..   _    /   ̄  /
    |   |/  /  |  |/  /   /   ̄ ̄_/   /      \
    |       /.   |     /   / / ̄ ̄ __   /  / ̄ ̄>  |
    |    /   |___/  ./   ̄ ̄ ̄ /  /    ̄ ̄  /
     ̄ ̄ ̄             ̄ ̄ ̄ ̄ ̄     ̄ ̄ ̄ ̄ ̄     _____      ___ ___    ___
    ______                             /__  __/ [][] _| |_| |__ _| |_
     |  ___  \                               / /     |    _  | |_  レ'~ ̄|
     |  |    \  l                              |  |_      ̄|  | / / /   /| |
     |  |____/  /                             \__|      |  |  ̄ /_  /.  | |_
     |  ____/ ___  __    __/ヽ                    |_|.     |__|.   \/
     |  |     /`、_/_/ / _ ヽ  / _  /
     |  |     ヽ  /   | l   l l  | l   l l
     |  |       | l     ヽ  ̄ /  ,ヽ  ̄ /
      ̄          ̄      ̄ ̄  / __ ヽ
                        | l     l l
                        ヽ  ̄ ̄ /
                         ~ ̄ ̄~

540:デフォルトの名無しさん
07/01/28 03:41:10
それ、もう少し小さくならんか。

541:デフォルトの名無しさん
07/01/28 04:14:20
  Web
      でやれ
  Prog

542:デフォルトの名無しさん
07/01/28 04:16:24
vv3bpr0gマ”ゃれ

543:デフォルトの名無しさん
07/01/28 21:16:33
Image::Magickで32bit(RGBA)のpngを読み込んで、24bit(RGB)のpngに書き出したいんだけど、
どうやればいいか教えてください。

544:デフォルトの名無しさん
07/01/28 21:39:34
URLリンク(mechanics.civil.tohoku.ac.jp)
convertで24bit Raw RGBで出力して
それを再度pngで出力すればいいんでね?

545:543
07/01/29 00:12:46
もう少し調べてみたら、
$im->Set(matte => 0);
で解決できました。スレ汚しごめんなさい。

546:デフォルトの名無しさん
07/01/30 20:26:33
threads::shared なんですが、
例) $var : shared;
と言うのは、文法的にどういう意味なのでしょうか?
threadsだけに許された特殊な文法なのでしょうか?

547:デフォルトの名無しさん
07/01/30 21:18:54
attributes

548:デフォルトの名無しさん
07/01/30 22:02:55
>>547
ありがとうございます
CPANで見ても英語がさっぱりで…
分かり易く解説されているページ等はないでしょうか
はてなのは見ましたがさっぱりです

549:デフォルトの名無しさん
07/01/31 17:01:01
質問です
UNIX系OSやWindowsで
.soや.dllを利用したいのですが、
どうするのが一般的でしょうか?
出来れば日本語の解説ページをお願いします

550:デフォルトの名無しさん
07/01/31 23:53:20
質問です
コマンドラインでカウントダウンってできますか?

C:\>perl hoge.pl
次の処理まで待ち時間: 5秒...

のところ “5”の部分のみが 4 3 2 1... と更新されていくようにしたいのです
いちおー system "cls (もしくは) clear "でスクリーンごと更新とかは なしで

Activeperlですが cpanで解決するなら cpanでも結構です

よろしく〜

551:デフォルトの名無しさん
07/02/01 00:00:31
>>550
¥b


552:デフォルトの名無しさん
07/02/01 00:05:34
>551
うおっ! ありがとうございます!!
さっそくそのキーワードで調べてみます!!

553:デフォルトの名無しさん
07/02/02 13:47:58
perlでISHテキスト←→バイナリ変換するモジュールってある?
一通りCPANしたりぐぐったりしてみたが見つからなかったんだけど。

554:デフォルトの名無しさん
07/02/02 15:02:25
質問です。
項目数(列数)が多いCSVのデータを読み込んで処理するとき、皆さんはどうしてますか?

私は10項目くらいでしたら
my($id, $name, $age, ..) = split /,/;
と、それぞれ変数を用意するのですが、

100項目を超えるような場合、項目名を要素とする配列を用意しておき
@col_name = qw(id name age ..);

連想配列に格納して
my @array = split /,/;
my %hash = ();
for(0..$#col_name) {
  my $key = $col_name[$_];
  my $val = $array[$_];
  $hash{ $key } = $val;
}
$tel = $hash{tel};

今扱ってるCSVはデータの件数(行数)が500件あって、上記の連想配列の格納をその件数分繰り返し行なっています。



555:554
07/02/02 15:03:04
「項目名 => 項目番号」の連想配列を用意しておくのがいいのかなとも思うのですが、
%col_no = (
  id => 0,
  name => 1,
  ...,
  );
$tel = $array[ $col_no{tel} ];
↑ちょっと読みづらいかなとも思います。

項目数・項目名が変わる可能性は低いです。
効率よりも読みやすさ重視です。

よろしければ、ご意見お聞かせください。


556:デフォルトの名無しさん
07/02/02 15:07:30
$tel = $array->[$i]->{'col_no'}->{'tel'};

557:デフォルトの名無しさん
07/02/02 15:09:34
$tel = $array->[$i]->{'tel'};
これでいいのか
入れ方は任せる

558:デフォルトの名無しさん
07/02/02 18:22:13
@col_name = qw(id name age); # member

$_ = "1,hiroyuki,30"; # csv
@$record{@col_name} = split /,/;


#
print $$record{id},"\n";
print $$record{name},"\n";
print $$record{age},"\n";

559:デフォルトの名無しさん
07/02/02 21:32:19
利便性の為にハッシュを使わざるを得ないのが気になってるんじゃないの?
配列でやりたいなら、こんなことしちゃったり:

my $r = MyRecord->new(split /,/);
print("$r->name\n");

package MyRecord;
BEGIN {
my $i = 0;
my @col_name = qw(id name age); # カラム名を設定。
for my $n (@col_name) {
eval qq{ sub $n :lvalue { \$_[0][$i] }};
$i++; }}

sub new { bless [@_[1..$#_]], $_[0]; }

560:デフォルトの名無しさん
07/02/02 21:34:18
ミス。
print("$r->name\n")
修正 → print($r->name, "\n")

561:デフォルトの名無しさん
07/02/02 22:02:33
>>559
evalで作るのと、*{...} = sub{}で作るのどっちがスマートなんだろ。

562:デフォルトの名無しさん
07/02/02 22:22:43
evalはパーサが動く分遅くはなりそうだけど
通常の定義と見た目が一貫してるから読みやすいかも。

シンボルテーブル+クロージャだと、クロージャ作る側のレキシカルな環境?も意識しないとならないし、ちょっと嫌。

563:554
07/02/03 10:09:16
>>556-562
ご回答ありがとうございます。

いろいろ方法があるのですね。
まだご回答の内容が理解できていないので、勉強してきます。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5370日前に更新/220 KB
担当:undef