1 名前:nobodyさん mailto:sage [2011/09/09(金) 18:11:49.71 ID:???] Perlのコーディングで困ってる人のスレです。 【投稿する際の注意】 質問するときは内容をよく吟味してから投稿してください。 「コマンドの意味がわかんない」とかはマニュアル見ましょう。 回答者さんは何でも屋じゃありません。 1: 自分はこういう事がしたい。 2: それでこんな風にやってみたが・・・ 3: こんなエラーが出て上手く行かなかった。 最低でも1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。 お勧めサイトは >>2 以降 前スレ hibari.2ch.net/test/read.cgi/php/1295170172/
359 名前: ◆gHpPvpjxUOSB mailto:sage [2011/12/09(金) 00:04:54.14 ID:???] 格安で俺が引き受けちゃるけんね
360 名前:nobodyさん mailto:sage [2011/12/09(金) 10:54:15.39 ID:???] >>355 そりゃコーディング違いだ。 私もコーディングは外注した方が幸せになれると思う。そんな付け焼き刃じゃどうにもならんでしょ。
361 名前:Web初級 [2011/12/10(土) 08:46:00.83 ID:Suxg5Gi2] 買って来ました「ドリームウエバーCS5.5スーパーリファレンス」と 「3週間でマスターWebデザインの教室」の2冊、これ見て仕上げる しかありません。やっと再就職して、よこされたのがこの仕事。 試用期間中だし、だれもウエブの事は知りません。 やるしかありません。
362 名前:nobodyさん mailto:sage [2011/12/10(土) 08:57:02.65 ID:???] >>361 それと、Perlになんの関係が?
363 名前:nobodyさん mailto:sage [2011/12/10(土) 09:12:56.68 ID:???] >>362 何がわからないのか、わかっていないやつだな。
364 名前:nobodyさん mailto:sage [2011/12/10(土) 09:49:06.29 ID:???] r;ァ'N;:::::::::::::,ィ/ >::::::::::ヽ . 〃 ヽル1'´ ∠:::::::::::::::::i i′ ___, - ,. = -一  ̄l:::::::::::::::l . ! , -==、´r' l::::::/,ニ.ヽ l _,, -‐''二ゝ l::::l f゙ヽ |、 ここはお前の日記帳じゃねえんだ レー-- 、ヽヾニ-ァ,ニ;=、_ !:::l ) } ト ヾ¨'7"ry、` ー゙='ニ,,,` }::ヽ(ノ チラシの裏にでも書いてろ :ーゝヽ、 !´ " ̄ 'l,;;;;,,,.、 ,i:::::::ミ ::::::::::::::::ヽ.-‐ ト、 r'_{ __)`ニゝ、 ,,iリ::::::::ミ ::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ , な! :::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::/// :::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ / ::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
365 名前:nobodyさん mailto:sage [2011/12/10(土) 16:44:40.44 ID:???] 最近では、広告も電子化されてしまい、チラシといっても なかなか通じません。 チラシの裏エディタを紹介しておきますね。 (私も愛用しています) ttp://yuukiremix.s33.xrea.com/chirashi/ >>361 たぶん、それはくびっていう意味だと思うけど。
366 名前:nobodyさん [2011/12/10(土) 17:53:31.12 ID:bJAhMBsm] Perl CGIで、 WEBページにラジオボタン、チェックボックスを配置して、 保存ボタンで各項目のチェック状態をDBに保存して、 次回ページを表示するときに、前回のチェック状態を再現させたいのです。 DBに保存まではできたのですが、ラジオボタンとかのチェック状態を設定するにはどうやればいいのでしょうか?
367 名前:nobodyさん mailto:sage [2011/12/10(土) 18:04:10.96 ID:???] >>366 ラジオボタンやチェックボックスなら該当するinput要素に、 checked="checked" ってすればいいとおもいます。
368 名前:nobodyさん [2011/12/10(土) 18:14:29.61 ID:bJAhMBsm] >>367 HTMLのコードを出力する時に if (checked) { print <input type="radio" checked="checked"> else { print <input type="radio"> } とかやるってことですか? 数が多くてすごい大変なんだけど、これ普通のやり方なのかな
369 名前:nobodyさん [2011/12/10(土) 18:16:11.86 ID:phxklYwZ] >>366 どんだけ馬鹿なの?消えろ おおwwwwだっせーーーーーーーwwwwwwwwwwwwww そんなチェック状態とか簡単に考え付くだろwwwwwwww 引き継げばいいだけなのにwwwwwwwwwww 頭悪すぎ 自分=ウサギ お前ら=カメ まじまだまだ寝てても平気みたいだね
370 名前:nobodyさん [2011/12/10(土) 18:18:06.55 ID:phxklYwZ] こいつらがやってること全部できる 低レベルすぎる やっぱりセンスが違うんだなあ
371 名前:nobodyさん mailto:sage [2011/12/10(土) 18:23:07.58 ID:???] >>368 ヒアドキュメントに変数埋めといて、該当箇所だけにchecked="checked"が展開されるようにするとか、 input要素はループで生成するようにしておいて、if文減らすとか、とか、
372 名前:nobodyさん mailto:sage [2011/12/10(土) 18:27:04.72 ID:???] 保守性とるなら、配列かハッシュにラジオボタンやチェックボックスに必要な内容を入れといて ループで処理かなぁ。
373 名前:nobodyさん mailto:sage [2011/12/10(土) 21:39:06.91 ID:???] .emlからbase64の部分だけ正規表現で抽出する方法ってありますでしょうか?
374 名前:nobodyさん mailto:sage [2011/12/10(土) 22:10:18.53 ID:???] あります。
375 名前:nobodyさん mailto:sage [2011/12/11(日) 11:50:08.36 ID:???] えっ
376 名前:nobodyさん mailto:sage [2011/12/11(日) 12:15:53.32 ID:???] なり
377 名前:nobodyさん mailto:sage [2011/12/11(日) 16:38:26.87 ID:???] >>361 Perlでやれって言われたの? 今から短時間で実装するならPHPしかないんじゃないの。 Perlでテンプレートエンジンとウェブアプリケーションフレームワークの環境構築とかしてる時間はたぶんないんでしょう?
378 名前:nobodyさん mailto:sage [2011/12/12(月) 10:19:09.76 ID:???] >>373 どなたか具体的な方法をお願いしますです
379 名前:nobodyさん [2011/12/12(月) 11:29:18.56 ID:8Y5nZNmR] 本文なのか添付なのか、plainなのかhtmlなのか・・・ 質問がざっくばらんすぎなのでは?
380 名前:nobodyさん mailto:sage [2011/12/12(月) 12:26:49.55 ID:???] ざっくばらんの使い方おかしくね? アバウトすぎるとでも言いたいんだろうけど
381 名前:nobodyさん mailto:sage [2011/12/12(月) 14:15:46.02 ID:???] ページにアクセスすると、POSTじゃない認証(Basic認証?)を使って表示されるページってありますよね そのページをperlで取得しようと思っています。 ですが何度やっても401が帰ってくるばっかりでまったく進展しない・・・ #!/usr/local/bin/perl $|=1; print "Content-type: text/html\n"; print "\n"; #*一度authorization_basicでやってみました。* #*他のサイトではうまくいったのですが 目的のサイトでは動作しなかった為* #*ntlmを試しています* use LWP::UserAgent; use HTTP::Request::Common; my $url = '認証が必要なURL'; # Set up the ntlm client and then the base64 encoded ntlm handshake message my $ua = new LWP::UserAgent(keep_alive=>1); # $ua->credentials('ホスト:80', '', "???\\ID", 'パスワード'); $request = GET $url; print "--Performing request now...-----------<br>\n"; $response = $ua->request($request); print "--Done with request-------------------<br>\n"; if ($response->is_success) {print "It worked!->" . $response->code . "<br>\n"} else {print "It didn't work!->" . $response->code . "<br>\n"} ????の部分に思い当たる物が無いので ????\\を消して見てもだめでした。 どういった動きをしているのか、またなぜ失敗しているのかも負えず・・・困っています 宜しくお願いします
382 名前:nobodyさん [2011/12/12(月) 18:29:36.74 ID:8Y5nZNmR] Google さんで 「LWP::UserAgent ベーシック認証」 でググると、一番上に出てくるんだけどね。 ちゃんと調べろよカス。 use strict; use LWP::UserAgent; my $ua = LWP::UserAgent->new; my $req = HTTP::Request->new(GET => 'www.example.com/secret.html '); $req->authorization_basic('fuga', 'hoge'); # 'ID', 'PASS' my $res = $ua->request($req); あと credentials はダイジェスト認証用じゃないかなと。 ベーシック認証なら authorization_basic を使う。 「ダイジェスト認証 領域名」 でググれば、知識も深まるかと思います。 ちなみに、僕は HTTP::Request::Coomon を使って $req = GET('www.example.com/secret.html '); って やる方が好きです。
383 名前:nobodyさん mailto:sage [2011/12/12(月) 18:48:35.31 ID:???] >>382 どうもありがとう御座います やってみましたが401が帰ってきました・・・ 何でなんだろう? WWW-AuthenticateにはNegotiateとNTLMって出てるのにorz
384 名前:nobodyさん mailto:sage [2011/12/12(月) 19:57:09.04 ID:???] NTLM ・・・ Windows認証か ・・・ perldoc.jp/docs/modules/libwww-perl-5.813/LWP/Authen/Ntlm.pod 領域名の部分をちゃんと指定すれば、最初のコードで認証できるかと。 とりあえずサーバーにIISを使ってるなら、そう書いた方が良いと思う。
385 名前:nobodyさん mailto:sage [2011/12/12(月) 20:04:00.94 ID:???] >>384 すみませんサーバー側でIISを使ってるのかどうか 確認はしたのですが、確かではないのでorz perlのコーディングとは違う質問で申し訳ありませんが、領域名っていうのはいったい何を指定すれば・・・ クライアント側で調べて分かる物なんでしょうか
386 名前:nobodyさん mailto:sage [2011/12/12(月) 20:39:55.27 ID:???] 認証の設定をするときに、サーバー側で設定するもの。
387 名前:nobodyさん mailto:sage [2011/12/13(火) 01:38:11.67 ID:???] >>380 >>379 は日本語がざっくばらんなんですな
388 名前:nobodyさん mailto:sage [2011/12/15(木) 18:36:11.15 ID:???] Spreadsheet::WriteExcel でエクセルファイルを出力しています。 セルはAからZ列があってそこから先はAA,AB,ACと続くのはご存知だと思います。 このアルファベットを数字に対応させたいと思ってますがアイディアがでませんのでどなたかご教示くださいませ。 1→A ,2→B,26→Z まではできるのですが( chr($_ + 0x60) )、27→AA,28→AB 以降をどうするかがわからないのです。 よろしくお願いいたします。
389 名前:nobodyさん mailto:sage [2011/12/15(木) 19:08:41.22 ID:???] $c=q{z};print++$c
390 名前:388 mailto:sage [2011/12/15(木) 19:27:18.02 ID:???] すいません、説明が不足してました。申し訳ございません。 数字が26なら一発でZに、28なら一発でABに変換したいのです。
391 名前:nobodyさん mailto:sage [2011/12/15(木) 20:03:59.53 ID:???] 再帰処理するサブルーチンでも作れば?
392 名前:nobodyさん mailto:sage [2011/12/15(木) 20:45:17.94 ID:???] sub convert { my $n = shift; my $al = shift || ''; return $n > 0 ? convert(int(($n - 1) / 26), chr(0x41 + ($n - 1) % 26) . $al) : $al; } print convert(28); #=> 'AB'
393 名前:388 mailto:sage [2011/12/15(木) 20:50:09.96 ID:???] >>392 完璧です。 ありがとうございました。
394 名前:nobodyさん mailto:sage [2011/12/15(木) 21:08:20.48 ID:???] >>388 Spreadsheet::WriteExcel って、行・列ともに数値で指定できなかったっけ? search.cpan.org/~jmcnamara/Spreadsheet-WriteExcel-2.37/lib/Spreadsheet/WriteExcel.pm#Cell_notation
395 名前:nobodyさん mailto:sage [2011/12/16(金) 07:33:02.00 ID:???] ムダナナヤミダッタトイウオチカ
396 名前:nobodyさん [2011/12/31(土) 11:42:50.17 ID:uq+4+jAH] Perlにかぎったはなしではないのですが、 cgiに送るデータを index.cgi?user=foo ではなく、例えば favstar.fm/tweets/popular のようにディレクトリ風に送って CGI側で受け取るにはどうすれば良いんでしょうか?
397 名前:日系アメリカ人 ◆japYJPNx6A mailto:sage [2011/12/31(土) 11:53:18.05 ID:???] ディスパッチ
398 名前:nobodyさん mailto:sage [2011/12/31(土) 11:54:05.80 ID:???] PATH_INFO
399 名前:nobodyさん mailto:sage [2011/12/31(土) 16:07:44.64 ID:???] >>398 ありがとうございます!
400 名前:nobodyさん [2011/12/31(土) 17:34:33.56 ID:ELwS00/V] www.nicovideo.jp/watch/sm16573796
401 名前:nobodyさん [2012/01/02(月) 00:05:58.15 ID:xN/cFjEo] datファイルの中に書いてあるパスワードと一致した場合にページを表示させたいのですが 以下のソースでコマンドプロントから入力しても必ず失敗してしまいます エラーはなく、perl -cw を使ってもOKになり問題はありませんでした $datfile = "./add.dat"; open(DAT,"+< $datfile"); flock(DAT, 2); $lock = <<"EOD"; <html><head><title>ページ</title></head> <body>認証許可</body></html> EOD $line = <STDIN>; chomp($line); if ($line eq <DAT>) { print "$lock"; } else { print "認証失敗"; } close(DAT); datファイルの中身は「t」という一文字が入っています 詳しい方、教えてください
402 名前:nobodyさん mailto:sage [2012/01/02(月) 00:34:00.94 ID:???] $datfile の1行目に改行があるとかじゃないの? print によるデバッグがしやすいから、面倒でも最初は変数に入れるクセをつけてみると良いかも。
403 名前:nobodyさん mailto:sage [2012/01/02(月) 07:39:45.76 ID:???] まず use strict しろよ
404 名前:nobodyさん mailto:sage [2012/01/02(月) 09:01:46.53 ID:???] あとコマンドプロントじゃなくてコマンドプロンプトな。
405 名前:nobodyさん mailto:sage [2012/01/02(月) 09:19:16.84 ID:???] <DAT>からの入力をchompしてないからじゃね?
406 名前:nobodyさん mailto:sage [2012/01/03(火) 02:35:21.75 ID:???] あまりに下らないミスすぎて、恥ずかしすぎてお礼も言えないってか?
407 名前:nobodyさん mailto:sage [2012/01/03(火) 08:07:23.54 ID:???] お礼が欲しいなら2ちゃんねる以外でやれ
408 名前:nobodyさん mailto:sage [2012/01/03(火) 08:39:34.48 ID:???] >>407 うるせえカス
409 名前:nobodyさん mailto:sage [2012/01/03(火) 08:59:10.49 ID:???] 罵倒されるのが嫌なら2ちゃんねる以外でやれw
410 名前:nobodyさん mailto:sage [2012/01/03(火) 11:26:01.27 ID:???] まあコマンドプロントじゃしょうがないか
411 名前:nobodyさん mailto:sage [2012/01/03(火) 11:59:37.15 ID:???] プロントにパスタでも食いにいくか。
412 名前:nobodyさん mailto:sage [2012/01/04(水) 19:27:09.19 ID:???] Webブラウザで表示された内容を取得しようと思ったのですが、 私が欲しい情報はJavaScriptにより出力されたものであるために、 単純にPerlを用いただけでは難しいと分かりました。 どのように対処すれば、JavaScriptの表示部分を取得できるのでしょうか? よろしくお願いいたします。
413 名前:nobodyさん mailto:sage [2012/01/04(水) 22:01:40.66 ID:???] サーバーで javascript を走らせるフレームワークがあったような気がする
414 名前:nobodyさん mailto:sage [2012/01/05(木) 01:03:58.26 ID:???] spidermonkeyとか?js読めばどこに通信して何をしてるか分かるから、js無くてもいけると思うけど。
415 名前:nobodyさん mailto:sage [2012/01/05(木) 01:39:51.36 ID:???] Ajax で表示してるなら、firefox での拡張で HTTP 通信を覗けるのがあるから、 それで見張ればいい。 firefox 入れなくない!っていうなら snooper で見ればいい。
416 名前:nobodyさん mailto:sage [2012/01/05(木) 22:01:42.38 ID:???] 急にPerlでCGIプログラムをやることに。 みなさんIDEは何をお使いですか? 今んとこ慣れないEclipseでやろうと 思ってます。
417 名前:nobodyさん mailto:sage [2012/01/05(木) 22:27:56.90 ID:???] Perlを始めとした動的言語では コード補完もリファクタリングもヘルプも 中途半端にしかならないからIDEは重いだけだよ。
418 名前:nobodyさん mailto:sage [2012/01/05(木) 22:34:01.35 ID:???] テキストエディタのみ 最近はブロックの折り畳みとかあるんで、充分強力
419 名前:nobodyさん mailto:sage [2012/01/05(木) 22:54:26.32 ID:???] IDEに助けてもらおうと思ったんですが 効果が薄いようですね。 腹くくってエディタでやります。
420 名前:nobodyさん mailto:sage [2012/01/06(金) 02:05:15.33 ID:???] 各個人のポリシー次第。なのかもしれませんが、質問です。 モジュール ( .pm) を作ったときって、何かエラーが合った場合に die でスクリプトを止めてしまってエラーを通知するべきか、 それとも STDERR にエラーを出力しつつスクリプトは止めないようにするべきか、 どちらがオススメのコーディングの仕方なんでしょう?
421 名前:nobodyさん mailto:sage [2012/01/06(金) 02:11:20.73 ID:???] 男は黙ってcroak
422 名前:nobodyさん mailto:sage [2012/01/06(金) 03:13:39.39 ID:???] >>420 してほしい事をやらせて してほしくない事をやらせなければよい。
423 名前:nobodyさん mailto:sage [2012/01/07(土) 06:25:16.35 ID:???] >>421 croak が分からなかったので調べてみた。 呼び出し元が分かる die か。なるほど。 ワーニングには carp か。 ありがとう! >>422 根本的に文章が読みとれてないですよ。
424 名前:nobodyさん mailto:sage [2012/01/07(土) 12:06:24.49 ID:???] >>423 > 根本的に文章が読みとれてないですよ。 俺は422ではないが、そっくりそのままお返しする。
425 名前:nobodyさん mailto:sage [2012/01/07(土) 13:19:20.03 ID:???] 420は2択を迫っているが、422は場合によるといっていて、その場合についての説明もしている。 422が正解だと思うが。
426 名前:nobodyさん mailto:sage [2012/01/12(木) 05:19:37.52 ID:???] どうすんのがいいのか聞いてんのに場合によりけりとしたり顔で言われたら脱力する 420は場合によりけりということがわかった上で、基本的なスタンスはどっちがいいか聞いてんじゃないの? 俺はプロセス殺すなー 変な値入ってんのに処理続けても意味ないし warnなんてデバッグでしか使ったことないや
427 名前:nobodyさん mailto:sage [2012/01/12(木) 12:02:21.96 ID:???] >>426 おまえも読解能力の欠陥持ちか。 「場合によりけり」では結局何も答えてないに等しいが、>>422 はそんなこと書いてないだろ。 どういう時にどっちを選択すればいいかが簡潔に書いてあるだろ。
428 名前:nobodyさん mailto:sage [2012/01/14(土) 02:03:55.49 ID:???] time_tが32bitか64bitかを調べる方法はありますか? 2038年1月19日3時14分7秒以降のUNIX時間を取得してみるよりスマートな方法で。 学校の宿題でカレンダーを作ったら2038年2月でずれちゃいました。
429 名前:nobodyさん mailto:sage [2012/01/14(土) 05:41:58.49 ID:???] overflow 日付は分かってるんだから、最大値+1を与えた時に 日付がどうなってるか確かめればよい
430 名前:nobodyさん mailto:sage [2012/01/14(土) 10:28:47.22 ID:???] > 2038年1月19日3時14分7秒以降のUNIX時間を取得してみる これで充分スマートじゃないか?
431 名前:nobodyさん mailto:sage [2012/01/14(土) 12:11:45.71 ID:???] 俺に言わせれば、time_tが32bitか64bitかなんて重要な問題じゃないね。 本当に知りたいことは、2038年1月19日3時14分7秒以降が扱えるかだろう? (キリッ)
432 名前:nobodyさん mailto:sage [2012/01/14(土) 12:21:34.67 ID:???] ぶってぇ釣り針垂らしやがって・・・
433 名前:nobodyさん mailto:sage [2012/01/14(土) 15:29:38.07 ID:???] つーか「これは仕様です」で十分でしょ、実際仕様なんだから。 年が4桁で有限なのと同じでしょ。
434 名前:nobodyさん mailto:sage [2012/01/14(土) 15:46:35.43 ID:???] ・Perl 5.12 以降を使う ・Time::y2038 モジュールを使う ・DateTime モジュールを使う のどれかで解決
435 名前:nobodyさん mailto:sage [2012/01/14(土) 16:24:02.91 ID:???] 他の人の労力で解決っているのは、仕事ではそうすべきだけど、 "トレーニング" である宿題ではそうすべきではない。むしろ time_t にさえ依存せず、自力で10桁年カレンダーのような無駄 なものを作って自分自身の糧とすべし。
436 名前:nobodyさん mailto:sage [2012/01/14(土) 18:04:47.99 ID:???] >>435 その考え方は賛成できるけど、このスレ的には「車輪の再発明」って言われちゃうんだよね〜 orz
437 名前:nobodyさん mailto:sage [2012/01/14(土) 18:26:43.69 ID:???] じゃあ、トレーニングだ。 自分で考えろ。こんな所聞くな。 他の人の労力で解決すんな。
438 名前:nobodyさん mailto:sage [2012/01/14(土) 21:36:35.23 ID:???] 車輪の再発明はいいんだけど、大抵は独学のトホホなプログラムができあがあるから、せめて一度 既存モジュールの中身を読んでくれ。
439 名前:nobodyさん mailto:sage [2012/01/14(土) 23:37:55.97 ID:???] 先生のために宿題をするのか、自分のために宿題をするのか違い。
440 名前:nobodyさん mailto:sage [2012/01/15(日) 20:18:01.72 ID:???] 単位のためだろ
441 名前:nobodyさん mailto:sage [2012/01/15(日) 20:45:40.76 ID:???] そういうの全く理解できないんでごめんな
442 名前:nobodyさん mailto:sage [2012/01/18(水) 21:06:05.29 ID:???] 元ファイルの内容を書き換えて別ファイルに保存する方法を教えてください。 元ファイル aaa.txt 変換プログラム trans.cgi 変換後のファイル bbb.txt aaa.txt に書いてある「あ$kanaお」を読み込んで trans.cgi にて$kana = きくけ; として変換し bbb.txt に「あきくけお」で出力するには、どうしたらいいのでしょうか。 open関数で +< という読み書きでファイルを開いても 空テキストが作成されるだけで、うまくいきません。 どうかよろしくおねがいします。
443 名前:nobodyさん mailto:sage [2012/01/18(水) 21:27:56.62 ID:???] open(my $infh, ?<:utf8?, ?input.txt?); open(my $outfh, ?>:utf8?, ?output.txt?); while(my $line = <$infh>){ 〜処理〜 print $outfh $line; } close($outfh); close($infh);
444 名前:nobodyさん mailto:sage [2012/01/18(水) 22:19:08.77 ID:???] >>442 perldoc.jp/docs/perl/5.10.1/perlfaq5.pod my %var = (FOO => 'bar'); open my $fh, '+<', $file or die $!; read $fh => my $text, -s $fh; $text =~ s/__([A-Z]+)__/$var{$1}/g; seek $fh, 0, 0; print $fh $text; truncate $fh, tell; close $fh; open my $sfh, '<', $src_file or die $!; open my $tfh, '>', $tmp_file or die $!; while (<$sfh>) { s/__([A-Z]+)__/$var{$1}/g; print $tfh $_; } close $tfh and close $sfh or die $!; rename $tmp_file => $src_file or die $!;
445 名前:442 mailto:sage [2012/01/18(水) 22:35:01.78 ID:???] >>443 さん >>444 さん お返事ありがとうございました。 じっくり読んで頑張ってみたいと思います
446 名前:nobodyさん [2012/01/25(水) 02:08:42.13 ID:8GsK3GVU] ファイルの置換について質問させてください。 コマンドラインから、 echo "test.txt" | xargs perl -pi -e 's/hoge/HAGE/g' とすると正しく置換されるのですが、 ブラウザからapacheをとおして、スクリプト内で上記のコマンドを、 `echo "[フルパス]test.txt" | xargs perl -pi -e 's/hoge/HAGE/g'` や system "echo ¥"[フルパス]test.txt¥" | xargs perl -pi -e 's/hoge/HAGE/g'" とするとうまく置換されないのはなぜでしょうか? またこのケースですとスクリプト内での記述はどのようにするのが適切でしょうか?宜しくお願い致します。
447 名前:nobodyさん mailto:sage [2012/01/25(水) 03:35:55.61 ID:???] CGI実行時のユーザ権限は そのユーザ権限でファイルや当該ディレクトリは書き込み可能になっているか をまずチェック。
448 名前:nobodyさん [2012/01/25(水) 03:57:31.07 ID:Arlh9fb/] 447さん お返事ありがとうございます。ディレクトリとファイルは権限777にして試してみたのですが、 置換されませんでした。あとスクリプト中の文字のエスケープ漏れもみなおしてみたのですが、 結果変わらずでした。さらに調べてみます。ありがとうございます。
449 名前:nobodyさん mailto:sage [2012/01/25(水) 04:06:26.93 ID:???] どう出来ないのか エラーは出てないのか 端末でスクリプトを走らせたらどうなるか
450 名前:nobodyさん mailto:sage [2012/01/25(水) 08:23:33.82 ID:???] Apacheのerrorログを見てみる ←基本
451 名前:nobodyさん mailto:sage [2012/01/28(土) 22:01:51.13 ID:???] errorログを見て特に問題はないと思っていたら... sendmailのログでしたorz←
452 名前:nobodyさん mailto:sage [2012/01/29(日) 11:48:32.08 ID:???] コマンドラインやめてopen(FILE,"[フルパス]test.txt")しちゃいなよ
453 名前:nobodyさん mailto:sage [2012/01/31(火) 17:42:02.72 ID:???] 質問質問! &sub1(qq(asdasdqwdasdasd)); sub sub1 { while($_[0] =~ /asd/gs )#←@ { print $_[0];#←@でマッチした中身を出力したいが、subの引数 } } こんな感じのプログラムを作ったのですが $_[0]の中身が更新できなくて困っています・・・ どなたか回避する方法を教えてください!お願いします
454 名前:nobodyさん mailto:sage [2012/01/31(火) 17:56:37.52 ID:???] /asd/gs ↓ /(asd)/gs あとついでに書き直した。 sub1(qq(asdasdqwdasdasd)); sub sub1{ my $str = shift || ''; while($str =~ /(asd)/gs){ print $1; } } 慣れてくれば良いけど、初心者であるうちは $_ をそのまま使わずに関数内で変数を用意して そこへ格納したほうがいいよ。
455 名前:nobodyさん mailto:sage [2012/01/31(火) 18:23:59.58 ID:???] >>454 2つほど質問があるのですがいいですか!
456 名前:nobodyさん mailto:sage [2012/01/31(火) 18:26:09.85 ID:???] お礼を書くのを忘れていました >>454 さん ありがとう御座います。
457 名前:nobodyさん mailto:sage [2012/01/31(火) 18:52:11.00 ID:???] don't ask to ask
458 名前:nobodyさん mailto:sage [2012/01/31(火) 21:02:02.01 ID:???] CGIのデータベースを運用しています。 auの端末で検索できるものとできない機種があります。 同じ2009年にでたモデルでもできるできないがあります。 例えばCA002はできるけど、K002はだめ。 できないものは、何も検索フォームに入れないで検索してもダメです。 Jcode.pl 2.13でエンコードしてますが、 これが悪いのでしょうか? どうしたら、文字検索をできるようにできますか?
459 名前:nobodyさん mailto:sage [2012/01/31(火) 21:33:09.50 ID:???] >>458 携帯サイトのWebプログラムを語ろう Part3 kohada.2ch.net/test/read.cgi/php/1232544986/