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


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

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



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

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

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

www.perl.org/get.html
● 2006/12/21現在の最新版: 5.8.8
● 2006/12/21現在の開発版: 5.9.3

前スレ
Perlについての質問箱 28箱目
pc8.2ch.net/test/read.cgi/tech/1162273941/

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

477 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 15:30:03 ]
print join "\n", @out;
の方がわかり安い

478 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 15:49:57 ]
どれが速いんですかね^^

479 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 16:05:03 ]
>>477
ダウト。それだと最後の要素の後に改行が出ない。

480 名前:471 mailto:sage [2007/01/25(木) 16:31:27 ]
>>473
できました!!
すっきりしてわかりやすくなりました。
ありがとうございます。

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

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

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

483 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 18:28:08 ]
>>482
日本語でおk
HSPで作ったほうがいいんじゃね?

484 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 18:30:01 ]
>>483
perlの勉強をしてみたいと思いましたので・・・

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

485 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 18:32:17 ]
さっさとソースを見せろ



486 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 18:45:40 ]
次の問題へ進むたびに正解数を my してるんだろうな

488 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 18:48:04 ]
webprogでやれ

490 名前:487 mailto:sage [2007/01/25(木) 18:49:27 ]
はずした。

> $sum=$seikai+1;

491 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 18:49:59 ]
$sum=$sum+1
じゃないの?

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

493 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 18:57:38 ]
上のほうで、とか言われてもわからないから全部見せろ

494 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 18:58:39 ]
そもそもCUIなのかCGIなのか

495 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 18:59:02 ]
↓こっちのがいいんでね?
pc10.2ch.net/test/read.cgi/php/1164519503/



496 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 19:08:30 ]
ttp://www.vipper.net/vip166431.zip.html
ここに書き込むと長いのでアップしてきました

497 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 19:19:26 ]
htmlなんだろw

498 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 19:22:30 ]
板違いっぽいですね(−−

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


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

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

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

502 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 12:04:33 ]
読み仮名付けなきゃ無理だね

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

504 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 12:10:01 ]
>>503
> 別の手段を考えて見ます。

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


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



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

507 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 12:35:47 ]
>>506
あ〜それ欲しいですね。

508 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 13:24:24 ]
不確実すぎるだろ・・・

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

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

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


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

513 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 20:45:14 ]
そこでAIの出番なわけだ

514 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 20:52:49 ]
そこでエスパーの出番なわけだ

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



516 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 21:11:14 ]
ヌズキはねーよw どう考えても書き間違いだろwww

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

518 名前:ヌズキ mailto:sage [2007/01/26(金) 21:24:52 ]
呼んだ?

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

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

521 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 22:00:02 ]
読みが存在しない漢字が存在する

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

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

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

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



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

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

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

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


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

530 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 17:17:34 ]
まぁ未承諾さんだし。

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

532 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 20:09:12 ]
>>528
サブイ

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


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

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



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

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

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

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

540 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 03:41:10 ]
それ、もう少し小さくならんか。

541 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 04:14:20 ]
  Web
      でやれ
  Prog

542 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 04:16:24 ]
vv3bpr0gマ”ゃれ

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

544 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 21:39:34 ]
mechanics.civil.tohoku.ac.jp/soft/node43.html
convertで24bit Raw RGBで出力して
それを再度pngで出力すればいいんでね?

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



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

547 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 21:18:54 ]
attributes

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

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

550 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 23:53:20 ]
質問です
コマンドラインでカウントダウンってできますか?

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

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

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

よろしく〜

551 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 00:00:31 ]
>>550
¥b


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

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

554 名前:デフォルトの名無しさん mailto:sage [2007/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 mailto:sage [2007/02/02(金) 15:03:04 ]
「項目名 => 項目番号」の連想配列を用意しておくのがいいのかなとも思うのですが、
%col_no = (
  id => 0,
  name => 1,
  ...,
  );
$tel = $array[ $col_no{tel} ];
↑ちょっと読みづらいかなとも思います。

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

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




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

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

558 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 21:34:18 ]
ミス。
print("$r->name\n")
修正 → print($r->name, "\n")

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

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

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

563 名前:554 mailto:sage [2007/02/03(土) 10:09:16 ]
>>556-562
ご回答ありがとうございます。

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

564 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 09:24:15 ]
他人が作った、FTPで複数のファイルを受信する為の処理に手を入れなくては
いけないのですが、元のソースにエラー時の処理が全く入っていません。

$ftpcmd = ○○○ #<-ftpコマンドが記述されたテキストファイル
system("ftp -n < $ftpcmd);

対象ファイルは複数あって mget logfile*.* で取って来ています。
ファイルが取って来れなかったり、相手に接続できなかったりといったような
エラーが起きた事を判定するにはどのようにすればいいのでしょうか?
PerlもLynuxも初めてなので、出来るだけ簡単な方法を教えていただけると
ありがたいです。

よろしくお願いします。

565 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 13:04:46 ]
Net::FTP で書き直したらいいんじゃないかな。



566 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 15:35:04 ]
>>564
Net::FTPでスクリプト書く例
search.cpan.org/~gbarr/libnet-1.20/Net/FTP.pm

モジュールが入ってなかったら「perl CPAN」でググってCPANの使い方覚えていれろ

567 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 16:26:22 ]
Lynuxはおらも初めてだ

568 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 17:13:07 ]
>>565-566
そのやり方で書き直してみます。
ありがとうございました。

>>567
Linuxの打ち間違いですね。

569 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 23:30:35 ]
>>565-566

教えていただいた方法で組んでみたのですが、複数のファイルをワイルドカードで
指定して取って来るにはどうしたらよいのでしょう?

対象のファイル名には出力された日付と時刻が含まれていて、個数も名前も不定
なのです(○○○YYYYMMDDHHMM.logのようなファイル名で、日付部分が
当日のものだけ取って来たいのです)。

何度もすみませんがよろしくお願いします。



570 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 01:45:03 ]
sub mget {
   my($ftp,$pattern) = @_;
  foreach my $file ($ftp->ls($pattern)) {
     $ftp->get($file) or warn $ftp->message;
  }
}


571 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 23:22:19 ]
>>570
どうもありがとうございます。
上手く持ってこれました。



572 名前:デフォルトの名無しさん [2007/02/07(水) 11:31:08 ]
希望結果を得たいのですが、実行結果の通りになります
以下のソースで実行結果になることは納得できるのですが、
希望結果を得るためにはどうすれば良いのでしょうか?

●ソース
@$data=(
{'name'=>'test1','pay'=>'1000','cancel_flg'=>'0','create_date'=>'20070131','cancel?date'=>''},
{'name'=>'test2','pay'=>'2000','cancel_flg'=>'1','create_date'=>'20070110','cancel_date'=>'20070120'},
{'name'=>'test3','pay'=>'100','cancel_flg'=>'0','create_date'=>'20070201','cancel_date'=>''},
);
foreach(@$data){
push(@lst,$_);
if($_->{cancel_flg}){
$_->{create_date}=$_->{cancel_date};
$_->{pay}="-".$_->{pay};
push(@lst,$_);
}
}
print "$_->{name}\t$_->{pay}\t$_->{create_date}\n" foreach(@lst);

●実結果
test1 1000 20070131
test2 -2000 20070120
test2 -2000 20070120
test3 100 20070201

●希望結果
test1 1000 20070131
test2 2000 20070110
test2 -2000 20070120
test3 100 20070201

573 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 11:44:59 ]
foreach(@$data){
push(@lst, {%$_});

574 名前:デフォルトの名無しさん [2007/02/07(水) 11:55:08 ]
>>573
ありがとうございます
希望どおりの結果を得られました
ハッシュ内のデータを1つずつ別のハッシュに移し替えることで回避していましたが
これからはソースがスマートになりそうですw
私が無知なだけだと言う話かも知れませんが、勉強になりました

575 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 12:23:24 ]
こういうことだな。
$X = ['A'];
$Y = $X; #リファレンスデータのポインタ(?)だけをコピーして、データそのものはコピーしてない。
$X->[0] = 'B';
print $Y->[0];

結果「B」



576 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 12:36:30 ]
ちょっとCPANで調べるとStorableのdcloneとか、
Clone(::More/Fast/PP/Any...)とかなんかたくさんあるんだけど
どれを使うのがいいんだよ

577 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 12:39:19 ]
俺は年寄りなのでcancelないときもコピーすんのもったいないと思ってしまう







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

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

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