トップページphp
1001コメント296KB

Perlコーディング初心者質問スレ Part 58

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2008/08/06(水) 22:54:32ID:???
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

お勧めサイトは >2 以降

前スレ http://pc11.2ch.net/test/read.cgi/php/1203935151/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0951nobodyさん2009/02/11(水) 19:17:33ID:???
map 期というものが perler にはあってだな。。。
0952nobodyさん2009/02/12(木) 01:21:39ID:elf1AFfG
cronを使用して自動でディレクトリのファイルを監視するプログラムをperlで作成しています。
その際予期しないファイルを発見した時、外部サーバーのphpファイルへhttpアクセスするという
事を行いたいのですがどのようにすればよいのでしょうか?

流れは以下のようになります。
1.perlが予期しないファイルを発見する。

2.perlからhttp://www.hoge.com/check.php?g=1へアクセスを行う。

3.check.phpが引数を取得して処理をする。


上記処理を自動で行いたいのですが。
どなたかお解かりになる方、ご教示お願い致します。
0953nobodyさん2009/02/12(木) 01:29:57ID:???
>>952
http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq9.html#how_do_i_fetch_an_html_file
0954nobodyさん2009/02/12(木) 08:59:48ID:???
その通りに書けばいいだけだと思うのだが...
0955nobodyさん2009/02/12(木) 09:06:47ID:???
>>952
うpロダの違法ファイルとかの処理なのかと思ったけど、
エロ画像を検出するモジュールなんて流石にないかw
0956nobodyさん2009/02/12(木) 09:26:47ID:???
何処が分からないのか具体的に書かないとレス付かないよ。
0957nobodyさん2009/02/12(木) 12:30:22ID:???
おそらくは

あぷうろだを運営しています
ファイルがアップされたときにファイルの中身をプログラムでチェックしており、
あやしいファイルがアップされたときに外部のURLへ通知を行いたいのですが
どのようにやればいいのか分かりません

なのかな?
だとすれば >>953 にある
use LWP::Simple;
$content = get($URL);
で解決します
0958nobodyさん2009/02/12(木) 12:36:09ID:???
>>957
単にリダイレクトするだけでよい可能性もあるなw
0959nobodyさん2009/02/12(木) 12:37:01ID:???
>>957
>あやしいファイルがアップされたときに
どう考えても、ここが一番頭を使いそうなものだが
0960nobodyさん2009/02/12(木) 16:47:42ID:???
文字列の中の複数の文字を入れ替える事を目的としています

$test = '文字列の中の複数の文字を入れ替える事を目的としています';
$test =~ s/文字列/Peal/g;
$test =~ s/目的/CGI/g;
としても駄目でした。
複数の文字列を入れ替える方法をご存知でしたらご教授願います。
0961nobodyさん2009/02/12(木) 16:51:46ID:???
駄目と言うと?
0962nobodyさん2009/02/12(木) 16:57:41ID:???
>>961
作業していた文字の中に表現文字が入っていたみたいで正常に作動してなかったみたいです。
実際に使っているコードを見せないと駄目ですよね。以後気をつけます。
ご返答ありがとうございました。
0963nobodyさん2009/02/12(木) 17:25:17ID:???
quotemeta でもやっとけ
0964nobodyさん2009/02/12(木) 17:36:07ID:???
なぞの「表現文字」について
0965 ◆TWARamEjuA 2009/02/12(木) 23:44:20ID:???
clamavに通していたりします♪@うpファイル
0966 ◆TWARamEjuA 2009/02/12(木) 23:45:38ID:???
(´-`).。oO(昨夜のRock54不具合と同じ事かぁ。。。)
0967nobodyさん2009/02/13(金) 09:47:26ID:???
トリップ付けるやつにろくなやついないなw
0968nobodyさん2009/02/14(土) 01:31:17ID:???
Imagerでjpeg読めないんだけど
0969nobodyさん2009/02/14(土) 10:44:28ID:???
まずは、これ動かしてみれ。
これに含まれてないフォーマットは読めない。

use Imager;

my @types = Imager->read_types;
print "@types\n";
0970nobodyさん2009/02/14(土) 11:43:20ID:???
ppm.tcool.orgから持ってきた0.67使ってるんだけど、それやると
sgi
bmp
ico
pnm
tga
raw
ってなるんだよね。前はjpegも使えたと思うんだけど。アップデートしたときかな
0971nobodyさん2009/02/14(土) 19:47:40ID:???
>>970
煽り口調でブログのエントリ書くと、低姿勢で速効対応するよ
0972nobodyさん2009/02/14(土) 19:51:11ID:???
朝鮮人かよw
0973nobodyさん2009/02/14(土) 21:15:21ID:???
>>970
試しにbribesのリポジトリから落としてみたら、これはjpeg対応してるっぽい。
0974nobodyさん2009/02/14(土) 22:41:05ID:oywl4yOv
スレッド掲示板のスレッドを削除するスクリプトを書いていてふと思ったのですが
そのスレッドの内容が書かれているファイルとディレクトリを削除するため
unlinkとrmdirを使う時、flockのようなことをしなくても問題ないのでしょうか。
一応、ファイルに関しては開いてflockでロックをかけた後、unlinkをしてみたのですが
Permission deniedと表示されてしまい削除されませんでした。
仮に必要な場合はflockではなく、ファイルやディレクトリを作成しその間は読み込めないように
するしかないのでしょうか。
0975nobodyさん2009/02/14(土) 23:11:40ID:???
>>974
よく考えるんだ。
ファイルロックは、変更が競合しないために行うものだという点を思い出せ。
0976nobodyさん2009/02/15(日) 00:36:02ID:Bli/G9UX
感覚的に使っている部分があったのでflockについて詳しく調べてきました。
flockはファイルの読み書きに対応するのであってしかもflockは
仮にロックがかかっていてもflockを宣言したファイルでなければ
読み込めるみたいですしunlinkとrmdir意味がなさそうですね。
となると使わなくてもいいかファイルやディレクトリを利用してのロックですね。
調べてもそれらしき内容のものは出てきませんし大丈夫な気もしますがどうなんでしょうか。。
0977nobodyさん2009/02/15(日) 00:50:45ID:???
>>976
結論だけ言うと、何も考えずに削除してかまわないんじゃないかな。
噛み砕いて解説しようと思ったけど、予備知識が足りてない模様なので、更なる精進を期待する。
0978nobodyさん2009/02/15(日) 02:46:56ID:Bli/G9UX
>>977
そうですか。perl以外の他の知識が必要みたいですね。
システムコールあたり?ちなみに'perl unlink'ではなく
'unlink'で調べたらC言語のunlinkの解説が出てきて見てみたのですがopenされてると
削除されないように出来てるみたいですね。削除中にopenされたら?
とも思いましたがファイルの削除が開始された時点でアクセス不可になる。
というように今のところ解釈しています。
あくまで予想なのでこれからももっと励んでいつか理解できるように
なりたいと思います。ありがとうございました。
0979nobodyさん2009/02/15(日) 03:13:07ID:???
というかどうせ消すならアクセスされても問題ないんじゃ
flockって同時にopenした時に
片方がもう片方に上書きされるのを防ぐためのもんでしょ
0980nobodyさん2009/02/15(日) 04:03:44ID:???
ひょっとしてキミはだいぶ自分の事しか考えない人だなw
0981nobodyさん2009/02/15(日) 09:20:41ID:???
>>978
unlinkしとけばOSの側がいいように取り計らってくれるから、
こっちがどんな順番でどう処理するか考える必要ないと思うけど。
0982nobodyさん2009/02/15(日) 09:22:25ID:???
どうせ消すんだから、書き込まれてから消しても
消した後に書き込み失敗しても関係ないじゃん。
0983nobodyさん2009/02/15(日) 13:17:53ID:???
消す順番はインデックス→データの順番な
0984nobodyさん2009/02/15(日) 13:34:19ID:???
Unixなら、ファイルが開いた状態であれば、closeするまで内容が保障され、
close後にunlinkが実行される。

一方Windowsはunlinkに失敗した。
0985nobodyさん2009/02/15(日) 18:24:40ID:???
ファイルロック自体はWindowsの方が優れてるけどな。WindowsのPerlの実装は知らないが。
0986nobodyさん2009/02/15(日) 19:10:45ID:???
Unixの多くの実装は勧告ロックで、Windowsは強制ロックだからね。

>>984は、一方ロシアは……のネタだから、あまり突っ込m
0987nobodyさん2009/02/16(月) 10:10:47ID:???
そもそも書き込まれる可能性のあるファイルを削除するってどうなの
0988nobodyさん2009/02/16(月) 10:27:36ID:???
どうもしないよ
0989nobodyさん2009/02/16(月) 11:46:19ID:???
立てといた。

Perlコーディング初心者質問スレ Part 59
http://pc11.2ch.net/test/read.cgi/php/1234752149/
0990nobodyさん2009/02/16(月) 12:31:40ID:???
ま、RDBMSを使う方が楽だな。
0991nobodyさん2009/02/16(月) 13:06:22ID:???
数万件で抽出したデータからまた別のデータを導かせない限り、
数万程度までだったら txt ベースの方が全然扱いやすい
0992nobodyさん2009/02/16(月) 16:43:42ID:???
>>991
主観乙
0993nobodyさん2009/02/16(月) 16:49:56ID:mVH+JlHn
なんか新スレに書き込むのは気が引ける・・・

$title = "*********<title>ホームページ</title>*******";
という変数から「ホームページ」を抜き取るのになにか良い方法はないでしょうか?

現在<title>と</title>でsplitをして取得していますが、パターンマッチを用いて
上手く出来ないでしょうか?

どなたか宜しくお願い致します。
0994nobodyさん2009/02/16(月) 16:54:38ID:???
>>991
「なるほど」と言って数万個のデータを数万個のファイルに書き落とす初心者が出現
0995nobodyさん2009/02/16(月) 17:11:21ID:???
>>993
my ($res) = $title =~ m!<title>(.*?)</title>!;
0996nobodyさん2009/02/16(月) 18:45:42ID:???
my ($res) = $title =~ m!<title>(.*?)</title>!is;

にした方がいいと思う

理由
(1) 必ずしも title となってない。 TITLE ってやってるところもある
(2) 変数に入ってるデータに改行が入ってれば s はあった方がいい
0997nobodyさん2009/02/16(月) 19:41:13ID:mVH+JlHn
>995
>996
お二方有難う御座います。
パターンマッチ結果を変数に入れられるんですね。勉強になりました。
0998nobodyさん2009/02/16(月) 20:08:20ID:???
my ($res)
↑このカッコの意味が分からないorz

my $res = $title;
$res =~ m!<title>(.*?)</title>!is;

↑動作は同じはずだけど、こうやってました
0999nobodyさん2009/02/16(月) 20:13:34ID:???
カッコは正直意味無いだろ。
後半は全然違うと思うが。
1000nobodyさん2009/02/16(月) 20:18:15ID:???
カッコなしだと、$titleには1がはいっておしまいのような気がする

次スレで教えて欲しい
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。