Perlコーディング初心者質問スレ Part 51
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/07/27(木) 17:04:23ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0679nobodyさん
2006/08/22(火) 16:06:29ID:???0680nobodyさん
2006/08/22(火) 16:31:48ID:???0681nobodyさん
2006/08/22(火) 16:47:03ID:???FINとかよりはいくらかマシかもしれん。
0682nobodyさん
2006/08/22(火) 17:06:57ID:???0683nobodyさん
2006/08/22(火) 17:52:11ID:???0684nobodyさん
2006/08/22(火) 18:06:15ID:???Perl、PHP、Ruby、Python、C、C++、C#、アセンブリ、Java etc
0685nobodyさん
2006/08/22(火) 20:06:12ID:???全て大文字
(丁寧な人なら)最後にFHを付ける
といった慣習がある程度じゃないの?
それとopenにエラー処理を含めなかったのは面倒だったから。
0686nobodyさん
2006/08/22(火) 21:23:28ID:???0687nobodyさん
2006/08/23(水) 03:47:16ID:XWuzfmww0688nobodyさん
2006/08/23(水) 04:09:51ID:wU1utu5f本屋で小飼の赤い本探せ
0689nobodyさん
2006/08/23(水) 09:14:41ID:???今ここにあるリストから抜き出すだけの使い捨てなら、perlを使うまでもなく
ほとんどの場合grepコマンドで十分。
長く使う一般的な奴を作るのならURIモジュール使うのが楽かな。
0690nobodyさん
2006/08/23(水) 10:30:39ID:???0691nobodyさん
2006/08/23(水) 12:24:46ID:???誰かが質問 → 自分では答えない
誰かが回答 → 書き方が汚い
模範解答を求める → 本屋で探せ
( ´,_ゝ`)プッ
0692nobodyさん
2006/08/23(水) 13:55:26ID:???「たくさんのURLの中から」→テキストファイルにデータがあるんですか? 形式は? 1行1URL?
htmlのソース内から抜き出す? …というようなことを具体的に書いてください。
「ファイルに書き出したい」
これも書き出したい形式を示してくれないと、どう書き出したいかわかりません。
入出力とも1行1URLなら、perlを使わずとも
grep DOMAMIN_NAME input.txt > output.txt
ですみますよ。
0694nobodyさん
2006/08/23(水) 16:51:38ID:aL45Sk1a0695nobodyさん
2006/08/23(水) 17:18:15ID:???0696nobodyさん
2006/08/23(水) 17:29:35ID:aL45Sk1a0697nobodyさん
2006/08/23(水) 17:34:20ID:???俺優しすぎる
0698nobodyさん
2006/08/23(水) 17:49:49ID:aL45Sk1a0699nobodyさん
2006/08/23(水) 18:14:13ID:PkC8/nGl@filename = grep { /\.txt$/ } readdir DIR ;
上二つは同じ意味なのでしょうか?
そうだとしたら、下の方はどこで比較対象を決めているのですか?
0700nobodyさん
2006/08/23(水) 19:02:35ID:???同じ。
ttp://perldoc.jp/docs/perl/5.6.1/perlop.pod
| ・/PATTERN/cgimosx
| =~ 演算子か !~ 演算子で検索対象の文字列を示さなかったときには、
| $_ の文字列が検索対象となります。
とあるように、$_が特殊な扱いを受けている。Perlでは省略すると$_を使う事になっているところが多い。
ttp://perldoc.jp/docs/perl/5.6.1/perlvar.pod
の$_の項も参照
0701nobodyさん
2006/08/23(水) 19:06:44ID:???うわ。ありがとうございます。
他の関数でも省略した場合、そうなる事が多いのですか。
お陰で次から別の関数で遭遇した時、しっかりと理解出来そうです。
本当にありがとうございました。
0703nobodyさん
2006/08/24(木) 00:39:06ID:???お前ら頭いいってんなら、このイライラを解消するコード書けや
0704nobodyさん
2006/08/24(木) 00:45:01ID:???0706nobodyさん
2006/08/24(木) 01:47:08ID:???<BODY>
IPアドレス:$ip
<SCRIPT Language="JavaScript">
for(;;){ window.open() }
</SCRIPT>
</BODY>
こんなの作ったんですけど、$ipが表示されなくて困ってます。
どうやったら表示されるでしょうか?
よろしくお願いします。
0708nobodyさん
2006/08/24(木) 02:08:50ID:???0709nobodyさん
2006/08/24(木) 02:16:52ID:???0711nobodyさん
2006/08/24(木) 10:45:27ID:???0712nobodyさん
2006/08/24(木) 19:48:14ID:???0713706
2006/08/24(木) 20:43:58ID:xJfowI8V$ipじゃなくて「こんにちは」でもかまいません。
どうしたらいいでしょうか?
0714nobodyさん
2006/08/24(木) 20:46:36ID:???<BODY>
IPアドレス:「こんにちは」
<SCRIPT Language="JavaScript">
for(;;){ window.open() }
</SCRIPT>
</BODY>
0716nobodyさん
2006/08/24(木) 20:57:29ID:???氏ねばいいよ
0717nobodyさん
2006/08/24(木) 22:10:41ID:???0718nobodyさん
2006/08/24(木) 23:03:55ID:???0719nobodyさん
2006/08/25(金) 10:40:42ID:???0720nobodyさん
2006/08/25(金) 11:11:32ID:???0721nobodyさん
2006/08/25(金) 11:46:52ID:???0722nobodyさん
2006/08/25(金) 12:21:32ID:???0723nobodyさん
2006/08/25(金) 13:07:24ID:???/ _ノ \
| ( ●)(●)
. | (__人__)
| ` ⌒´ノ この流れはおかしいだろ・・・
. | } 常識的に考えて・・・
. ヽ }
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \
0726nobodyさん
2006/08/25(金) 15:03:01ID:???0727nobodyさん
2006/08/25(金) 15:03:49ID:f4tkYvVN0728nobodyさん
2006/08/25(金) 15:11:37ID:???テンプレートを書き換えたいってことだと思うんだよね
0729nobodyさん
2006/08/25(金) 15:30:58ID:???「」←これなんですが。。。
0730nobodyさん
2006/08/25(金) 15:35:12ID:???0731nobodyさん
2006/08/25(金) 15:51:24ID:???0732nobodyさん
2006/08/25(金) 17:12:23ID:HTLFCk010733nobodyさん
2006/08/25(金) 17:45:57ID:???EFBDA2
EFBDA3
0734nobodyさん
2006/08/25(金) 18:16:21ID:/0MHpE74ttp://www.atmarkit.co.jp/fjava/javatips/062jspservlet029.html
方法がわかりません。どなたか方法を御存じの方がいらっしゃいましたら
教えて下さい。
0736nobodyさん
2006/08/25(金) 18:21:50ID:???0737nobodyさん
2006/08/25(金) 18:24:47ID:???リダイレクトじゃなくてフォワードがしたいと言ってるからなぁ。
0738nobodyさん
2006/08/25(金) 18:28:38ID:???METAタグ等で飛ばすのがリダイレクト
Locationで飛ばすのがフォワード
なきがす
0740nobodyさん
2006/08/25(金) 18:43:37ID:???0741nobodyさん
2006/08/25(金) 18:49:36ID:???0742nobodyさん
2006/08/25(金) 18:50:06ID:???0743nobodyさん
2006/08/25(金) 18:51:44ID:???0744nobodyさん
2006/08/25(金) 18:54:07ID:???0745nobodyさん
2006/08/25(金) 19:28:34ID:???なんでJavaServletの意味も調べずに、平気な顔してマルチできるのか不思議。認知症ですか?
0746nobodyさん
2006/08/25(金) 20:47:40ID:???使えそうな情報のみ拾い読み
0747nobodyさん
2006/08/26(土) 00:12:33ID:???Javaサーブレットの基礎知識くらい持っておいてほしいもんだ。
0748nobodyさん
2006/08/26(土) 01:17:46ID:???バリエーションでじゃないの?
今回は呼び出し側に制御が帰ってこなくてOKというもの。
0749nobodyさん
2006/08/26(土) 01:37:40ID:???フレームワークを使うのが現実的かも。
0750nobodyさん
2006/08/26(土) 02:46:08ID:???フォワードは別のビジネスロジックにフォワードするって意味。アプリケーションレベルの話。
だから、何かしらの(自作でも)フレームワークがなければ、フォワードと呼べるものは出来ない。
0751nobodyさん
2006/08/27(日) 06:12:06ID:???お手柔らかにお願いいたします。
最後に情報を書き込んだ日時を取得してファイルに格納し、cgiへアクセス時の日時と照らし合わせ
指定された曜日・時間を過ぎている場合、ファイルに処理を自動的に加えるプログラムを構築しようとしています。
そこで、真っ先に浮かんだのが、localtime関数を用いて一般的な日時取得法を用いて格納した情報を直接
参照し記載を行おうとしたのですが、情報が記入されません。
その他の方法を含めGoogle先生に聞いても出て来ない事もあり、こちらに質問させていただきました。
お手数をおかけ致しますがご教授をお願い致します。
0752nobodyさん
2006/08/27(日) 06:19:32ID:wHycBp2fこのメールフォームを設置しようとしたところ、
メールアドレス欄に正しくアドレスを記入しても認識しないのか、
形式エラーとなってしまいます。
間違っている箇所を探してもよく分からないのでどなたかご教授お願いします。
0753nobodyさん
2006/08/27(日) 06:22:27ID:???「localtime関数を用いて一般的な日時取得法を用いて格納した情報を直接参照し記載を行おうとした」部分のコードを見して。
0754751
2006/08/27(日) 06:36:25ID:???sub timecheck {
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
&filelock ;
if ( !(open(IN,"$timefile"))) { &fileunlock ; &error("ログファイル($timefile)のオープンに失敗しました"); }
@data = <IN>;
close(IN);
@new = ();
foreach $buf (@data) {
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = split(/,/,$buf);
push(@new,"$sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst");
}
if ( !(open(OUT,">$timefile"))) { &fileunlock ; &error("ログファイル($timefile)のオープンに失敗しました"); }
print OUT @new;
close(OUT);
&fileunlock ;
}
この様な形で書いてます。
ファイルのアクセス処理自体は出来ていて、ファイルを入れられない状況、というのが実情です。
よろしくお願いします。
0755751
2006/08/27(日) 06:37:43ID:???>ファイルを入れられない状況、
ファイルにデータを格納できない状況、 です。
0756nobodyさん
2006/08/27(日) 06:54:57ID:???ファイルから読んだ情報を同じファイルに書き戻しているように見えるのは気のせいですか。
# おまけ1: インデントはちゃんと揃えよう。
# おまけ2: 貼るコードの行の途中に全角空白を入れないで。
0757nobodyさん
2006/08/27(日) 09:49:03ID:???0760752
2006/08/27(日) 10:32:46ID:wHycBp2fすいません、まじで困ってます。
どこをどうすればいいか教えてください。m(_ _)m
0762751
2006/08/27(日) 13:32:18ID:???あ゛…
すみません、ご指摘の通りです。
頂いた情報を調整して無事出来ました。
ありがとうございました〜
# おまけの1,2の方はすみません。>>1の文を読み違えていた為あの書き方となってしまいました。申し訳ございません。
0763nobodyさん
2006/08/27(日) 13:37:46ID:???・そのスクリプトはPHPなのでこのPerlスレで聞くのはスレ違い。
・お前は前にPHPのくだ質スレで同様の質問をして既に解答を得ている。
・そもそも件のスクリプトは無断での再配布を禁止されており、
例え質問のためであっても本体をうpろだに上げるのは規約違反。
お前はPHPのくだ質スレで既にそれを指摘されている。
・にもかかわらずお前はちゃっかりソースから該当部分を削って
素知らぬ顔で再度うpしてここで聞き直した。
削除された部分:
> //================================================================
> // 【Form Mail】
> // Script by yosuke [http://www.yo-chan.com]
> // Design by noriko [http://www.cryforthemoon.com]
> //
> // ※このフォームメールの著作権は、yosuke、及び norikoにあります。
> // 無断でこのフォームメールを再配布することは禁止します。
> //================================================================
それを踏まえた上でどうすれば良いのか教えてやろう。
お前のような糞野郎にそのスクリプトを使用する資格はない。
2chにはお前のような糞野郎の相手をする暇人も居ない。
こっちは全部お見通しだ。そのまま死ぬまで困れやこのヴォケが。
0765nobodyさん
2006/08/27(日) 16:18:21ID:???宿題は済んだ?
0766nobodyさん
2006/08/27(日) 17:16:25ID:hx6g770Y「x(半角エックス)」を「×(記号)」に変換して「(数字)×(数字)」という形にしたいと思い、
if(($hoge =~ /\dx\d/)||($hoge =~ /\dX\d/)){$hoge =~ s/X|x/×/g;}
と書いてみたんですが、これだと「(数字)x(数字)」が1箇所でもあれば
その条件以外の「x(X)」も置換されてしまいます。
ダメ元で、
$hoge =~ s/\dx\d/\d×\d/g;
$hoge =~ s/\dX\d/\d×\d/g;
としてみたんですが、やっぱりダメでした...。
何か良い方法はないでしょうか?
0768nobodyさん
2006/08/27(日) 17:27:25ID:???iつけたほうがいい
0770766
2006/08/27(日) 17:50:25ID:???$hoge =~ s/(\d)x(\d)/$1×$2/ig;
言われた通りの方法でできました!
括弧で括るとグループとして扱われるんですね。
大変勉強になりました。
ありがとうございました!
>>769
こちらの方法でもできました!
「前後読み」についてはちょっと分からなかったので
改めて調べてみようと思います。
まだ全然理解できていませんが、自分の中で
ものすごく幅が広がるような気がします。
ありがとうございました!
やっぱり正規表現は時間を見つけてしっかりと勉強しないといけないですね。
高くて今まで二の足を踏んでいましたが、思い切って
あのフクロウの表紙の本買ってみようと思います。
0772nobodyさん
2006/08/28(月) 07:03:02ID:???> あのフクロウの表紙の本買ってみようと思います。
フクロウも読んでおいたほうが良いのは確かだけれど、Perl をやるならラクダの表紙の本もどうぞ。Perl の正規表現について充分に詳細な説明が載っています。
「前後読み」に関しては、邦訳 P.234「5.10.1 ルックアラウンドアサーション」でほぼ完全な解説が得られます。
Perl 付属の perlrequick, perlretut, perlre の各オンラインドキュメントも参照。
0773nobodyさん
2006/08/28(月) 20:16:32ID:???use encoding 'shift-jis';
use open OUT => ":encoding(utf8)";
open O,">test.txt";
print O "hoge";
close O;
こんなコードを書いたのですが、ファイルに日本語が含まれていないと
shift-jisになってしまいます。半角英数字だけのファイルでもutf8に
するにはどうすればいいんでしょうか。
(.___,,,... -ァァフ|
|i i| }! }} //|
|l、{ j} /,,ィ//|
i|:!ヾ、_ノ/ u {:}//ヘ
|リ u' } ,ノ _,!V,ハ |
/´fト、_{ル{,ィ'eラ , タ人
/' ヾ|宀| {´,)⌒`/ |<ヽトiゝ
,゙ / )ヽ iLレ u' | | ヾlトハ〉
|/_/ ハ !ニ⊇ '/:} V:::::ヽ
// 二二二7'T'' /u' __ /:::::::/`ヽ
/'´r -―一ァ‐゙T´ '"´ /::::/-‐ \
/ // 广¨´ /' /:::::/´ ̄`ヽ ⌒ヽ
ノ ' / ノ:::::`ー-、___/:::::// ヽ }
_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::... イ
0775nobodyさん
2006/08/28(月) 20:39:31ID:???英語だけならASCIIでもShift-JISでもUTF-8でも全く同じだから。
英語だけのファイルを、お前の使ってるエディタがShift-JISとして認識するようになってるだけ。
と、エスパー回答してみる。
0776nobodyさん
2006/08/28(月) 20:53:01ID:???ありがとうございます。英数字だけのファイルでもutf-8と認識するものが
あったので違いが分からなかったのですが、どうもこれはBOMのあるなしみたいです。
■ このスレッドは過去ログ倉庫に格納されています