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

【Perl】初心者コーナー Part12

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん02/04/27 23:17ID:1NNXdNsp
 
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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

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

CGIの質問は【CGIだけどなんか質問ある Pert 6 】
http://pc.2ch.net/test/read.cgi/php/1019561283/
参考書籍の話題は【【Perl,CGI】参考書籍 第2版 】
http://pc.2ch.net/test/read.cgi/php/988809842/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
スクリプトの改造依頼は 【スクリプト改造工房 Part4 】
http://pc.2ch.net/test/read.cgi/php/1012839651/

過去ログ、その他の役立ち情報は>>2-10を見よう。
 
0952nobodyさん02/05/28 01:32ID:???
>949
まずは正規表現の書き方から覚えよう。
if ($ENV{'HTTP_USER_AGENT'} ne ~ /DoCoMo/) {
だと
if ($ENV{'HTTP_USER_AGENT'} ne ($_ =~ /DoCoMo/) ) {
になるんじゃないかな?
まず一致する事はないね。
0953nobodyさん02/05/28 01:48ID:???
>>952
正規表現の書き方はおかしくねえだろ。おかしいのは、パターン
結合演算子の書き方。つか、キミ自身が正規表現とは何たるかを
勉強した方が良いとちゃう?
0954nobodyさん02/05/28 01:56ID:???
>953
確かに色々間違ってた模様。
ありがとう。

ttp://a414s1.it.nanzan-u.ac.jp/textbook/text082100-2/node81.html
こんなの見つけて色々勉強になった。
漏れには結構基本的な部分が抜けてた模様。
0955nobodyさん02/05/28 02:41ID:???
>>954
そのリンク先のパターン結合演算子の説明おかしくないか?
俺の知らない、Perl得意の省略形かと一瞬思っっちまったが。
なんで=と!の単項やねん?もっと、まともなサイトを探すのが吉。
0956nobodyさん02/05/28 03:16ID:???
>955
鵜呑みにするところだった…
グーグル様で検索して最初にひっかかった物だからつい…
0957!~ 使え!コゾウ02/05/28 03:58ID:???
(´-`).。oO(>>952 プッ…)

if ( $ENV{'HTTP_USER_AGENT'} !~ /DoCoMo/ ) {
 print "DoCoMo 逝ってヨシ!\n";
}
0958nobodyさん02/05/28 08:36ID:???
先生!激しく初心者なのですが、掲示板の入力する項目に
「名前・メルアド・URL・本文」以外に年齢とか趣味とかの
項目を追加したいと思います。どうすればいいのでしょうか?

テスト用のサンプルとしてKENTさんのASKA BBSを使ってます。
http://www.kent-web.com/bbs/sample/aska.cgi
0959nobodyさん02/05/28 08:43ID:???
>958
ttp://pc.2ch.net/test/read.cgi/php/1012839651/
スクリプト改造工房 Part4

ここに行けばいい。
0960nobodyさん02/05/28 09:05ID:5/swSF0d
超初歩的な質問で申し訳ありません。。

READで読んできた文字列データ(50kくらい)に含まれる特定の文字列(複数個)を
検索しようとしているのですが、うまく行きません・・。
if(VALUE =~ /PATTERN/){
だと一度に1つしか検索できないし
while(VALUE =~ /PATTERN/){
だと同じ部分でmatchしつづけてします。。
0961nobodyさん02/05/28 09:17ID:???
>960
検索した後どうしたいかにもよるが。
VALUE =~ /PATTERN/g;
096296002/05/28 09:41ID:???
>961
ありがとうござます。自分の持ってるperl初心者本に詳しく書いて無かった事もあり、
optionについて勉強不足でした。助かりました。
0963nobodyさん02/05/28 09:59ID:???
余談だが、

$str ne ~ /pattern/

これは

$str ne ($_ =~ /pattern/)

じゃなくて

$str ne ~ ($_ =~ /pattern/)

だろ。誰か気付けよ。


0964nobodyさん02/05/28 17:29ID:???
foreach文に関して質問させてください。

配列Aと配列Bがあったとします。
@A = (1,2,3,4)
@B = (a,b,c,d)
これを1-a 2-b 3-c 4-dと表記しようと思います。

foreach $X(@A){ print "$X";
foreach $Y(@B){ print "-$Y";
} }
この書き方だと、
1-a-b-c-d 2-a-b-c-d・・・と言うような結果になりますよね?
二つの配列の内容を同時に一回ずつ表記する方法はないものでしょうか?
0965nobodyさん02/05/28 17:31ID:???
追記:結果的に1-a 2-b 3-c 4-dという形になれば問題ないと思います。
よろしくお願いします。
0966nobodyさん02/05/28 17:39ID:???
for($i=0;$i<@A;$i++){
  print "$A[$i]-$B[$i] ";
}
これじゃダメなの?
0967だめぽ02/05/28 18:04ID:NVFnKI0C
アクセス解析のログから、昨日のアクセス数をもとめるにはどうすればよいでしょう・・?
アクセス解析に今日と昨日のカウンタをつけたいです。

ログのフォーマット
アクセス通し番号<>日付<>IP<> ・・・

日付は 2002/05/28(火) 18:00 という書式です。

別にカウンタ用ファイルを用意すれば可能ですが、ログをひとつにまとめたいのです。
やろうとすると一日のとき前月の日付がいろいろ変わるのですごい大変でした。。
お願いします。m(_ _)m
0968nobodyさん02/05/28 18:10ID:???
>967
前日の日付の求め方を聞きたいのかな?
それならlocaltime(time-24*3600);で出せばいいだけだけど。

でも、そんな事をするくらいなら、ログファイルの中に日付だけのデータを作った方が楽だと思う。
0969だめぽ02/05/28 18:22ID:???
>>968
ありがとうございます。

>localtime(time-24*3600);
これでできそうな感じがするので、やてみます。m(_ _)m
0970nobodyさん02/05/28 21:56ID:???
そろそろ次スレ立てないとやばいぞ。
0971nobodyさん02/05/28 22:53ID:IYnV1U6d
整数かどうかを判定するにはどうすればいいでしょうか?
0972nobodyさん02/05/28 22:57ID:???
>971
if($a == int($a)){
0973(・v・)02/05/29 03:55ID:???
>>968

>>967 は 2002/05/28(火) 18:00 ←こんな書式の日時文字列を
time とかで返される様な値に変換したいのカナ?

at-works の access log のログファイルみたいだ…
俺、これ改造して普通に time 値が返すような値を
カキコするように改造したが…
097481102/05/29 19:35ID:???
parlでwinのAPIって使えるんですか?
ウインドウのタイトルを取得したいんですが。
CGIじゃなくてローカルで使います。
0975nobodyさん02/05/29 21:58ID:???
aaa<>1
bbb<>2
ccc<>3
これを
2番目の数が多い順にソートしたいんですが、
どうすればいいのでしょう?
0976nobodyさん02/05/29 23:44ID:BqVeUZ/K
>>974
Win::API
ここにちょっとだけ使い方が載ってました。
http://member.nifty.ne.jp/hippo2000/perltips/perllha.htm

>>975
Schwartzian Transform
http://www.din.or.jp/~ohzaki/perl.htm#SortST


で、質問なんですが、
tieの使い方がいまいち判らないのですが、
「こういう時に使うと効果的」というサンプルありましたら教えてください。
0977スレッドストッパー&rlo;止停02/05/29 23:51ID:???
>>976
適当に流しすぎ、、、。
097897602/05/29 23:52ID:BqVeUZ/K
補足。
今はDB_File.pmを使う時にだけtieを使ってます。
例えばFETCHメソッドはtieで関連付けた変数から値を取り出す時に自動的に呼ばれる、
というのは判るんですが、それがどういう利点を持つのかが判りません。
097997602/05/29 23:53ID:???
>>977
なんか足りませんでしたか?
0980nobodyさん02/05/30 01:02ID:???
>>978
利点って・・・FETCHとかSTOREがなかったらtieをつかえへんやん

例えばだけど、Tie::Fileってモジュールは配列をtieして、
ファイルの要素を配列の要素としてアクセスできるようにしてる。

my $this_is_the_first_line = $tied_file[ 0 ];
my $this_is_the_last_line = $tied_file[ $#tied_file ];


で、ここでFETCHがどう入ってくるかというと

1) 配列要素にアクセス
2) tieされているオブジェクトにFETCH()が呼ばれる
3) ファイルのn行目を読み込んで返す

という動作を行うわけ。だからインターフェースはあくまでも配列
なのに全然配列とは違う動きをさせられる。そういう時にtieを使う。
DB_Fileも同じ。本当はハッシュじゃないんだけどハッシュをアクセス
する時に裏側でフラットファイルデータベースのレコードにアクセスしてる
わけや。
0981nobodyさん02/05/30 01:04ID:z8tD+2yU
>>974
parlってナニ?
perlなら知ってるけど…

クソレスでスマソ(゚∀゚)!!!!
0982nobodyさん02/05/30 02:14ID:9bTblmUw
1000間近にすみません。

globで返ってくるファイルのリストは、必ず順ソートされているものなのでしょうか?
ズブ初心者で申し訳ないす。
0983976,97802/05/30 03:27ID:???
>>980
詳しい説明ありがとうございます。
なんとなく掴めました。
0984 02/05/30 04:15ID:rYtvxDAS
HTTPのヘッダの

Keep-Alive: timeout=??

の??の部分はタイムアウトまでの秒数を表しているのは分かりますが、このタイム
をカウントし始めるのは何時なのでしょうか。ヘッダーを受け取った瞬間からなの
か、全てのデータを受信し終わった瞬間からなのか…ご教示お願いします。
0985nobodyさん02/05/30 04:19ID:???
>>984
Perl とどう関係あるのか、(略
098698402/05/30 04:32ID:rYtvxDAS
一応、この板はWEBプログラミングということで大丈夫かなあと思いまして…。

「HTTP」でhttp://pc.2ch.net/php/subback.htmlを検索しても余り良さそうな
スレがありませんでした。そうなると、使っている人口が多くてWEBに関わってい
る人が多そうなPerlのスレ…しかも初心者コーナーでありPart12まで続いている
老舗なら…これは行ける!とそう踏んだのですが…。
0987nobodyさん02/05/30 06:09ID:???
>>985
まぁまぁ。単発スレ立てられるよりいいのでは?
どうせ、もう落ちる訳ですし
>>984
Content-lengthを踏まえて推察するに、ヘッダ受信終了時では?
もっとも、C・S共々対応していないと話しになりませんが(w
0988nobodyさん02/05/30 06:36ID:???
>>986

CGIだけど、なんか質問ある? part 6
http://pc.2ch.net/test/read.cgi/php/1019561283/

このスレでいいんじゃない?
0989nobodyさん02/05/30 06:57ID:???
>>988
いや、問題はCGIではなくHTTP1.1かと
0990nobodyさん02/05/30 07:32ID:???
新スレ
http://pc.2ch.net/test/read.cgi/php/1021951436/
0991nobodyさん02/05/30 10:46ID:???
>>984
ドキュメント全部読んでからのはずだが、このくらい自分で実験しろよ。
ヘッダ書き出した後CGIをrefreshまで終了させなきゃ出来るだろ。
0992 02/05/30 10:57ID:???
このスレ、また次を立てるの?
0993nobodyさん02/05/30 13:01ID:???
CGIでj-phoneの絵文字を表示させたいのですが
print "$E$\n";
では、やっぱり表示されませんでした。
何か良い方法ありませんか?
0994nobodyさん02/05/30 13:13ID:???
>>992
立ててみた
【Perl】初心者コーナー Part13
http://pc.2ch.net/test/read.cgi/php/1022731565/

>>993
CGIの質問はこちらへ
CGIだけど、なんか質問ある? part 6
http://pc.2ch.net/test/read.cgi/php/1019561283/
0995nobodyさん02/05/30 16:39ID:???
>>993-994
スマソン 逝ってきます。
099627802/05/30 17:28ID:???
今更だけど、>>278はもうちょい効率良くできた。

$tag_regex_ = q{[^"'<>]*(?:"[^"]*"[^"'<>]*|'[^']*'[^"'<>]*)*(?:>|(?=<)|$(?!\n))};
$str = join '',
    map { /^</ ? map { /["']$/ ? $_ : lc } split /(["'])(.*?\1)/s : $_ }
        split /(<$tag_regex_)/o, $str;
0997nobodyさん02/05/30 23:38ID:???
997
0998nobodyさん02/05/30 23:39ID:???
放置されてるのね・・・。
0999nobodyさん02/05/30 23:41ID:???
もほー
1000nobodyさん02/05/30 23:42ID:???
             / ̄ ̄ ̄ ̄ ̄
       ∧ ∧ <1000です。
       ( ゚Д゚ ) \_____
 ̄ ̄Ψ ̄ (つ_つ_____
 ̄ ̄□∇ ̄\|オツカレサマ...| \
      ̄    =========    \ 
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。