- 1 名前:nobodyさん mailto:sage [2008/03/03(月) 05:07:32 ID:???]
- このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 Perl使いが優しくコメントを返しますが、 お礼はPerlの布教と初心者の救済をお願いします。
- 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:???]
- 失せろ
- 226 名前:nobodyさん mailto:sage [2008/05/19(月) 17:15:21 ID:???]
- キモイ
- 227 名前:nobodyさん mailto:sage [2008/05/19(月) 18:46:02 ID:???]
- 稼いでる = 馬鹿でない
上の理論が成り立つと思ってるマヌケさ
- 228 名前:nobodyさん mailto:sage [2008/05/19(月) 18:49:18 ID:???]
- なんか自分を凄く見せたがる為に銭金の話をしたがる馬鹿いるよな
森伊蔵云々、ディナー云々 中学生のホラ自慢みたいw
- 229 名前:nobodyさん mailto:sage [2008/05/19(月) 19:09:24 ID:???]
- もう構うなってw
- 230 名前:nobodyさん mailto:sage [2008/05/19(月) 21:49:23 ID:???]
- みんなお疲れ様
わかる人お願いします ソースコードutf-8で保存してから実行してみた アクティブパール5.88 WindowsXp ここからどうすれば日本語になるの? use LWP::UserAgent; use utf8; use encoding 'cp932'; $ua = LWP::UserAgent->new(); $req = HTTP::Request->new("GET", "www.yahoo.co.jp/"); $res = $ua->request($req); print $res->content();
- 231 名前:nobodyさん mailto:sage [2008/05/20(火) 04:17:01 ID:???]
-
use LWP; use Encode; print encode('cp932',decode('utf8',LWP::UserAgent->new()->get('www.yahoo.co.jp')->content()));
- 232 名前:nobodyさん mailto:sage [2008/05/20(火) 04:28:46 ID:???]
- >>231
私の環境ではエラーになっちゃったけど 物凄く参考になった ありがとう
- 233 名前:nobodyさん mailto:sage [2008/05/20(火) 04:36:24 ID:???]
- >>231
できました! スペースの文字コードを半角スペースに変えたらエラーにならないで実行できました 見事に日本語になってます ありがとうございました!
- 234 名前:nobodyさん mailto:sage [2008/05/20(火) 15:30:39 ID:???]
- >>231をhtmlファイルで保存したいんだけどできない
すいませんまた教えてください open(FH, '>>', "yahoolog001.html") or die "Cannot open content()!"; flock(FH, 2); print FH qq|content()\n|;
- 235 名前:nobodyさん mailto:sage [2008/05/20(火) 16:51:57 ID:???]
- >>234
231をyahoo_get.plとでも名前付けて保存して、 perl yahoo_get.pl > yahoo001.html
- 236 名前:nobodyさん mailto:sage [2008/05/20(火) 17:29:08 ID:???]
- >>235何回もすいません
どうすればいいのか? 下記のような状況です open(FH, '>>', "yahoolog001.html") or die "Cannot open yahoo001.html!"; flock(FH, 2); perl yahoo_get.pl > yahoo001.html; ----------------- Can't locate object method "perl" via package "yahoo_get" (perhaps you forgot to load "yahoo_get"?) at yahoo-tes001.pl line 6.
- 237 名前:nobodyさん mailto:sage [2008/05/20(火) 18:28:08 ID:???]
- >>235
スクリプト内に入れてやれよww print FH encode('cp932',decode('utf8',LWP::UserAgent->new()->get('www.yahoo.co.jp')->content()));
- 238 名前:nobodyさん mailto:sage [2008/05/20(火) 18:38:22 ID:???]
- >>236
違う違う、235のは、コマンドラインから実行するんであって、perlスクリプトの中に書くんではない。 >>234とか見てると、ファイルのオープンとかはあってるけど、 オブジェクトとか、クラスメソッドとかのことを良く分かってないようなので、 とりあえず一行で書けるのにしてみた。 それから、君は>>211や>>230と同じ人(?、かどうかは定かではないが) コマンドプロンプトから実行してるなら、リダイレクトや標準出力、標準入力等についてもある程度は理解がないと。 (Perlではないんで、入門書とかにはあんまり書いてないか。でも基本ってか常識レベルなんで、 わかってないとこれからしんどいよ。逆にわかってくると、いちいちスクリプトの中でやらなくていいことが増えるんで 書くのが楽になるし、理解も深まる。)
- 239 名前:nobodyさん mailto:sage [2008/05/20(火) 18:42:43 ID:???]
- wktk
- 240 名前:nobodyさん mailto:sage [2008/05/20(火) 21:15:41 ID:???]
- >>237さん、>>238さん、御二方ともお忙しい中ありがとうございます
FH付けると何故かまた文字化けになってしまい苦戦していました よくわかりませんがcp932を止めたら文字化けが亡くなりました アドバイスのお陰で2つの方法で保存させることが出来ました しかも昨日までは取得した最後の1024バイトしか表示されなかったのですが ページ全部を取得できていますありがとうございました ↓スクリプトだけで保存でたソース --------------- use LWP; use Encode; open(FH, '>>', "yahoolog001.html") or die "Cannot open yahoo_get.pl!"; flock(FH, 2); print FH LWP::UserAgent->new()->get('www.yahoo.co.jp')->content(); ↓コマンドラインから保存できたソース -------------- use LWP; use Encode; print LWP::UserAgent->new()->get('www.yahoo.co.jp')->content(); ここからログインのテストしたいので またお願いするかもしれませんが その時はよろしくお願い致します >>238さん 勉強方法詳しくありがとうございました 標準入出力の解説書なかなか見当たらないです 手持ちの解説書で標準入出力を解説しているのは 「perlデータマンジング」という本だけです 大変わかりやすく良書なのですが紙面の関係上さわり程度なのが残念です 何かお勧めの解説書があれば教えて頂ければ嬉しいです ありがとうございました
- 241 名前:nobodyさん mailto:sage [2008/05/22(木) 14:07:57 ID:???]
- お世話になります
httpsでログイン可能な簡易ブラウザサンプルどこかないでしょうか? 自分が調べたところ2001年にある雑誌が付録で付けていたようなのですが 絶版になり各方面探しても見当たりませんでした やりたいことはhttps接続での送受信です お心当たりのある方よろしくお願い致します
- 242 名前:nobodyさん mailto:sage [2008/05/22(木) 14:12:19 ID:???]
- LPW
- 243 名前:nobodyさん mailto:sage [2008/05/22(木) 14:12:53 ID:???]
- 間違えた笑
LWP
- 244 名前:nobodyさん [2008/05/23(金) 20:25:12 ID:VktSXUAF]
- sで一気にいくつかのものを変換する方法ありますか?
たとえるならあいうえおという文のあとおをかとこにおきかえたいんです。
- 245 名前:nobodyさん mailto:sage [2008/05/24(土) 02:20:54 ID:???]
- trじゃダメなの?
- 246 名前:nobodyさん mailto:sage [2008/05/26(月) 19:32:51 ID:???]
- どもお世話になります
あれから色々調べているんですけど ログインや検索やセレクトメニューの選択やボタンクリックなど 具体的なサンプルってないですね もしかしてperlで出来ないですか? 結局HACKER本買い捲ったんだけど みんなHTMLの取得までなんですよ そこからセレクトメニューを選んだりOKボタンをクリックするとか できないんだろうか?
- 247 名前:nobodyさん mailto:sage [2008/05/26(月) 19:36:22 ID:???]
- お前は何を言っているんだ
- 248 名前:nobodyさん mailto:sage [2008/05/26(月) 20:03:33 ID:???]
- なんで?
perlでなんでも出来るって言ってたじゃないですか?
- 249 名前:nobodyさん mailto:sage [2008/05/26(月) 20:18:52 ID:???]
- ネタですか?
- 250 名前:nobodyさん mailto:sage [2008/05/26(月) 20:35:06 ID:???]
- >>248
もしかして>>196からの流れか? ひょっとして画面が表示されて検索ワードが勝手に入力されてセレクトメニューが勝手に選択されてボタンが勝手に押されるとか そういうのイメージしてる?
- 251 名前:nobodyさん mailto:sage [2008/05/26(月) 20:47:35 ID:???]
- >>250
それそれ それです! perlで出来るんですよね? 今のところそのようなサンプル見当たらないんですよ 自動ソフトのスクリプトとかならOKボタンのクリックなどは 初歩の初歩インストール後5分後には覚えれるくらい簡単なんですけど perlの場合参考になるような記述すら見当たらないんですよ 超凄いらしい解説本やオライリーのHACKシリーズやWEBシリーズを購入したんですけど 全然すごくない OKボタンの1回すら出てこない なんでもできないのですか?
- 252 名前:nobodyさん mailto:sage [2008/05/26(月) 20:54:44 ID:???]
- それをやろうと思ったのはお前が最初で最後だと思うよ
- 253 名前:nobodyさん mailto:sage [2008/05/26(月) 21:12:52 ID:???]
- >>252
なんでですか? perlでは出来ないってことなの?
- 254 名前:nobodyさん mailto:sage [2008/05/26(月) 21:16:41 ID:???]
- ちなみに自分はある自動ソフトで検索とか保存とか
WEB上での操作でやりたいことは大体教えてもらえましたよ そのソフトを教えてくれる方たちはみんな普通にご存知でした ただ遅いんですよorz 0.5秒で完結させたいんです
- 255 名前:nobodyさん mailto:sage [2008/05/27(火) 02:30:31 ID:???]
- >>252
自分は>>198や>>201なんだけど、多分初めてじゃないと思うぞ(w) >>253,254 君のやりたいことってのが、GUIのツールみたく目に見える感じで動いて行くってのなら多分ムリ。 (Tkとか使ったら無理やりにでもできるかも知れん。でも自分はGUI系はからっきしなんで、よくわからん) そうでなくて、コマンドラインから、ブラウザで操作したことと同じ結果を得るってことなら可能。 どんな本や、どんなページ参考にしたかわからないけど、 ちょっと上の方に出てるLWPなんかの解説や、CPANのmanualなんかをじっくり読めば(リンクを少々辿らないダメだけど)、 検索フォームにワード仕込んだり、”OK”ボタンを押すってことにもたどりつきそうだけど・・・。
- 256 名前:255 mailto:sage [2008/05/27(火) 02:31:04 ID:???]
- でもまあ、サンプルでも書いとく。
use strict; use LWP; use Encode; use HTML::Form; my $pwd = `cd` . '\\'; my $cmd = 'C:\Program Files\Internet Explorer\iexplore.exe'; my $url = 'google.co.jp/'; my $lwp = LWP::UserAgent->new('agent'=>'mozilla3.9'); my $word; my $out1 = '1.html'; my $out2 = '2.html'; $word = shift() or $word = 'Perl'; $word =~ tr/\r\n//d; my $html = $lwp->get($url)->content(); open(O1,">$out1"); print O1 $html; close(O1); system qq("$cmd" "$pwd$out1"); my $form = HTML::Form->parse($html,$url); $form->value('q' => encode('utf8',decode('cp932',$word))); $form->value('ie'=> 'UTF-8'); my $response = $lwp->request($form->click); my $out2 = '2.html'; open (O2,">$out2"); print O2 $response->content(); close(O2); system qq("$cmd" "$pwd$out2"); これを、例えばtest_search.plとでも保存して、コマンドラインから、 perl test_search.pl "検索したいキーワード" で実行すると、最初googleのTopが表示されて、それを閉じれば、そのワード(なければ”Perl”)での 検索結果がIEで表示される。(無理やり、画面遷移っぽくなるように作った。) モジュールや関数の詳細は、自分で調べてくれ。
- 257 名前:nobodyさん mailto:sage [2008/05/27(火) 03:14:05 ID:???]
- また湧いたのか・・・
- 258 名前:nobodyさん mailto:sage [2008/05/27(火) 03:29:45 ID:???]
- >>255さん
ありがとうございます まさにそれなんです GUIを使わないで送受信してみたいんです お疲れのところわざわざサンプルまで作って頂き本当にありがとうございます! 頂いたサンプルを参考にログインとかもチャレンジしてみます ありがとうございました
- 259 名前:nobodyさん mailto:sage [2008/05/27(火) 14:08:14 ID:???]
- ブラウザのインターフェースに強引に割り込ませるのかと思ったわ
httpについて勉強するといいよ
- 260 名前:nobodyさん [2008/05/28(水) 00:14:16 ID:T0EpbUiq]
- ググったら趣旨が違うのしかでないんですが、
ifで、たとえば$Aに\という文字列が含まれる場合、 \が含まれています。とするにはどうしたらいいんでしょうか? if($A =~ \\) {print "\\が含まれています"} でいけますか?
- 261 名前:nobodyさん mailto:sage [2008/05/28(水) 02:23:14 ID:???]
- if($A =~ /\\/)
- 262 名前:nobodyさん mailto:sag [2008/05/31(土) 01:19:07 ID:???]
- $in{'ext'} = extfind($in{'orgname'}); if(!$in{'ext'} && $in{'upfile'}){ &error(202); }
この処理ってどういう意味なのでしょうか?
- 263 名前:nobodyさん mailto:sage [2008/05/31(土) 02:02:14 ID:???]
- ;
- 264 名前:nobodyさん mailto:sage [2008/05/31(土) 15:52:59 ID:???]
- >>262
>$in{'ext'} = extfind($in{'orgname'}); サブルーチン(?) extfindの一番目の引数にハッシュ$in{'orgname'}の値をセットして 呼び出し、戻り値をハッシュ$in{'ext'}に代入。 >if(!$in{'ext'} && $in{'upfile'}){ &error(202); } 次にハッシュ$in{'ext'}の中の人が留守で、 尚且つハッシュ$in{'upfile'}の中の人が居る場合 恐らくエラーメッセージを表示するであろう サブルーチンerrorの一番目の引数に"202"をセットして呼び出す。 ちなみに2行を一行にまとめると↓みたいになる &error(202) if(!&extfind($in{'orgname'}) && $in{'upfile'});
- 265 名前:264 mailto:sage [2008/05/31(土) 15:54:58 ID:???]
- 戻り値をセットせなあかんから1行にまとめたら駄目だな・・orz
- 266 名前:264 mailto:sageΛ||Λ [2008/05/31(土) 16:03:00 ID:???]
- &error(202) if(!($in{'ext'} = &extfind($in{'orgname'})) && $in{'upfile'});
オリジナルと大して変わらんけどこうやればいけるか スレ汚しスマソ・・
- 267 名前:nobodyさん mailto:sage [2008/05/31(土) 18:48:39 ID:???]
- より、この処理ってどういう意味なのでしょうか?
という質問が出易くなりますな。
- 268 名前:nobodyさん mailto:sage [2008/05/31(土) 20:14:45 ID:???]
- >>264
やっぱりperl難しいな・・・ sugachan.dip.jp/obsolete/snup/ 拡張子合わずってログに記録したときは ファイルをアップしないように改造しようかと 思ってるのだがなかなかできなくて。。。 $in{'ext'} = extfind($in{'orgname'}); if(!$in{'ext'} && $in{'upfile'}){ &error(202); } を $in{'ext'} = extfind($in{'orgname'}); if(!$in{'ext'}){ &error(202); } に、しても普通にアップロードできてしまうし。。。どこがおかしい?
- 269 名前:nobodyさん mailto:sage [2008/05/31(土) 20:40:29 ID:???]
- >>268
そこのアップローダの改造の質問 って前にもどこぞで見たなあ。 で「改造スレに行け」と言われてたハズだが? ソースが好みじゃないのでやる気にならん。…改造スレ行けば?
- 270 名前:nobodyさん mailto:sage [2008/06/04(水) 08:35:22 ID:???]
- perlで書かれたチャット掲示板みたいなCGIプログラムがあります
テキストエリアに文字を入力して、投稿ボタンを押すとregist.cgiに渡されて書き込まれる仕組みです このregist.cgiはmessageとcountという2つの引数をとるみたいなのですが、 ブラウザからURL:/aaa/bbb/regist.cgi?message=test&count=1 とやっても書き込まれませんでした ちなみにFirefoxのTemperDataで確認したリクエストとレスポンス上ではベーシック認証は使われていませんでした 最終的にはperlで自動的に書き込んでくれるプログラムを書きたいのですが、まずはperlでこのregist.cgiに投稿するにはどうすればいいか教えてください
- 271 名前:nobodyさん mailto:sage [2008/06/04(水) 10:11:46 ID:???]
- postしてみろ
- 272 名前:nobodyさん mailto:sage [2008/06/04(水) 14:06:46 ID:???]
- GETで投稿出来ちゃうと、2chにリンク貼られまくったときにw
- 273 名前:nobodyさん mailto:sage [2008/06/06(金) 23:21:44 ID:???]
- sub getDirSize($)の($)ってどういう意味?
- 274 名前:nobodyさん mailto:sage [2008/06/07(土) 02:53:47 ID:???]
- >>273
プロトタイプ。 $は引数としてスカラーしかとらないってこと。
- 275 名前:273 mailto:sage [2008/06/07(土) 08:37:38 ID:???]
- >>274
thx
- 276 名前:nobodyさん [2008/06/13(金) 17:42:23 ID:GNaVOr+f]
- UTF-8の16進コードを文字にしたいんですが、
pack('C*','0xe4','0xba','0xba')とやっても化けてしまいます。 どういう式を書けばいいのですか?
- 277 名前:nobodyさん mailto:sage [2008/06/13(金) 18:06:20 ID:???]
- pack('C*',0xe4,0xba,0xba) だとどうなる?
- 278 名前:nobodyさん mailto:sage [2008/06/13(金) 18:32:03 ID:???]
- >>277
ありがとうございます。できました。 裸のままでよかったのですね。 pack('H*','e4baba'); というのもあったみたいです。 今は10進→16進→文字なんですが、 10進から直接変換できますか?
- 279 名前:nobodyさん mailto:sage [2008/06/13(金) 18:37:43 ID:???]
- 0xがついてなきゃ10進だよ。
pack('C*',228,186,186) とか 10進の数字しかないならpack('C*','228','186','186') でも通るけどな。
- 280 名前:nobodyさん mailto:sage [2008/06/13(金) 19:26:54 ID:???]
- ありがとうございます。
文字列との違いが判りました。 UTF-8のコード範囲を調べると [\x00-\x7f] [\xC0-\xDF][\x80-\xBF] [\xE0-\xEF][\x80-\xBF][\x80-\xBF] [\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF] とあります。 これには他の言語も含まれているとおもいます。 先ほど教えていただいた変換で一覧を作ろうと思うのですが、中国語なども混ざってしまいます。 日本語のみの範囲はどのようなものなのでしょうか。
- 281 名前:nobodyさん mailto:sage [2008/06/13(金) 19:41:37 ID:???]
- ttp://ja.wikipedia.org/wiki/Unicode
- 282 名前:nobodyさん mailto:sage [2008/06/13(金) 20:36:31 ID:???]
- そういえば、日本語じゃなくても、
罫線とか利用している文字もありますね。 なかなか難しい。
- 283 名前:nobodyさん mailto:sage [2008/06/15(日) 14:13:18 ID:???]
- postやgetじゃなくて、普通にページにアクセスしたときの条件分岐が作りたいのですが、
そんなことはできませんか?
- 284 名前:nobodyさん mailto:sage [2008/06/15(日) 14:29:37 ID:???]
- Use of uninitialized value in concatenation (.) or string at main.cgi line 93.
このエラーの意味が分からないのですが、教えて頂けませんか?
- 285 名前:nobodyさん mailto:sage [2008/06/15(日) 20:40:23 ID:???]
- >>283
もう少し詳しく >>284 main.cgiというファイルの93行目で、連結の方法がおかしい。
- 286 名前:nobodyさん mailto:sage [2008/06/15(日) 22:45:56 ID:???]
- >>284
>>285 =~ s/連結の方法がおかしい/未定義値を文字列として評価している/; 例えば $foo が undef の状態で "foo$foo" とか 'foo' . $foo とか。
- 287 名前:nobodyさん mailto:sage [2008/06/16(月) 09:05:17 ID:???]
- おはようございます。
あるサブルーチンでファイルを扱おうとしています。 evalの中でopenしたファイルハンドルをエラー処理(if $@)で閉じるにはどうすればよいのでしょうか。 環境はperl5.8 use strictです。
- 288 名前:nobodyさん mailto:sage [2008/06/16(月) 10:45:47 ID:???]
- pc11.2ch.net/test/read.cgi/tech/1208674881/514
より #!C:/perl/bin/perl open(IN,"example.log"); while(<IN>){ $i++; if($i == 3){ $line .= "\t\t$_"; } else{ $line .= "$_"; } } close(IN); open(OUT,">example.log"); print OUT $line; close(OUT); print"Content-type:text/html\n\n"; print "変更完了";
- 289 名前:nobodyさん mailto:sage [2008/06/16(月) 10:49:36 ID:???]
- pc11.2ch.net/test/read.cgi/tech/1208674881/511
より #!C:/perl/bin/perl open(IN,"example.log"); while(<IN>){ unless($_ =~ /hoge/){ $line .= "$_"; } else{ $line .= "\n"; } } close(IN); open(OUT,">example.log"); print OUT $line; close(OUT); print"Content-type:text/html\n\n"; print "消去完了";
- 290 名前:nobodyさん mailto:sage [2008/06/16(月) 13:00:09 ID:???]
- >>288-289
せっかくお答えいただいたのにすみません。 私が知りたいのはスコープを跨ぐ場合の話です。 例えば、evalの中で宣言した変数をevalの外で使おうとすると、perlに叱られます。 ファイルハンドルの場合は叱られないのですが、これが作法に則った方法なのかわかりません。
- 291 名前:nobodyさん mailto:sage [2008/06/16(月) 14:31:35 ID:??? BE:177559834-2BP(1)]
- 案1)
my $fh = IO::File 〜とかopen my $fh〜等を使って いちいち閉じなくていいようにする。 案2) use IO::File;して my $fh = *FH{IO}; $fh->close() if defined($fh) && $fh->opened();
- 292 名前:nobodyさん mailto:sage [2008/06/16(月) 16:00:58 ID:???]
- >>290
失礼。他のスレッドへの返答でした。 pc11.2ch.net/test/read.cgi/tech/1208674881/519 への回答 # 変数が半角スペースで始まっていれば、半角スペースを先頭一個だけ消去 if($example =~ /^ /){ $example =~ s/ //; } # 変数が全角スペースで始まっていれば、全角スペースを先頭から一個だけ消去 elsif($example =~ /^ /){ $example =~ s/ //; } 拙いですがどうですか?
- 293 名前:nobodyさん mailto:sage [2008/06/16(月) 16:05:48 ID:???]
- >>292
修正です。 # 先頭の全角スペース、半角スペースの連続を削除 $example =~ s/^([\ \ ]+)//;
- 294 名前:nobodyさん mailto:sage [2008/06/16(月) 17:36:08 ID:???]
- 流れがよく分からんけど、
もうひとつファイルを用意して、 書き出して言ったらダメなの? >>293 スクリプトとファイルの文字コードが同じならいいけど。
- 295 名前:nobodyさん mailto:sage [2008/06/16(月) 21:58:28 ID:???]
- >>291
ありがとうございます。 お答えいただいた案1がしっくりきたので、この方式で行きます。 またよろしくお願いします。
- 296 名前:nobodyさん mailto:sage [2008/06/17(火) 10:38:26 ID:???]
- >>294
すいません、超未熟でした。
- 297 名前:nobodyさん [2008/06/18(水) 00:25:23 ID:Mmy0x8n6]
- perlで、
print "あ"; で一秒待ってから print "い"; を実行する方法ってありますか? localtimeで受け取って1秒過ぎるまでwhileで空白を書き続けるってのも考えたんですが・・・ 負荷がかかりそうなんで。
- 298 名前:nobodyさん mailto:sage [2008/06/18(水) 01:19:02 ID:???]
- sleep 1;
- 299 名前:nobodyさん mailto:sage [2008/06/19(木) 06:37:25 ID:???]
- select undef,undef,undef,1;
- 300 名前:nobodyさん mailto:sage [2008/06/19(木) 10:35:29 ID:???]
- $| = 1;
- 301 名前:うっとりハムちゃん [2008/06/20(金) 15:05:12 ID:nHevfWAE]
- すいません、教えてください。
掲示板に書き込まれた内容に URLが含まれていた場合、 自動的にリンクになるようにしたいのですが、 簡単に追加する方法等がありますか? よろしくお願いします。
- 302 名前:nobodyさん mailto:sage [2008/06/20(金) 15:20:25 ID:???]
- URLかチェックして一致したらAタグ追加する。
正規表現 perl URL とかでググれば例が出てくると思う
- 303 名前:nobodyさん mailto:sage [2008/06/20(金) 22:01:17 ID:???]
- >>301
$_ =~ s/([^=^\"]|^)(http\:\/\/[\w\.\,\~\-\/\?\&\+\=\:\@\%\;\#\%\*]+)/$1<a href=\"$2\">$2<\/a>/g;
- 304 名前:nobodyさん mailto:sage [2008/06/20(金) 22:29:00 ID:???]
- …メタ文字じゃない文字をエスケープして意味あんの?
文字クラス中のエスケープは更に酷い。
- 305 名前:うっとりハムちゃん [2008/06/21(土) 03:14:25 ID:k6DOaEg8]
- 皆さんレスありがとうございます。
>303 さんの記述を一行足すだけではダメですよね? 例えば $comment 内に書き込まれた中から抜粋する際は それを指定する必要などはありますか?
- 306 名前:nobodyさん mailto:sage [2008/06/21(土) 07:47:06 ID:???]
- minibbsあたりのソースで見ましたね>余計なエスケープ
- 307 名前:nobodyさん mailto:sage [2008/06/21(土) 17:19:06 ID:???]
- >>305
print &autolink($comment); sub autolink { my $text = $_[0]; $text =~ s{(s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)}{<a href="$1">$1</a>}g; return $text; } 参考: Perlメモ www.din.or.jp/~ohzaki/perl.htm#httpURL
- 308 名前:うっとりハムちゃん mailto:sage [2008/06/21(土) 19:10:28 ID:???]
- できました!!!
とても親切で、どうもありがとうございました!! 助かりました! m(_ _)m
- 309 名前:297 [2008/06/21(土) 21:40:03 ID:etCJxH2B]
- 遅くなりました。
ありがとうございました。
- 310 名前:nobodyさん mailto:sage [2008/06/23(月) 09:49:20 ID:???]
- 遅くなったのは、教わったとおりにsleepしてから書き込んだから
- 311 名前:nobodyさん mailto:sage [2008/06/23(月) 20:42:58 ID:???]
- だれかボスケテ。
---post_data.cgi--- use CGI::Lite #read(STDIN,$buff,$ENV{'CONTENT_LENGTH'}); $param = CGI::Lite->new()->parse_form_data('POST'); print "Content-Type: text/plain\n\n"; print "$buff\n"; for (sort(keys(%$param))){ print "$_ = " . $param->{"$_"} . "\n"; } つう、なんの変哲もないファイルを書いて、これに、 ---test.js--- function reQuested_files( data,method,fName,async,callback){ var r_obj = crHttpReq(); r_obj.onreadystatechange = function(){ if(r_obj.readyState == 4){ callback(r_obj); } } r_obj.open( 'POST','post_data.cgi',async ); r_obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); r_obj.send( 'a=abcdeFG&b=123.4567&z=zzz' ); } から、javascriptのXMLHttpRequest(所謂ajaxってやつ)でのPOST送信のテストをしたんだけども・・・、
- 312 名前:311 mailto:sage [2008/06/23(月) 20:43:29 ID:???]
- これの戻り値を、
function callback_function(rs_obj){ var res = rs_obj.responseText; alert( decodeURI(res) ); } で、alert表示させた場合の結果がおかしい。 具体的にゆうと、これでIEからの送信だと、alertに a = abcdeFG b = 123.4567 z = zzz と、正確に(期待したとおりの)結果が返って来るんだが、最近出たばかりのFirefox3でやると、 結果alertになにも表示されない。 これjavascriptのせいかなと思って色々調べてみたんだが、まだはっきりとわからない。 けど試しに、上のレスのスクリプトで、コメントアウトしてる read() 部分を有効化させてやると、 どちらも同じ結果になる。(a=abcdeFG&b=123.4567&z=zzz) つまりこれは、STDIN(POSTデータの実体)は入ってるのに、CGI::Lite->parse_form_data('POST') で、なぜか狐3の時だけ、正常にパースされてない様なんだけど、どうなのかな? っと思って聞いてみた次第です。 (Web鯖のエラーログにも、値をParse出来ないみたいなerrorが出てました。) これから、Javascript関係のスレにも行ってみようかと思うんですが、 とりあえず上記のPerlコードに、問題がないか確かめたかったんです。(問題ないですよね?) ちなみに、htmlのフォーム上から、action="post_data.cgi" method="POST" で送った時は、IE,FFとも問題ありません。
|

|