[表示 : 全て 最新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

355 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 02:29:27 ]
FileHandleやIO::Fileって使わないの?

356 名前:331 mailto:sage [2007/01/18(木) 09:36:42 ]
331で質問したモノです。
また壁にぶち当たりました。
ftpしたあとのファイル、ディレクトリの日付、サイズを取得したいので調べてましたが
use Net::FTP::File;のNet::FTP::fstatは作りかけのようで使用出来ませんでした。
$ftp->dir(./)で拾って日付を抜こうと思いましたが、日本語環境と英語環境で
表示が異なるので断念しました。
何か取得方法はないでしょうか。

use Net::FTP;
my $ftp = Net::FTP->new($host);
$ftp->login($user, $pass);

357 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 09:45:05 ]
>>356
> 何か取得方法はないでしょうか。

マニュアルを見ると分かるんじゃないでしょうか

358 名前:デフォルトの名無しさん [2007/01/18(木) 12:07:32 ]
Perlで文字列にunicodeが含まれているかどうかを判断するにはどうすればいいですか?

359 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 12:20:56 ]
「文字列にunicodeが含まれている」という言い方があいまい杉。

あるバイト列の文字コードがunicode由来のものであることを知りたいのか
(エンコーディングの仕方が何通りもあるので)

→ Encode::Guess。ただし完全な判定は無理。

UTF-8フラグが立った文字列であることを知りたいのか

→Encode::is_utf8(あるいはutf8::is_utf8)

それともぜんぜん別のことなのか


360 名前:デフォルトの名無しさん [2007/01/18(木) 12:45:35 ]
>>359
unicode由来のもであるかどうかです
それと環境はPerl5.0でJcode.plです

361 名前:356 mailto:sage [2007/01/18(木) 13:54:08 ]
調べていたらNet::FTPのmdtmが使えそうだったので
書いてみましたがエラーが出ました。
使い方が間違えているのでしょうか。

$host = "***" ;
$user = "***" ;
$pass = "***" ;

use Net::FTP;
my $ftp = Net::FTP->new($host);
$ftp->login($user, $pass);
foreach($ftp->ls()){
$aaa = $ftp->mdtm($_) ;
print "$aaa\n" ;
}


362 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 16:20:51 ]
>>361
Net::FTPの使い方としては間違ってないよ。
エラーってnot a plain fileのことか?
とりあえずエラーの理由知りたけりゃDebug=>1設定しなさい。

363 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 16:24:58 ]
>>360
jcode.pl は Unicodeには対応していないはず。
Perl 5.0 なんて時代遅れなもの使うのやめたら?



364 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 16:29:49 ]
時代は6だな

365 名前:361 mailto:sage [2007/01/18(木) 16:36:17 ]
---------------------------------------------------------------------------
#!/usr/local/bin/perl -w -- # -*-Perl-*-
use strict;
use warnings;
use Net::FTP;

my $host = "txfs02" ;
my $user = "g-fan" ;
my $pass = "fan" ;
my $aaa ;

my $ftp = Net::FTP->new($host);
$ftp->login($user, $pass);
foreach($ftp->ls()){
$aaa = $ftp->mdtm($_) ;
print "$aaa\n" ;
}
---------------------------------------------------------------------------

↑これを実行すると一つのファイルにつき↓このメッセージが出ます。
色々試してはいますが詰まっていますorz

Use of uninitialized value in concatenation (.) or string at bbb.pl line 15.


366 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 16:47:09 ]
>>365
>Use of uninitialized value in concatenation ...
何も無いものをprintしようとしたからwarningsが出たわけ
print "$aaa\n";

print "$aaa\n" if $aaa;



367 名前:361 mailto:sage [2007/01/18(木) 16:52:50 ]
>>366
そうなんです。
全てのファイルのmdtmがundefになってるんですよね。
だいたい”foreach($ftp->ls()){”でファイルを拾っているので
ファイル名を間違えているとかそういうのは無いはずなんですが。


368 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 17:03:16 ]
Debug=>1にすると俺の環境では

ディレクトリはエラーでnot a plain fileを返してる(undef)
ファイルはtimeを返してる



369 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 17:07:02 ]
>>367
> ファイル名を間違えているとかそういうのは無いはずなんですが。

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

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

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

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




371 名前:361 mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 17:45:44 ]
今ぐぐってみたら
MDTMはFTPの拡張仕様だから対応してない鯖が多いみたいだ
MDTM対応してない鯖は気合でLISTの結果を解析するしかなさそうな感じ



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

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

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

376 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 19:01:19 ]
IEもLISTを解析してるらしい
ttp://support.microsoft.com/kb/834577/ja
かなり大変そうだな・・・

377 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 19:37:54 ]
CPANを漁ったらこんなのがあった。使い物になるかな
ttp://search.cpan.org/~gaas/libwww-perl-5.805/lib/File/Listing.pm

378 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 20:47:53 ]
>>375
悲惨なものよ

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

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


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

380 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 00:33:42 ]
>>379
@KINTAMA_STRとかあってワロス

381 名前:361 mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 10:18:31 ]
>>381
> 日本語で去年のファイルになると時間が年表記になって
> 時間が取り出せないorz

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

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



384 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 14:01:44 ]
> 別に酷いコードじゃないと思うけど、
マジで?

385 名前:デフォルトの名無しさん mailto:sage [2007/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 mailto:sage [2007/01/19(金) 14:20:43 ]
>>384
苦なく読めるという点で。改良点を挙げようとすればそりゃ出てくるがな。

387 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 15:04:42 ]
>>385
これだけ見ても何が面白いのかワカランだろ。まぁ、十分ヘタクソなコードだけど。
これが商用のソフトのファイル共有ソフトの検出処理だってのが凄い。
72.14.253.104/search?q=cache:82TAp8C1ZsUJ:news20.2ch.net/test/read.cgi/news/1169012146/+pf_check_p2p&hl=ja&ie=UTF-8

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

389 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 15:37:59 ]
>>388
ニュー速だぞ?w

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

391 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 16:41:48 ]
人件費が馬鹿にならんだろそれじゃ

392 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 17:08:45 ]
マwジwレwwスwww

393 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 17:12:31 ]
391に突っ込むって
どんだけ2ch初心者なんだよ



394 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 17:19:27 ]
2chw初w心ww者www

395 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 17:56:46 ]
はいはい
vipに帰りな

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

397 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 19:04:24 ]
>>393
熟練の方ですか?wwww

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

399 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 20:11:44 ]
言い負けてからが長い

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

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


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

monazilla Part 5
pc10.2ch.net/test/read.cgi/tech/1057329161/l50


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

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



404 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 22:24:10 ]
>>400
UAをMonazilla/1.00にするとか

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


407 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 22:55:23 ]
>>406
ありがとうございます
調べてみます

408 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 23:33:03 ]
Perl Hacks
ttp://www.amazon.co.jp/dp/4873113148/

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

409 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 23:57:59 ]
そんな本が出るこそさえ知らなかったわさ

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

411 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 00:19:55 ]
>408
O'Reillyで目次見れるから、だいたい判断つくんじゃない?
俺は英語版持ってるから買わないけど。
ttp://www.oreilly.co.jp/books/9784873113142/toc.html

412 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 00:54:41 ]
第1章の1項ってテクニック?

413 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 01:23:23 ]
1章2章はツールの話だろ



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

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

416 名前:デフォルトの名無しさん [2007/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 名前:デフォルトの名無しさん [2007/01/21(日) 12:12:55 ]
わかりました
7じゃなくて6ですた…
自己解決染ました

418 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 12:41:03 ]
>>417
> 7じゃなくて6ですた…

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

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

あるいは、

print for @week;


419 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 13:30:56 ]
すごい省略できるんですね…

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

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

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

422 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 16:45:32 ]
PBP6.9に入れた方がいいと書いてあるだろ

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

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


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

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

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



424 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 18:40:53 ]
read関数

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

426 名前:423 mailto:sage [2007/01/21(日) 18:49:16 ]
>>424
>>425
ありがとうございます。
無事解決できました

427 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 19:00:13 ]
いいのかおい

428 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 23:22:29 ]
正規表現の量指定子{}に変数は使えますか?

429 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 23:25:53 ]
すいません、自己解決しました
てか自分で試せばよかった・・・

430 名前:デフォルトの名無しさん mailto:sage [2007/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 mailto:sage [2007/01/23(火) 17:28:11 ]
>>↑の続き

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

0 1
1 2
2 3
3 4
4 5

432 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 17:40:06 ]
レキシカルスコープ

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

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

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



434 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 17:48:50 ]
質問です。

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


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

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

435 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 17:52:37 ]
>>434
まず正規表現を勉強しろ。

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

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

437 名前:434 mailto:sage [2007/01/23(火) 17:57:28 ]
>>435
リスト作ったほうが早いですか。

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

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

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


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

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

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

441 名前:430 mailto:sage [2007/01/23(火) 18:21:54 ]
>>433
解決しました。
ありがとうございました。

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

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

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

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

443 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 02:25:10 ]
e



444 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 04:16:24 ]
v

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

446 名前:4442 mailto:sage [2007/01/24(水) 07:16:24 ]
>443
>445
ありがとうございます。 /e で、できました。

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

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

448 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 14:14:36 ]
>>447
スクリプトとして使えるじゃん。 バッチ処理とかさ。

449 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 14:26:58 ]
>>447
CGIと関係なく、データベースとのやりとりとか。

450 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 14:27:35 ]
>>447
えーと、えーと

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

452 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 14:31:22 ]
エロ画像エロ動画収集に決まってるだろ

453 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 14:32:40 ]
分類したエロ画像ファイルをリネームする



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

455 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 16:01:07 ]
>452-454
あれ、俺が何人もいる…






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

前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