- 1 名前:nobodyさん mailto:sage [2008/03/03(月) 05:07:32 ID:???]
- このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 Perl使いが優しくコメントを返しますが、 お礼はPerlの布教と初心者の救済をお願いします。
- 125 名前:117 mailto:sage [2008/04/14(月) 17:21:37 ID:???]
- cygwinで動いたんだけどcdのhtmlからの取得はしていなかった
サビフォルダーに置いていたhtmlからの取得は全部おk コマンドプロンプトで確認したんだけど ファイルは作成されていない コマンドプロンプトの操作画面に現れたものを ファイルに保存するのはどうすればいいですか? 取りあえず>>122は答えなくていいよ どうせ野次るだけなのは明白だ 自分でも探してみるけど 私に理解できるように答えれる方おられましたらよろしくお願いします
- 126 名前:nobodyさん mailto:sage [2008/04/14(月) 17:22:29 ID:???]
- >その煽りの文章を考える暇があったら(中級以上のリファレンスを買うんではなく)初心者本でも素直に買って読めよ。
- 127 名前:nobodyさん mailto:sage [2008/04/14(月) 17:23:21 ID:???]
- >>124
それ勘違い 再起わかんないので具体的な質問できないよ その質問には答えてあげればイイヨ どうせ私が見てもわかんないのでヨロシコ
- 128 名前:nobodyさん mailto:sage [2008/04/14(月) 17:25:31 ID:???]
- 再帰を「再起」と書く初心者が同じ日に二箇所に現われるもんかねえ。
- 129 名前:nobodyさん mailto:sage [2008/04/14(月) 17:27:06 ID:???]
- >>126
「超初心者用」と「初心者用」購入したんだけど ささっと変数を解説したらCGIの話ばかりで ファイル操作は最後のほうでちょびっとだけ解説してるんだ なぜかperlの解説本は「CGI」「CGI」の連呼でキモい
- 130 名前:nobodyさん mailto:sage [2008/04/14(月) 17:29:05 ID:???]
- >>128
誤字がどうしたのだ? そんなの関係ないと思う 小心者だねw
- 131 名前:むこうの928 mailto:sage [2008/04/14(月) 18:04:05 ID:???]
- >>124,>>128
激しくゴメン。別人です。 何日か前から、こっちがこんなことになってるから、むこうで聞いてみた。 (まあ実際WebProgではないんだけど) しまった”再帰”か〜。 つっても再起でコケてるわけではなくて、(まただw) どうも =~ s///e の”e”でこけてるようなんだ。 正規表現絡みで、しかもこっちこんな状況だったからあんま書き込みたくなかったんだけど 案の定つっこまれてしまった。 まあいいや、今は時期が悪かったってことで、暫く消えます。
- 132 名前:nobodyさん mailto:sage [2008/04/14(月) 20:11:42 ID:???]
- 一応、お詫びします。迷ったけどこっちに書きます。
貴方が本当に別人なら理解出来るでしょう。 ====================== 当方、確認の術を持たないので(win環境なし)。 s///e の問題にしろ再帰の問題にしろ、再帰を使うほどの ネタでは無さそう。あくまでも適当に書いた例だけど。 # Wide character warning が出るのは御愛嬌。 use utf8 ; my %hash = map{ my $new = $_ ; $new =~ s/(\d)(\d)/$1十$2/ if length $new == 2 ; $new =~ s/1十(\d)/十$1/ ; $new =~ tr/123456789/一二三四五六七八九/ ; $new =~ s/0// ; $_, $new ; } 1 .. 99 ; while(my $line=<DATA>){ $line =~ s/(\d+)条/$hash{$1}条/; print $line ; } __DATA__ 3条 24条 10条
- 133 名前:nobodyさん mailto:sage [2008/04/14(月) 20:48:09 ID:???]
- こっちでいいのかな?
>>131 ActivePerl5.8.8(build816) で試そうとしたんですけど、標準入力からうまく食ってもらえず。 で、__DATA__ と <DATA> にしたり open(IN, '<', 'list.utf8'); binmode(IN, ":utf8"); 以下略にしたりしてみたら 意図どおり(のはず)の出力になりました。perl.exe も落ちず。 # CP932 な環境で binmode(STDIN, ":utf8") って考えたこと自体がないのでよくわからない。 >>115>>124 諸事情により疲れすぎて疑心暗鬼になってるように見えますよ。 諸事情のほうは継続の気配なので、少し休まれては如何かと。
- 134 名前:130 mailto:sage [2008/04/15(火) 02:25:32 ID:???]
- こっちにレスがついてた。みんなサンクス
>>132 イエッサー。わかりますとも。自分でも向こうに書き込んだ後に、ハッシュ使えばs///eも再帰も必要ないかなって思った。 処理速度もこっちのほうが速いし。でも自分で書いたのはこんなの。うーん、いまイチスマートにならないなあ。 my $kanj; for (1..99){ my $kan = $_; $kan = substr($_,0,1) . '十' . substr($_,1,1) if($_ >= 10); $kan =~ tr/123456789/一二三四五六七八九/; $kan =~ tr/0//d; $kan =~ s/一十/十/; $kanj->{"$_"} = $kan; }
- 135 名前:130 mailto:sage [2008/04/15(火) 02:26:02 ID:???]
- >>133
あれ、ちゃんと動きましたか? うちでは昼間とは別のPC(PerlのVerは同じ)でやってみたけど、やっぱり例のWindowsダイアログが出て落ちる。 で、いろいろあがいてみたところ、上では、再帰ではないっぽいこと言ったけど、やっぱり再帰に問題ありかと。 特にif($num>=20)のところで、$1と$2を同じ関数に再帰してるとこで、次の正規表現マッチで$1$2あたりが壊れるんではないかと。 (ちなみに、これまたCentOS4,Perl-5.8.8-5.rpmだと期待通りに動く) 上で再帰ではないと思ったのは、あのスクリプトを、use utf8;とbinmode関係コメントアウトして実行してみると、 (当然tr/123.../のところで文字列がぶっ壊れるけど)、最後まで落ちずに走ることと、 以前に正規表現($1$2や$'$`$&も)使いまくりで、さらに6-7段ぐらいネストした関数書いた時も、期待通りに動いてくれたんで、 ちゃんと覚えてくれてるものかと思ってた。これからは、どうやらこれを改めないといけないようだ。 > # CP932 な環境で binmode(STDIN, ":utf8") って考えたこと自体がないのでよくわからない。 自分は、Win上でもtextは基本的にUTF-8で保存してるもんで、(本番環境がLinuxなのもあるけど)ワンライナーっぽく書くときは、 コードの中でopenやら、encode(decode(...))やら書くのメンドいんで、perl script.pl < infile.txt > puts.txt みたな感じを多用してます。 ちなみに、向こうのコードをopen(IN...)とかでやっても、ウチの環境ではやっぱりperl.exeが落ちるのは変わらない。
- 136 名前:134,135 mailto:sage [2008/04/15(火) 02:27:42 ID:???]
- ごめん、激しくゴメン。
名前欄>>131の誤りです。 やっぱり消えます。
- 137 名前:nobodyさん mailto:sage [2008/04/15(火) 04:16:40 ID:???]
- >>135
大変失礼しました、重ねてお詫びします。 >>133 >諸事情により疲れすぎて疑心暗鬼になってるように見えますよ。 >諸事情のほうは継続の気配なので、少し休まれては如何かと。 ほんとにその様です。穴があったら入りたいw
- 138 名前:nobodyさん mailto:sage [2008/04/15(火) 04:17:12 ID:???]
- 俺も穴があったら入りたい(性的な意味合いで)
- 139 名前:nobodyさん mailto:sage [2008/04/15(火) 15:19:10 ID:???]
- これからジュンク堂とヨドバスカメラとbook1stとアサヒヤと紀伊国屋行ってみる
りゃまbonがいいんだね 先日、立ち読みしたラクダの本かな? アレファイル操作詳しく載ってるの? 取りあえず今日はperlの絵本というのを探してみようかと思う ま行ってみるよ んじゃ
- 140 名前:133 mailto:sage [2008/04/15(火) 17:04:26 ID:???]
- 事故レス。
> 標準入力からうまく食ってもらえず。 test.pl < list.utf8 > converted.utf8 # 0バイトのファイル生成で頭抱える。 test.pl < list.utf8 # 何も吐いてくれない。 perl test.pl < list.utf8 > converted.utf8 # …ちゃんと食ってくれますね。 他人様の疲れを気にする前に、寝ぼけた自分をどうにかしろと。 >>135 要件通りに動くことより「なんで perl.exe が落ちるのはどうして?」が本題ですよね。 ちと時間があったので追試しました。 # 上記寝ぼけから醒めたので STDIN から食う元通りのコード # 食わせたのは for (1..99) { print "ふんにゃか市$_条\n" } で作ったファイル 5.8.8-816 on Win2kSP4 → 正常動作。 5.8.8-819 on WinXPSP2 → 正常動作。 # ビルドを上げる 5.8.8-822 on WinXPSP2 → アッー! # 本当に落ちたので下げた 5.8.8-820 on WinXPSP2 → 正常動作。 build822 だと見事に落ちますねえ。
- 141 名前:nobodyさん mailto:sage [2008/04/15(火) 19:22:38 ID:???]
- みごとな検証、お疲れ様。
質問者様が見てくれるといいが。
- 142 名前:nobodyさん mailto:sage [2008/04/15(火) 23:20:39 ID:???]
- >>140
原因が同じか違うかもさっぱりわからないが、 5.8.8 build822だとStorableを使ったコードで 大量のstorableデータ(50MB強)を読み込ませると読み込みが終わらない、 という現象にあたったことがある。 同一コードで、build817、あるいは5.10.0 build1001, 1002 では問題なかった。 というわけで、個人的にbuild822は信用していない。 参考情報と言うことで。
- 143 名前:nobodyさん mailto:sage [2008/04/16(水) 16:55:29 ID:???]
- *本当の検証*が向こうに出てたので、>>131さんもご覧になるでしょう。
まあ、元々向こうのネタですし。 # きちんと問題の切り分けして再現する最小コード出す辺りが「向こう」なのかも。 自分のは検証でなく、「おらの環境では動いたずら」だけではひどいと思ったので 補足した程度ですから。 >>142 build822 をインスコすると build821 用の release.(html|txt) が入ってて萎えるんですが CHANGES.txt で build821, 822 だけに書かれてる > plus additional selected changes from the Perl 5.9 development branch. これが気になってます。 > Build 821 was only distributed for HP-UX. ここは…笑うところなのかな。 build822 が5.8系の latest ではあるんですが、自分も同じ印象です。 配布CGI+改造のテスト程度は大丈夫なんでしょうけどね。
- 144 名前:135 mailto:sage [2008/04/16(水) 20:08:19 ID:???]
- みなさん本当にありがとうございます。
向こうで見事な回答を頂きました。(Cコードを読み解く力がないので具体的なことはよくわかりませんが・・。) >>140 わざわざ試して頂いてありがとうございます。 自分の記憶では、817->819と820->822でバイナリ互換が崩れる(DBIやEncode、Uni-Jpなんかを再ビルドしないといけない)ので、 古いバージョンに戻してまでやってみようと言う気が起きませんでした。 (ちなみに819->820は再ビルド無しでモジュールが動きました。) >>142,>>143 そうですか、build822はあんまりよろしくないのかな? 向こうの返答では、5.10系でも同様に落ちるらしいので、むしろこのコードで動いているほうがよろしくないってことで 修正されたんではないかと思いますが、実際のところよくわかりません。(動くことによる不具合が思いつかない。) 今度ヒマな時にでも、Linux環境でperl-5.10をソースからコンパイルして同じコード試して見ます。 まあどちらにせよ、再帰の中で、tr///(s///も?)を使うようなコードは書かないようにしないといけないっぽいですね。
- 145 名前:質問 [2008/04/16(水) 23:05:19 ID:oAcDKLtn]
- ブラウザを閉じると、指定したファイルのデータを消すようにしたいのですが
perlで良い方法がありましたら教えてください。
- 146 名前:nobodyさん mailto:sage [2008/04/17(木) 09:24:21 ID:???]
- >>145
サーバにいるPerlさんは、クライアントのブラウザが閉じたかどうかを知らないよ。
- 147 名前:nobodyさん mailto:sage [2008/04/18(金) 01:33:43 ID:???]
- JavaScript併用
- 148 名前:145 [2008/04/18(金) 07:47:12 ID:ThTU7HIn]
- >>146
サーバサイドだからやっぱり無理なんですかね・・ いいモジュールとか有ると期待していたんですが。。。 >>147 JavaScriptのどういったものが教えてください
- 149 名前:nobodyさん mailto:sage [2008/04/18(金) 10:00:46 ID:???]
- 閉じたら消すじゃなくて
開いたら消すにすれば?
- 150 名前:nobodyさん mailto:sage [2008/04/18(金) 14:57:49 ID:???]
- JavaScriptならonUnloadで消去用のスクリプトを実行させれば?
もしくは実行終了のタイミングが予測出来るなら folkなりthreadなりで子プロで消すとかね そもそも消さなきゃならないデータなんて置かなきゃ良いんだよw どうせダウンロードされたくない画像やら動画やらなんだろうけど そんなもんはブラウザのキャッシュからいくらでも回収出来るからなぁ
- 151 名前:nobodyさん mailto:sage [2008/05/01(木) 01:13:00 ID:???]
- foreach で読み込むときに異なる行を複数取得教えてください
foreachの前で下記のようにやってみたらエラーになります $str1 =~ /あいうえお/; $str2 =~ /さしすせそ/;
- 152 名前:nobodyさん mailto:sage [2008/05/01(木) 01:16:22 ID:???]
- 日本語が良くわかんない(><)
- 153 名前:nobodyさん [2008/05/02(金) 11:14:09 ID:Sh68NuTD]
- 2chの日付の後に付くIDはどうやって算出しているのですか?
よろしくお願いします。
- 154 名前:nobodyさん mailto:sage [2008/05/02(金) 23:30:24 ID:???]
- pc11.2ch.net/php/#9のように?とは&使わずに引数使うのどうするの?
- 155 名前:nobodyさん mailto:sage [2008/05/03(土) 00:23:50 ID:???]
- >>154
mod_rewriteとか。 実をゆうと localhost/file.cgi/aaa=bbb とかで、/の後ろを引数として渡したり出来るんだけど、 色々と混乱しそうだから、俺は使わない。
- 156 名前:nobodyさん mailto:sage [2008/05/04(日) 16:40:15 ID:???]
- どうやったら、変数に何も値が入ってないってことを確かめられるの?
- 157 名前:nobodyさん mailto:sage [2008/05/04(日) 18:06:42 ID:???]
- $hensu or print "ナイヨ(><)\n";
- 158 名前:nobodyさん mailto:sage [2008/05/04(日) 18:19:28 ID:???]
- $hensu = 0;
で破綻するので>>157はデタラメ。 defined($hensu) or print "ナイヨ(><)\n"; が正解。
- 159 名前:nobodyさん mailto:sage [2008/05/04(日) 19:26:18 ID:???]
- >>156にとっての「何も値が入ってない」によって答えが変わるでしょ。
my $var = ''; # これが「長さ0の文字列が入ってる」のか「何も入ってない」のか print "どっちが正解かわかんないんです(><)\n" if $var xor defined($var);
- 160 名前:nobodyさん mailto:sage [2008/05/04(日) 22:15:41 ID:???]
- 三値論理
- 161 名前:nobodyさん mailto:sage [2008/05/05(月) 18:10:43 ID:???]
- use Socketと書かなくても、gethostbyname関数が使えるのはなぜ?
ドメインを入力してIPアドレスを出力するだけの、単純なスクリプトを作りたいので
- 162 名前:nobodyさん mailto:sage [2008/05/07(水) 13:21:17 ID:???]
- 記事の中の
a href=" URL " もしくは img src=" URL " のURLが相対パスになっていた時に絶対パスに変換されるようにするには どうしたらいいですか?
- 163 名前:nobodyさん mailto:sage [2008/05/07(水) 19:46:59 ID:???]
- HTMLタグに「絶対パス」を入れても表示出来ないよ
- 164 名前:nobodyさん [2008/05/07(水) 21:26:07 ID:fDlQQ0EM]
- いまapache?でcgiのテストをしてるんですが。
長居のでソースは遠慮するんですが、そのcgiを指定するとPLファイルをブラウザで表示したみたいに自分の打ったテキストがそのまま出てしまうのですが、このとき考えられるミスを教えて下さい。
- 165 名前:nobodyさん mailto:sage [2008/05/07(水) 22:20:31 ID:???]
- >>161
use strict; use warnings; #use Fcntl qw(:flock); use Socket; open(LOG, '>', 'test.tmp') or die $!; flock(LOG, 2); #flock(LOG, LOCK_EX); print LOG scalar gethostbyaddr(pack('C4', 127, 0, 0, 1), 2), "\n"; #print LOG scalar gethostbyaddr(pack('C4', 127, 0, 0, 1), AF_INET), "\n"; close(LOG); use Fcntl qw(:flock) や use Socket しなくても flock() も gethostbyaddr() もつかえる。ふしぎ! >>162 よくわかんないけど $ENV{'SERVER_NAME'} とか $ENV{'SCRIPT_NAME'} とか ttp://search.cpan.org/~gaas/URI-1.36/URI.pm ここの URI->new_abs() とかを眺めるといいんじゃないかと。 >>164 ・自鯖板ネタなのにここに書いてる。 ・よくわかんないまま共用レン鯖でテストしてる。 ・ファイル名が なんたら.cgi だけど .htaccess で .cgi が text/plain になるよう仕込んである。 ・ファイル名が なんたら.pl で実行属性がついてない。 ・実は Perl と無関係な問題。 …1つぐらいは当たってると思います。
- 166 名前:nobodyさん mailto:sage [2008/05/07(水) 22:27:20 ID:???]
- これじゃね?→Content-Type: text/html;
- 167 名前:nobodyさん [2008/05/07(水) 22:44:41 ID:fDlQQ0EM]
- >>165
あ、すいません。自鯖板ネタなんだと思います。 そんな板があると知らなかったので・・・何回か色々とググったら、たぶんapacheの設定ミスみたいです。 見直してみます。 ご迷惑おかけしました。 >>166 そっちは試してみたので。スクリプト的にはたぶん問題ないです。 helloworldレベルの奴でも出なかったし、本丸写しでも無理でしたし。 ありがとうございました。
- 168 名前:nobodyさん mailto:sage [2008/05/08(木) 00:03:38 ID:???]
- $HOGE = ABC
DEF123 を ABC123 に置き換えたい時は $str =~ s/DEF123/$HOGE123/g; では駄目ですよね? どうしたらいいですか?
- 169 名前:nobodyさん mailto:sage [2008/05/08(木) 00:16:04 ID:???]
- $str =~ s/DEF123/${HOGE}123/g;
- 170 名前:nobodyさん mailto:sage [2008/05/08(木) 00:50:06 ID:???]
- >>169
ありがとうございます。うう…
- 171 名前:nobodyさん mailto:sage [2008/05/08(木) 10:10:29 ID:???]
- >>161
組み込み関数だから使える。
- 172 名前:161 mailto:sage [2008/05/08(木) 18:42:19 ID:???]
- >>171
thx
- 173 名前:nobodyさん mailto:sage [2008/05/08(木) 20:29:16 ID:???]
- ABC/DFG/HIJ/../ → ABC/DFG/
こういうのが こういう感じで置き換わるように $str =~ s/\/[^\/]*\/\.\.\//\//g; こうやってみたのですが ABC/DFG/HIJ/../../ → ABC/DFG/../ こういうのは こうなっちゃいます ABC/DFG/HIJ/../../ → ABC/ こうなってくれるにはどうしたらいいですか?
- 174 名前:nobodyさん mailto:sage [2008/05/08(木) 20:46:01 ID:???]
- ../ を消すだけじゃ駄目?
$str =~ s{\.\./}{}g; こんな風に。
- 175 名前:173 mailto:sage [2008/05/08(木) 20:59:09 ID:???]
- >>174
../ が前方を巻き込んで消えるようにしたいのです 一行では無理でしょうか
- 176 名前:nobodyさん mailto:sage [2008/05/08(木) 21:06:50 ID:???]
- ごめんなさい。
完全に勘違いしてました。 こういうこと? $str =~ s{[^/]*/(\.\./)+}{}g;
- 177 名前:173 mailto:sage [2008/05/08(木) 21:22:58 ID:???]
- >>176
すみませんお手数おかけして… それだと ABC/DFG/HIJ/../ の時も ABC/DFG/HIJ/../../ の時も ABC/DFG/ になってしまいます ABC/DFG/HIJ/../../ の時には ABC/ になるようにしたいのです
- 178 名前:nobodyさん mailto:sage [2008/05/08(木) 21:29:39 ID:???]
- 正規表現でどうにかする方向は>>176さんに任せつつ。
>>173 use File::Spec; print File::Spec->canonpath('ABC/DFG/HIJ/../../'); # ABC 末尾のデリミタが消えたりしますが。
- 179 名前:176 mailto:sage [2008/05/08(木) 21:40:41 ID:???]
- 質問の趣旨がようやくわかった。ファイルパスの操作か。
こんなことしてどうするんだろうとか不思議に思ってた。 なんか寝ぼけてるな。 これを正規表現でどうにかしたのをみてみたい。
- 180 名前:173 mailto:sage [2008/05/08(木) 22:04:20 ID:???]
- わ、最初からファイルパスと言うべきでした。すみません。
RSS出力のCGIをいじってて、文章中にあるリンクやimgタグがRSSフィードでは 絶対パスでないと働かないので、相対パスになってた時に絶対パスに置き換わるように したかったのです。 $RSS_BASE_URI = "$ENV{'HTTP_HOST'}$ENV{'SCRIPT_NAME'}"; $RSS_BASE_URI2 = &GetDir($RSS_BASE_URI); 元のCGIにこれがあるので、 $str =~ s/href=\"/href=\"$RSS_BASE_URI2/g; $str =~ s/src=\"/src=\"$RSS_BASE_URI2/g; $str =~ s/http\:\/\/.*?\/http\:\/\//http\:\/\//g; $str =~ s/\/\.\//\//g; $str =~ s/\/[^\/]*\/\.\.\//\//g; こうやってみたんですが…(見にくくてすみません) こういう書き方をするようなものではないのでしょうか? >>178 すみません、記事の中からURLを抜き出して当てはめるにはどうすれば…
- 181 名前:178 mailto:sage [2008/05/08(木) 22:46:06 ID:???]
- my $str = 'ABC/DFG/HIJ/../.././././';
while (index($str, './') + 1) { $str =~ s!/\./!/!g; $str =~ s!/[^/]*/\.\./!/!g; } print $str; ループなしでどうやるんだろう。 >>180 最初から「>>162です」と言って欲しかった気がする165です。 $RSS_BASE_URI2 の正体等々よくわかんないので、下記を見ながらごにょごにょしてください。 use URI; print URI->new_abs('../../images/spacer.gif', 'example.com/cgi-bin/test/'); # example.com/images/spacer.gif
- 182 名前:nobodyさん mailto:sage [2008/05/08(木) 22:46:10 ID:???]
- >>180
横レス。 モジュールがあるか?と静観してたんだが、こっちに移動してきたのかw my $RSS_BASE = '/ABC/DFG/HIJ/' ; # 絶対パス my $path = '../../abc/efg/' ; # 相対パス my $cnt = $path =~ s{\.\./}{}g ; # ../ の数把握と同時に消去。 $RSS_BASE =~ s/([^\/]*?\/){$cnt}$// ; # 絶対パスから../の回数分のディレクトリを削る。 print $RSS_BASE . $path . "\n" ; # プリント。
- 183 名前:nobodyさん mailto:sage [2008/05/08(木) 22:47:32 ID:???]
- ああ、やっぱモジュールがあったのねorz...
おまけにタワゴト書いてるし。
- 184 名前:173 mailto:sage [2008/05/08(木) 23:36:51 ID:???]
- >>181
ごめんなさい。>>162です。 記事の中から該当部分を抜き出してまた戻す方法も分からない絶望的分からなさだったので 教えていただいたものを使うことができず、恥ずかし悲しくなりながら単純な置換だけでなんとか やれないかと別の方向にごにょごにょしちゃってました。 もう少し勉強してそれを使えるようにがんばってみます。ありがとうございました。 >>182 移動してきてました…。 自分が知らないだけでこれもきっと一行ですむのだろうと思ってたら、そうでもないようですね。 勉強してなんとか単純置換以外も使えるようになろうと思います。ありがとうございました。
- 185 名前:nobodyさん mailto:sage [2008/05/09(金) 04:31:31 ID:???]
- モジュール使えで終了な話ではあるけどワンライナーでかけないのが悔しいorz
- 186 名前:nobodyさん mailto:sage [2008/05/09(金) 07:34:10 ID:???]
- せいぜい短くしても
$str="ABC/DFG/HIJ/../../././abc/efg" ; 1 while $str =~ s{([^/]*?/\.\./|\./)}{} ; print $str . "\n" ; 程度だね。
- 187 名前:nobodyさん [2008/05/10(土) 18:46:41 ID:jhS0+1hl]
- テストしても何も表示されないんですが何がおかしいのでしょう?
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n"; print "<html>\n"; print "<head><title>あ</title></head>\n"; print "<body>$kao<br>$body<br>$asi</body>\n"; print "</html>"; タイトルすら出てくれないんです。 たぶん初歩的なミスだと思うのですが・・・
- 188 名前:nobodyさん mailto:sage [2008/05/10(土) 19:17:45 ID:???]
- ヘッダは?
- 189 名前:nobodyさん [2008/05/10(土) 20:49:00 ID:jhS0+1hl]
- print "Content-type: text/html\n\n";
これですか?
- 190 名前:173 mailto:sage [2008/05/10(土) 21:11:01 ID:???]
- >>186
あ、一行でもできたんですね! ありがとうございます、動きました! URLを抽出してモジュールに渡すのに悪戦苦闘してましたが、 このままできないのもくやしいのでそっちもがんばってきます。
- 191 名前:nobodyさん mailto:sage [2008/05/10(土) 23:31:35 ID:???]
- >>189
その行を print "<!DOCTYPE〜 の行の前に書いてる? あとエラーじゃなくて真っ白? ソースも?
- 192 名前:nobodyさん [2008/05/11(日) 12:00:02 ID:/WAyhnOg]
- >>191
はい。この行を書いて、一行改行してhtmlソースです。 ANHTTPDで真っ白でした。 前に$kaoとかを定義づけてるんですけども(ifで)それのミスなら500が出るかな、と思ったので。
- 193 名前:181 mailto:sage [2008/05/11(日) 17:10:05 ID:???]
- >>190
「くやしいのでモジュール使うやりかたでもがんばってみる」方のようなので ごにょごにょするときの参考にしてみてください。 use URI; # URIモジュールさん召喚。 my $RSS_BASE_URI2 = 'example.com/my/rss/generator/'; # 例。 my $str = join('', <DATA>); # __DATA__ 以下の割箸をまとめて $str に袋詰めします。 # >>180に基づいてみました。 $str =~ s/href="([^"]+?)"/'href="'. URI->new_abs($1, $RSS_BASE_URI2) .'"'/eg; $str =~ s/src="([^"]+?)"/'src="'. URI->new_abs($1, $RSS_BASE_URI2) .'"'/eg; print $str, "\n"; # 出力: # <img src="example.com/diary/img/test.jpg"> # <a href="example.com/diary/latest">latest</a> # <a href="example.com/test/script.cgi">Test Script</a> __DATA__ <img src="../../../diary/././img/././test.jpg"> <a href="../../../diary/latest">latest</a> <a href="example.com/test/script.cgi">Test Script</a>
- 194 名前:193 mailto:sage [2008/05/11(日) 17:25:08 ID:???]
- 事故レスれす。
> $str =~ s/href="([^"]+?)"/'href="'. URI->new_abs($1, $RSS_BASE_URI2) .'"'/eg; > $str =~ s/src="([^"]+?)"/'src="'. URI->new_abs($1, $RSS_BASE_URI2) .'"'/eg; $str =~ s/(href="|src=")([^"]+?)"/$1. URI->new_abs($2, $RSS_BASE_URI2) .'"'/eg;
- 195 名前:nobodyさん mailto:sage [2008/05/11(日) 20:48:25 ID:???]
- >>192
ANHTTPDの設定だと思うけどなー。 「ANHTTPD 真っ白」でぐぐったらなんか色々出てきたから やってみたら
- 196 名前:nobodyさん mailto:sage [2008/05/12(月) 04:25:47 ID:???]
- ブラウザを使わずにBookOFなどの商用サイトに接続して本を検索したり注文したりする
Perlで可能でしょうか? 可能でしたら具体的に教えていただけないでしょうか
- 197 名前:nobodyさん mailto:sage [2008/05/13(火) 03:27:45 ID:???]
- そのサイトが検索用にAPIでも提供していれば
コマンドラインからの実行で検索は出来るはず(Amazon等) 注文までは知らね
- 198 名前:nobodyさん mailto:sage [2008/05/13(火) 05:33:31 ID:???]
- >>196,>>197
別にAPIとか対応して無くても、Formで受け付けてくれるなら(JavascriptやFlashでなければ) 気合さえあれば、検索も注文も出来る。
- 199 名前:190 mailto:sage [2008/05/13(火) 07:31:33 ID:???]
- >>193
ありがとうございます、参考に……って回答だった! 自分のとこでも動きました。こんなに簡潔になるなんて感激です。 ~ s/ 以下にも入れられたんですね… 一回やってエラーが出たので(多分何か抜けてた) 別の場所で動かしたそれを元に戻す過程がいるのかと 甚だしい勘違いをしてました。 何一つ自分で解決できなかったけどなぜか大きく成長したような気がしました 本当にありがとうございます。 CGIでやってみたいことはまだまだあるので次はgoogle的なもので 解決できるようになりたいものです。
- 200 名前:nobodyさん mailto:sage [2008/05/14(水) 02:23:53 ID:???]
- >>198
まあ、やって出来ない事は無いとは思うけど 気合いってよりは無駄な作業が多くなるでしょ 検索して返ってくるのはHTMLな訳だからそこから必要な物を切り出して さらにフォームを探して送信する内容を整えて・・・
- 201 名前:nobodyさん mailto:sage [2008/05/14(水) 04:27:20 ID:???]
- >>200
そう、だから気合がいる。昔そんなのを書いてて、 「こんなん苦労して書く必要あんのかよ?しかも1サイトにしか通用しねえし・・」 とか思ったこともあるけど、気合(笑)でカバーした。あの頃は若かった。
- 202 名前:196 mailto:sage [2008/05/14(水) 04:44:38 ID:???]
- みなさん情報ありがとうございます
ブラウザ無しでできるって事ですね ブラウザ無しでデータをやり取りすると速いんじゃないかと思うのですが 実際どうでしょうか? 込み合ってるサイトもスイスイですか?
- 203 名前:nobodyさん mailto:sage [2008/05/14(水) 05:50:58 ID:???]
- >>202
それは、相手のサーバーの処理能力とか、回線状態による。 まあそのページが、Javascriptやら画像やらフレームやらで大変込み入った内容なら ブラウザでレンダリングするよりかは早くなるかも知れん。 (向こうのレスポンスについては、こっちからじゃなんもでけん) けど、HTMLを正規表現等でパースして、ifで場合分けして、Formに内容セットしてとかしてたら、 はっきり言ってブラウザでクリックしたりしてするのの楽さと比べて、そんな恩恵あるとは思えん。 なにより、そうゆうコード書くのにかなり気合を要する(w)。 まあやるのは自由だけど・・・。 DDosアタックでも仕掛けるのなら話は別だが・・。
- 204 名前:nobodyさん mailto:sage [2008/05/14(水) 06:19:24 ID:???]
- スイスイ具合は「画像オフ・JSオフ・CSSオフ」のブラウザと大差ないよ。レンダリングの有無だけ。
「Perlで書けばスイスイ!」だけを期待してるんだったら、やめれと。 でも、HTMLをパースしてCookieも食べて、フォーム仕立てて送信、お返事をパース…の繰り返しを書いて 意地でもPerlで注文してやる、というマゾな考えならそれはそれでありなのかもね。
- 205 名前:nobodyさん mailto:sage [2008/05/16(金) 00:52:53 ID:???]
- 近所の古本屋さんでオライリーPerl リソースキット UNIX版Xと記載されたperlの解説本を発見!
定価15000円らしいのだが2000円の値札が付いている CD付属でそのCDは未開封 パラパラッと立ち読みしたらWindows環境にも通用しそうな気がするんですよ 自分はWindows環境なんだけどこの本は勉強なりそうですか? 付録のCDはWindows環境でも使えそうですか? ご存知の方お願いします
- 206 名前:nobodyさん mailto:sage [2008/05/16(金) 12:23:26 ID:???]
- >>205
それ、解説書じゃなくて、CPANにある モジュールのドキュメントを和訳しただけのものだから。 しかも10年前のものだから。 www.oreilly.co.jp/out/presuni/
- 207 名前:nobodyさん mailto:sage [2008/05/16(金) 16:32:25 ID:???]
- >>206さん
ありがとうです UNIXと記載がありますが2000円捨てるつもりで買ってみようかと思います 他にも古い本でプログラミングperlUNIXとか600円で売っていたんですよ Windowsで動くのか心配だけど一緒に買ってみます
- 208 名前:nobodyさん mailto:sage [2008/05/16(金) 16:37:16 ID:???]
- XPのためにWin98の本買うようなもの
最新のドキュメントを探したほうがいい 古いの見ても混乱するだけ
- 209 名前:nobodyさん mailto:sage [2008/05/16(金) 16:45:50 ID:???]
- >>208さん
そうだなー そう言われればその通りですよね やっぱり見合わせます ありがとうございます
- 210 名前:nobodyさん mailto:sage [2008/05/16(金) 17:18:48 ID:???]
- Perlほど解説本なしでネットでまかなえるプログラミング言語はないだろう
- 211 名前:nobodyさん mailto:sage [2008/05/19(月) 01:43:18 ID:???]
- コマンドプロンプトからユーザエージェントして返ってきた文字列が
英数字以外は文字化けしてます コマンドプロンプト内で読めるように教えてください jcode.plもエラーになります
- 212 名前:nobodyさん mailto:sage [2008/05/19(月) 01:52:01 ID:???]
- >>211
意味がわかりません。 > コマンドプロンプトからユーザエージェントして とはどうゆうことですか?
- 213 名前:nobodyさん mailto:sage [2008/05/19(月) 02:16:27 ID:???]
- わかんないならスルーしろよ
なんで答えるの? 教えたらわかりそうなのか?
- 214 名前:nobodyさん mailto:sage [2008/05/19(月) 02:24:16 ID:???]
- >>213
いやあ、多分LWP-UserAgentのことかなとエスパー。 ほんで取ってきたページのソースがcp932じゃないから コマンドプロンプトで文字化け。 実は俺も昔やったことがある。 だから聞いてみた。
- 215 名前:nobodyさん mailto:sage [2008/05/19(月) 02:26:22 ID:???]
- >>214
ぅぉぉぉー ヽ( ゚д゚)ノヽ(゚д゚ )ノ ぅぉぉぉー わかってんじゃん それそれ cp932をも少し詳しく
- 216 名前:nobodyさん mailto:sage [2008/05/19(月) 02:27:15 ID:???]
- 「CLI で LWP を飛ばしたら、CP932 じゃない文字列が返ってきます」まではわかるから、
もう一段階進んで 「jcode.pl は UTF-8 を知らんぞ」でいいのかな。
- 217 名前:216 mailto:sage [2008/05/19(月) 02:29:01 ID:???]
- つーか、質問者さんがその態度で通すんだったら移動してくださいな。
くだらない質問でもど偉そうに聞いていいスレ pc11.2ch.net/test/read.cgi/php/1158647441/
- 218 名前:nobodyさん mailto:sage [2008/05/19(月) 02:40:29 ID:???]
- >>215
次からは、もちっと質問を詳しく。 ほいで解決方だけど、 perl 実行したいスクリプト.pl > kekka.html とでもして、そのファイルを各種文字コードで開けるエディタ(秀丸、TeraPad等)で開く もし持ってなければ、とりあえずIEで開けばなんの文字コードかはわかる。 or use Encode;(5.8以降標準で入ってる) で文字コードをcp932に変換。 >>216 その可能性もあるかもだけど、多分、もともとのページの文字コードが分かってなかったら使えない。 (と思ったが、自動判別出来るんだっけ?もう長いこと使ってないから忘れちまった。) あと、$response()->as_string() あたりでサーバーからのレスポンスヘッダが読めるから、 それでそのページの文字コードを判別しい。(か、もしくはhtmlの中の<metaを探すか)
- 219 名前:nobodyさん mailto:sage [2008/05/19(月) 02:50:31 ID:???]
- >>218
自動判別は (jcode.pl|Jcode.pm|Encode::Guess) な感じでいちおうあるよ。 # jcode.pl は UTF-8 に対応してないので、その辺はどうにもならない。 どれも「当たるとは限らん」ところが大事ですけど。
- 220 名前:nobodyさん mailto:sage [2008/05/19(月) 02:50:47 ID:???]
- >>217
気分悪いならスルーでいいよ あなた個人を攻撃してるわけでもないのに 態度云々言われたらこっちが気分悪い 取り合えず2chには向いてないと思うよ これからもし私を見かけてもスルーしてね おちょくってるわけでもないのに変な奴だ >>218 詳しくありがとう
- 221 名前:nobodyさん mailto:sage [2008/05/19(月) 03:23:45 ID:???]
- 例の人が久々に来てたのか。エスパーたち、乙。
- 222 名前:nobodyさん mailto:sage [2008/05/19(月) 10:53:12 ID:???]
- またおまえかwww
- 223 名前:nobodyさん mailto:sage [2008/05/19(月) 15:45:54 ID:???]
- このバカ定期的に沸いてくるな
しかもあちこちに増殖している
- 224 名前:nobodyさん mailto:sage [2008/05/19(月) 16:40:56 ID:???]
- ふーん
人を馬鹿扱いできるほどお前稼いでるの? 税金なんぼ払ってるかいってみ
- 225 名前:nobodyさん mailto:sage [2008/05/19(月) 16:59:25 ID:???]
- 失せろ
|

|