2 :
1 :02/08/08 23:20 ID:???
2げと
4get
5 :
1 :02/08/08 23:20 ID:???
6 :
1 :02/08/08 23:21 ID:???
zusa----------------------------------------------------------------
8 :
1 :02/08/08 23:21 ID:???
9 :
1 :02/08/08 23:22 ID:???
--------------------------------終了---------------------------------
12 :
11 :02/08/08 23:25 ID:???
コテハンは死ね
13 :
11 :02/08/08 23:27 ID:???
香ばしいな
15 :
11 :02/08/08 23:33 ID:???
16 :
11 :02/08/08 23:33 ID:???
17 :
11 :02/08/08 23:34 ID:???
荒れてるな。ぷっ
\ ! |! /::l | | |i |i \ ヽ ヽ ヽ ノ ( \| || !:::i | | |:| !ヽ \ ヽ、 ヽ ヽ \ ⌒ \ |:| |.:.:.:i |i.|! |.:| |:.\ ヾ/ ヽ\ヽ ヽ ヽ | 立 気 | |::|l、 |ノ (.! i|l.| |.:|i i.:.:.\/、\. ヽ:ヽヽ ヽ i | | |: !lヽ|.:⌒:.ヽ ヾ:l !.:.ヽ i..:../\ヽ‐'',..i -', !、. ヽ | | て や | |!‐!-l,\:..:..:ヽヽ:i|:..:..ヽ. i:/..:..;.>,ヾ\i ',l i, ! i ┌── |.i.l i. |``'ヽ、.:.ヾ!.ヽ.:..:.ヽ// ヾ、 ヽ 'X, | | ノ 豆寸 ん す | ヽ ヽ! \.:..\..:..:.//\ ・ \ /.: .i | | ・ ヽ!|l.:.ll/.:ヽ、 /:. :. :. :i | じ く |、 ノ:.:.:.:.:.:.:.:.:.:.:`'''‐----‐'"..:、_, :. :. .i | `''ー----‐''".:.:.:.:.:. :.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:) ( lヽ ── ゃ ス |\:..:..:..:..:..:..:..: , ⌒ / ! |i l二,二l 二ニ=‐ ヽ / | | ! ノ フラ ね レ | |l ヽ\. r ,....._______ /: | | | | !ヽ\ \ヽヽ, ,、 ,、,ィ‐ヽ /::: | l |! | | |l,ヽ ヾ; `i‐、ヽ `´`´__,,,... -─‐''''゙,/::::::: |. | |,i |ヽ| !!! | |、.i \ヽ i i`''ーニ_ -‐‐ ,.、'::::::::::: l i'"i l | | ゾ /, |ヽヽ \、 l | | iヽ._, イ / `ヽ::: , | / |/| ! | / | | ヽヽ \ | l | | | | |/ /| .ヽ / l / / | i | /l l ! \ iヽ | | i | /i | / l | V l/ / i |
20 :
nobodyさん :02/08/09 03:31 ID:bBZPsuqF
ここ(太洋社のコミック発売一覧)
ttp://www.taiyosha.co.jp/comic/comic0209_date1.html にある HTML を LWP::Simple の get を使って取得してみたんですが、
いつもは
@lines = split(/\n/, (get $target_url));
みたいにするとサクっと取得できるのに、このサイトのソースだと
文字列の終端のコードがちょっと違うらしくてうまく split できないん
ですけどどうしたらよいのでしょうか?
色々と試してはみたのですけど、ちょっとよくわからなかったので
ココでお聞きしてみました。
どうぞよろしくお願いします。
>>20 /\x0D\x0A|[\x0D\x0A]/ でどうぞ。
( ゚д゚)ハッ! 立ってる!
( ゚д゚)ハッ! 立ってる! 2
これは use lib './module'; test.cgiに use lib './module'; use module; のように記述するんでしょうか?
25 :
24 :02/08/09 07:08 ID:???
ありがとうございます。できました(´_`)ノ
%hogeというハッシュがあります。 中身は 名無し=> 2 ひろゆき=>5 ネオ麦茶=>3 という感じです。 で、これを値(数字)の大きい順に名前を表示したいんですがどうしたいいでしょうか。
>>26 あらかじめ値がわかってる場合はこうすりゃいいじゃん。
print "ひろゆき\nネオ麦茶\n名無し\n";
>>26 値でソート
sort { $hoge{$b} <=> $hoge{$a} } keys %hoge
>28 ソート出来たら$hogeをどうするんですか?
なんなりとお好きなように
>>29 その質問おかしいだろ。w
print sort { $hoge{$b} <=> $hoge{$a} } keys %hoge;
で確認してみ。
32 :
g :02/08/09 14:48 ID:pPvuKcdo
-------風俗の総合商社・MTTどこでも-------
〇デリバリーヘルス〇デートクラブ〇女性専用ホストクラブ〇
〇ハードSM奴隷クラブ〇レズビアン倶楽部〇ホモ・オカマ倶楽部
〇変態痴女と遊ぶ会〇痴漢・覗き趣味の会〇変態同好会・各種!
●楽しく遊べます! 090-8002-8356番
-----------美男・美女会員など多数在籍中-----------
http://www.mttdocomo.jp/ -----女性アルバイト随時募集・高収入(日払い)月100万円可能住み込みも可
-----レズビアン・スタッフ●ホモスタッフ●女性専用ホストスタッフ同募-----
http://www.mttdocomo.jp/ ------------------------------------------------
ひろゆき 5 ネオ麦茶 3 名無し 2 こういう感じで名前と値を表示させたいんですけど print sort { $hoge{$b} <=> $hoge{$a} } keys %hoge; これだと名前しか出なかったでし。
>>34 Perl昨日始めたばかりのオレでも出来ましたが…。
foreach $i (sort { $hoge{$b} <=> $hoge{$a} } keys %hoge) {
print $i, " " , $hoge{$i} , "\n";
}
>>38 ネタ?君は生まれた時からハッシュを知っていたんだね。素直に感謝しなさい。
>>26 の時点で11:22。
>>38 の時点で15:59。
+ + + + + / ̄\ +. ∧_∧ アハハハ + ノリカエセヨー( ´∀`) (´∀` ) ( つ つ ( つ つ . + ( ヽノ ( ■ノ + し(_) ... し(_)
+ + + + + . /■\ +. ∧_∧ アハハハ + クサーイヨー( +∀+) (´∀` ) ( つ つ ( つ つ . + ( ヽノ ( ヽノ + し(_) ...し(_)
+ + + + + アハハハ . +. ∧_∧ / ̄\ 本体カエセヨー (´∀` )(/⌒ヽ__) ヽ■ノ (つ つ| | . + ノ\ ( ヽノ .| ∪ + し(_) しし′
母「おい、おまいら!!夕食ができますた。リビングに集合しる!」 父「詳細キボーヌ」 母「今日はカレーですが、何か?」 兄「カレーキターーーーーーーーー」 妹「キターーーーーーーーーー」 姉「カレーごときで騒ぐ奴は逝ってヨシ」 母「オマエモナー」 父 --------終了------- 兄 --------再開------- 妹「再開すなDQNが!それより肉うpキボンヌ」 母「ジャガイモうp」 姉「↑誤爆?」 兄「タマネギage」 父「ほらよ肉>家族 」 妹「神降臨!!」
ん?
オワッタ… ;y=ー( ゚д゚)・∵. ターン \/| y |)
ヽ(`Д´)ノ
子yってんkjさgbfひあhしおdに絵得ん!
$value =~ tr/+/ /; $value =~ s/&/&/g; $value =~ s/"/"/g; $value =~ s/</</g; $value =~ s/>/>/g; $value =~ s/,/¸/g; これを短く書きたいんですが何かありますでしょうか?
訂正 $value =~ tr/+/ /; $value =~ s/&/&amp;/g; $value =~ s/"/&quot;/g; $value =~ s/</&lt;/g; $value =~ s/>/&gt;/g; $value =~ s/,/&cedil;/g;
50 :
nobodyさん :02/08/09 22:38 ID:84ebYeoV
連邦のゲットニュースみたく別鯖のデータを読むのには、perlでどうやればいいでうか?
LWP
52 :
親切な人 :02/08/09 22:53 ID:???
>>49 そんなの短くできないって。あきらめなさい。
と言いつつトライ。
$value=~s/[\+&"<>,]/($t=index'+&"<>,',$&)?'&'.qw(amp quot lt gt cedil)[$t-1].';':' '/eg;
これ以上無理かな…
54 :
:02/08/10 00:46 ID:???
>>49 わけたままのほうが圧倒的に処理が速いぞ。
と言いつつ
>>53 のバグフィックス&処理速度向上版
$value=~s/\+|([\+&"<>,])/$1?'&'.(qw(amp quot lt gt cedil))[index'&"<>,',$1].';':' '/eg;
>>49 ソース短くしたら処理が早くなるわけじゃないぞ
正規表現あたりは激しく可読性に影響が行くから
>>53 >>54 が言ってるとおり素直にそのままにしとけ
#俺は厨だから
>>54 のをさらに改良したりとかできん
#てか、もう読めません・・・(;´Д`)
56 :
54 :02/08/10 03:11 ID:???
余計な部分消し忘れてた $value=~s/\+|([&"<>,])/$1?'&'.(qw(amp quot lt gt cedil))[index'&"<>,',$1].';':' '/eg;
トリッキーコードスレか?厨房心満載で参加しちゃうぞ〜?
とりあえず、(cedilはいらんだろう)
$value=~s/([\+&"<>])/$1 eq '+' ? ' ' : '&'.{qw(& amp " quot < lt > gt)}->{$1}/eg;
無名ハッシュと+を外に出せばそこそこ速くなるんじゃ無いだろか?
%slist=qw(& amp " quot < lt > gt);
$value=~tr/+/ /;
$value=~ s/([@{[join '', keys %slist]}])/'&'.$slist{$1}/eg;
か、もっと素直に、
$value=~s/$_/'&'.$slist{$_}/eg for keys %slist;
どっちにしろ
>>49 のままの方が速いだろうが、、
んで最終的にはこれを勧めておく。
use HTML::Entities;
$value=~tr/+/ /;
encode_entities($value,'"<>&');
58 :
54 :02/08/10 03:35 ID:???
>>57 >とりあえず、(cedilはいらんだろう)
条件を勝手に変えては・・・
エンティティ文字だから末尾の ; が無くては・・・
>@{[join '', keys %slist]}
この部分は典型的な処理おそーだから・・・
>$value=~s/$_/'&'.$slist{$_}/eg for keys %slist;
ハッシュキーをまわすと & が出現する順番によっては整合性が・・・
>>54 すまんのうつっk見どころ満載だったな。
> 条件を勝手に変えては・・・
> エンティティ文字だから末尾の ; が無くては・・・
$value=~s/([\+&"<>,])/$1 eq '+' ? ' ' : '&'.{qw(& amp " quot < lt > gt , cedil)}->{$1}.';'/eg;
> この部分は典型的な処理おそーだから・・・
ここは一回しか評価されないので速さにはほとんど影響しないだろう。
が、
> ハッシュキーをまわすと & が出現する順番によっては整合性が・・・
を忘れとったよ。
@slist{@k=qw(& " < > ,)} = qw(amp quot lt gt cedil);
$value=~tr/+/ /;
$value=~ s/([@{[join '',@k]}])/'&'.$slist{$1}.';'/eg;
か、
$value=~s/$_/'&'.$slist{$_}.';'/eg for @k;
なら文句無いか?
あと encode_entities($value,'&"<>,'); ね。
60 :
20 :02/08/10 04:07 ID:2iXM5pV6
>>21 さん
遅ればせながらありがとうございました。
おかげさまで無事に綺麗なHTMLを取得できましたー。
>>どっちにしろ
>>49 のままの方が速いだろうが、、
>>んで最終的にはこれを勧めておく。
>>use HTML::Entities;
>>$value=~tr/+/ /;
>>encode_entities($value,'"<>&');
>>49 のと↑だとどっちが早いんですか?
>>61 encode_entities()のなか見てないからわからないけど
多分どちらも大して変わらないだろう。
てかね、Perlで速さを求めないでください。
速くしたいならCね
namco swap ↓ ↓ n a m c o m a n c o manco (・∀・)マンコー
誰かデバッグして。 $f=$d?-1:1;$D=pack('C*',33. .86);$p=shift; $p=~y/a-z/A-Z/;$U=~s/( . *)U$/U$1/; $D=~s/U( . )/$1U;';($V=$U)=~s/U/V/g; $p=~s/[A-Z]/$k=ord($&)-64,&e/eg;$k=0; while(<>){y/a-z/A-Z;y/A-Z//dc;$o.=$_}$o.="X" while length ($o)%5&&!$d; $o=~s/.chr(($f*&e+ord($&)-13)%26+65)/eg; $o=~s/X*$//if$d;$o;$o=~s/.{5}/$&/g; print"$o|n";sub v{$v=ord(substr($D,$_{0}))-32; $v>53?53:$v} sub w{$D=~s/(.{$_{0})(.*)(.)/$2$1$3}} sub e{eval"$U$V$V";$D=~s/(.*)([UV].*[UV])(.*)/$3$2$1/; &w(&v(53));$k?(&w($k)):($c=&v(&v(0)),$c>52?&e:$c)}
読むのすらいやになる。
$_='while(read+STDIN,$_,2048){$a=29;$b=73;$c=142;$t=255;@t=map{$_%16or$t^=$c^=(
$m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t^=(72,@z=(64,72,$a^=12*($_%16
-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271);if((@a=unx"C*",$_)[20]&48){$h
=5;$_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$
d=unxV,xb25,$_;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d
>>8 ^($f=$t&($d
>>12 ^$d
>>4 ^
$d^$d/8))<<17,$e=$e
>>8 ^($t&($g=($q=$e
>>14 &7^$e)^$q*8^$q<<6))<<9,$_=$t[$_]^
(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eval
モジュールの質問なんですが、 &print($logfile,@data); とやって sub print { open(DATA,">$_[0]") || exit; print DATA $_[1]; } ってやるとうまく書きこめません。 $logfileはログファイルの場所→ $logfile = "./log.dat"; @dataには記事のデータが。中身はだいたいこんな感じです↓ $data[0] = "2<>test<>名無し<>test<>0123<>\n"; $data[1] = "1<>test<>名無し<>test<>0123<>\n"; どうすればうまく↑のようなやり方で書きこめるでしょうか? つまり@dataの中身をサブルーチンprintに受け渡したいのですが、、
>open(DATA,">$_[0]") || exit; print DATA $_[1]; これの意味がわかってやってんだろうな。
あ・・もしかしたら・・・ハッ(゚д゚)!
71 :
68 :02/08/10 19:44 ID:???
open(DATA,">$_[0]") || exit; print DATA $_[1]; こうやってみたんですがどうも。。 open(DATA,">$_[0]") || exit; print DATA $_[1]; 一行目でlog.datを書きこみ専用でオープンしてもし開けなかった場合はexit 2行目でファイルハンドルDATAに$_[1]の中身を書きこんでるんですよね? $_[1]に@dataの中身をいれたいんですがどうも配列の先頭要素しか受け渡しできませんでした。 @_[1]にもしてみたんですがうまくいきませんでした・・ どうやれば配列を受け渡せるのでしょうか?
72 :
68 :02/08/10 19:49 ID:???
なんとなくわかったかも・・ ちょっと渡来してみます
いくつか思ったこと。 どこがモジュール? サブルーチンにしなくてもいいんじゃないか?
74 :
68 :02/08/10 19:54 ID:???
できました
>>73 たしかにそうなんですが何回か読み書き作業をするので行数がかさんできたため
モジュールに、、サブルーチンとかパッケージ化でもよかったんですが
モジュールが一番よさそうだったので・・
あと趣味で作ってるので使いまわしするのでできるのは全部モジュール化しといたほうがあとでらくかなーと思いまして・・
$input 内に、URLがいくつ含まれるか数える方法を教えてください URLはタグ等で囲まれたりしていません
split(/$uri_pattern/i,$input) - 1;
78 :
nobodyさん :02/08/10 23:09 ID:0iqc1GSZ
初心者です。自分のHPに掲示板置いたのですけれども(たとえばYYボード) 次回書き込んでも名前やアドレスや文字の色が記録 されません。どうやるのですか?
>>78 Cookieの設定ができてない。
板違いです
80 :
コギャルとHな出会い :02/08/10 23:15 ID:FTkfInMw
http://kado7.ug.to/net/ 朝までから騒ぎ!!
小中高生
コギャル〜熟女まで
メル友
i/j/PC/対応
女性の子もたくさん来てね
おこずかいの欲しい女の子もたくさん来てね!!
全国デ−トスポット情報も有ります
81 :
ど厨房 :02/08/10 23:41 ID:???
フリーウェアなどをDLする時にoctetstreamが無い!のようなエラー表示が出て 困ってます。でMSのactiveXギャラリーに行けと言う表示が出たので行ってみ たけど何をDLしていいのか・・罵倒覚悟です。誰か教えてください・・・
82 :
nobodyさん :02/08/11 02:25 ID:uMk9XU0w
>>81 PERLと関係あるのか?
漏れが無知なだけか
83 :
nobodyさん :02/08/11 11:47 ID:U9P8YsFW
WEBで落としたチャットCGIをいじってます。 書き込み時にログに記録されたIPを、そのままHTML出力に表示させたいのですが、 全部の行が今の自分のIPになってしまいます。 $ad = $ENV{'REMOTE_ADDR'}; とCGIに記述して、 表示させたい部分に$adを埋めるだけじゃダメなんですか? IP表示ができるCGIを落として解析しても、同じような記述しか出てこないもので。 ex) print (($ENV{'REMOTE_HOST'}) ? $ENV{'REMOTE_HOST'} : $ENV{'REMOTE_ADDR'}); ex) if($sw_host==1){ print "<FONT SIZE=$moji1 COLOR=\"$DTcolor\">\n"; print "$date<BR>$ip $host\n"; print "</FONT>\n";
>>83 それだけじゃ答えようがあまりないが、とりあえず
リモホを取得したらログに保存しないとだめぽ。
85 :
nobodyさん :02/08/11 12:32 ID:U9P8YsFW
>>84 ログには保存しているんです。
ただ、HTML出力のソースを見ると、
>>83 のように、
$ENV{'REMOTE_ADDR'}; したものを$adみたいにして出力するような記述なんですね。
ログから引っ張ってるような記述が見当たらない…
87 :
85 :02/08/11 12:41 ID:U9P8YsFW
KENTWEBの WINDY CHAT でテストしてたんですが、これの場合、 # IPアドレスを取得 $addr = $ENV{'REMOTE_ADDR'}; if ($name eq "") { $name = $addr; } して unshift (@lines,"$date<>$n_name<>$n_email<>$com<>$n_color<>$addr<>\n"); つまりログには保存されています。 これがなぜ、吐き出しになるとだめなのか、今やっとわかりました。 # ログを展開 open(IN,"$logfile") || &error("Open Error : $logfile"); while (<IN>) { $head = $point; local($date,$name,$mail,$com,$color,$ip) = split(/<>/); $addrとすべきところを故意に$ipとして吐き出さないように記述してあったからみたいです。
最後の一行に激しい勘違いがあるようだが、、、
89 :
85 :02/08/11 13:15 ID:U9P8YsFW
もう一個のCGIでもテストしましたが、 こちらはDBファイルのデータがタブ区切りで、読み出しもただ変数を羅列しているため、 その順番どおりに表示するようになっていました。 もともとIPは記録しない仕様のため、適当にタブの間にIPを付け足したのが間違いで、 読み込みの順番どおりにDBファイルのタブ区切りを修正したら表示されるようになりました。 俄然perlが面白くなってきますたよw
90 :
85 :02/08/11 13:16 ID:???
「吐き出さないように記述してあった」って書き方がひっかかっただけ。 スクリプトはちゃんと吐き出してる。$ipとして。
92 :
85 :02/08/11 14:09 ID:???
>>91 そうですね。DBが空だから表示はされないけど処理はされてるんですよね。
語弊があったようです。
93 :
nobodyさん :02/08/11 16:05 ID:wwIT5eGL
http://php.s3.to/bbs/up/img/014.txt このスクリプトなのですが、時間設定で
sprintfを使わずに、
if ($month < 10) { $month = "0$month"; }
if ($mday < 10) { $mday = "0$mday"; }
if ($sec < 10) { $sec = "0$sec"; }
if ($min < 10) { $min = "0$min"; }
if ($hour < 10) { $hour = "0$hour"; }
としたり、
($sec_t,$min_t,$hour_t,$mday_t,$mon_t,$year_t,$wday_t,$yday_t,$isdst_t) = localtime(time + 7*24*60*60);
($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg) = gmtime(time + 30*24*60*60);
という風にlocaltimeとgmttimeを使い分けたりする意味はあるのでしょうか?
前者は処理が早くなるとか・・・?
オシエテクダサイ
>>95 他の部分もそんな感じでしょうか?
じゃ、使わない方がいいですかね・・・
そりゃ自分で決めれ。
アフォコードでも動けばいいんじゃないですか そうでもないものなんですか
98ですが96の方ではありません
つか use strict してない時点でクソ確定。
101 :
お願い! :02/08/11 19:56 ID:5quTF2lD
2ch2ch2ch というテキストを 2ch 2ch 2ch というように改行させたいです。 テキストエディタの置換機能で「2ch」→「2ch\r\n」としたら、 2ch\r\n2ch\r\n2ch\r\n となってしまいますた。 テキストエディタで改行するのって無理ですか? ActivePerl入れなきゃだめかな?
あほだ。
掲示板に、〜日以内に更新されたらNEWを付けるようにしたいのですが たとえば7日以内としたら #!/usr/local/bin/perl $times=書き込み時のtime; $limit=7*60*60*24; $now=time; $limit_time="$now-$limit"; print "Content-type: text/html\n\n"; if($times>$limit_time){print"NEW";} でいいと思うのですが、上手くできませんでした。 ヒントを頂けないでしょうか?
>>103 $times が当時の書き込み時間で
$now が現在の時間なんでしょ?
だったら
$now - $times
で何秒たったか分かる
たとえば$nowに110000がはいってて$timesに100000がはいってれば
その差は10000秒になる
んでこれと$limitを比べればいいんでないの?
>>104 上手くできました。
ありがとうございましたヽ(゚∀゚)ノ三≡
106 :
nobodyさん :02/08/11 22:53 ID:QpOp3e8Y
掲示板スクリプトで、ファイルを読みこんで表示する場合に、 whileで回す方法と、配列に一気に読んでforeachで回すのとでは メモリは食うけど、foreachで回すほうが処理は速いんですかね? それともwhileで回す方法が速い?
速いほうがいいのならシステムコールを直で叩くsysreadだろう。でも初心者には 使いこなせるかな? readでも使ったら?
知ったか警報!
110 :
nobodyさん :02/08/12 01:49 ID:y1lt6txe
ゆいぼっとについて相談があります。 ブラウザに記憶される名前が変になります。 ひろゆき、だとしたら、「ひろゆき_30__checked_red_30_8/12(月)1:30_2_checked_」 どうも、リロード時間や文字色等の情報まで全部ついてきてしまってるようで… これは固有のバグでしょうか。
改造間違いの可能性。
112 :
nobodyさん :02/08/12 02:02 ID:y1lt6txe
>>110 でも、他サイトの無改造のゆいぼっとにクッキー全部消去してからお邪魔して
退室したあとにまた入室画面で名前欄を見ると同じようになってるんですよ。
113 :
110 :02/08/12 02:11 ID:y1lt6txe
クッキー処理の部分 なぜ、 \t で区切ったものが、吐き出されるときに _ に変わってるんだろう。 sub getcookie{#くっきーを頂きます。 $cooks = $ENV{'HTTP_COOKIE'}; $cooks = '' unless($cooks =~s/.*yuidata=(.*)yuiend.*/$1/); ($name,$reload,$email,$mode,$color,$window,$lastdate,$count,$autoclear) = split(/\t/, $cooks); $histry = "$count回目:LAST LOGIN:$lastdate" if($lastdate); if(!$count){#くっきー情報の無い場合のデフォルト値 $reload = 30; $mode = 'checked';$color = 'red'; $window = 30; $count = 1;$autoclear = 'checked'; } }#getcookie END sub setcookie{#くっきーをブラウザにプレゼントします。 local($dmy,$mdc,$monc,$yrc,$wdayc,$mc,$yc); ($dmy,$dmy,$dmy,$mdc,$monc,$yrc,$wdayc,$dmy,$dmy) = localtime($times + 7776000); $yc = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') [$wdayc]; $mc = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec') [$monc]; $yrc = $yrc+1900;$mdc = "0$mdc" if ($mdc < 10); $count++; $data = "$name\t$reload\t$email\t$mode\t$color\t$window\t$date\t$count\t$autoclear\tyuiend"; $data = 'yuiend' if($FORM{'cook'} ne 'ok'); print "Set-Cookie: yuidata=$data; expires=$yc, $mdc-$mc-$yrc 00:00:00 GMT\n";
タブってデータとして、許されてたっけ?
115 :
110 :02/08/12 02:41 ID:y1lt6txe
とりあえず、\t が_ になってしまうならと = split(/\t/, $cooks); を = split(/_/, $cooks); にしてしまったらうまくいきました。 しかし、環境依存でバグが出るかもしれませんね。 UNIXやMACのクッキーはよく知らないんですが。
116 :
110 :02/08/12 02:47 ID:y1lt6txe
本当にIEのバグかね。 IEが正しくて、ほかが間違ってる んなこたぁない。IEが間違えてることの方が多い。
118 :
110 :02/08/12 03:02 ID:y1lt6txe
やはりIE6固有のトラブルみたいです。ネスケ4.7では元々の仕様で問題なく、 IE6にあわせた修正をしたバージョンでは逆にトラブルになりました。 区切りを本当に_ にしたがダメ。区切りとsplitを, であわせたところ、 IE6、ネスケともにトラブルは収まりました。 MS、恐るべし…
119 :
nobodyさん :02/08/12 03:05 ID:VEDKxtaL
>>117 違うな
IEが間違ってて、そのCGIも間違ってる。
そして仕様と言い張る。
つまりネスケ4.7がわるかったと。 まぁ、CSSもネスケ4.7が悪い品。
120嫁、IEが悪い?ネスケが悪い? いえいえ悪いのはオマエの頭だけです
pu
ユーザーIDと パスワードを入力して 認証してOKならページ移動 の処理を作成中なんッスけど 認証のためのデータをあるファイルから 参照してハッシュを使ってIDをキーにして パスワードをデータにして、 IDを比較するのはOKなんッスけど、 パスワードの比較はどうしたらイイんでしょうか? ようはキーの中身の比較っすね
ageて逝きまっしょい
マルチか。
その疑いありで
>>125 なしてハッシュ使ってそんなめんどくさい事わざわざやって
認証するのかわからん。
要素が3つあるのにハッシュを使う意味がわからん
正規表現で、 _[a-e] が特定のスカラーにいくつ含まれるか検査したいんですがどうすればいいですか
$n= $_=~ s/(_[a-e])/$1/g;
133 :
:02/08/13 00:05 ID:???
CokkieがOffだったら指定のページに飛ばす …そんなcgiってありますか? もしあったら、参考になるサイト、もしくはプログラムを お教え下さい。
マルチか。
136 :
nobodyさん :02/08/13 01:31 ID:/aTNrvJI
うちのサイトに置いたファイルのダウンロード数を カウントするスクリプト、どっかに落ちてますか? 別に自分で見れればページに表示するつもりはないです。
考え方としては、 スクリプト開始時に自前のcookieを発行→直後それを照合出来ればcookie有効、出来なければcookie無効と見なして弾く。 そう難解でもないかと>133
>>107 ちょっと時間が空いたので,1行200bytes(+crlf)の500行で約100kb程度のファイルをメモリに読み込むテストを行いました.
test1 @a = <FILE>と一度に全て読み込む.
test2 whileでループして1行ずつ読み込む.
この処理を500回ループして,経過時間を計りました.
結果.
TEST1: 39 wallclock secs (38.23 usr + 0.00 sys = 38.23 CPU) @ 13.08/s (n=500)
TEST2: 36 wallclock secs (35.86 usr + 0.00 sys = 35.86 CPU) @ 13.94/s (n=500)
と,微妙にtest2の方が効率が良いと出ました.
以下が実際に使用したソースです.
141 :
nobodyさん :02/08/13 15:47 ID:0NNEcJ22
#!/usr/bin/perl use Benchmark; my $count = 500; sub test1{ open(FILE,'test1.data'); my @a = <FILE>; close(FILE); } sub test2{ open(FILE,'test2.data'); my $a = $_ while(<FILE>); close(FILE); } @t = timethese($count,{ 'TEST1' => '&test1;', 'TEST2' => '&test2;', });
142 :
nobodyさん :02/08/13 15:57 ID:0NNEcJ22
つまり, foreach 文は ・扱うデータ量が少なく,ファイルをすぐに閉じたい場合. ・同じデータを繰り返し使用する場合. while 文 ・データ量が大きく,配列を生成すると莫大なメモリを使用してしまう場合. ・データの1部分だけを必要とし,無駄なデータを読む込みたくない場合. という事でした.
143 :
nobodyさん :02/08/13 21:45 ID:Q5/MwQBf
ベンチマークを適切に使えるようになりましょう。
>>142 ループの種類と処理内容とは、なんの関係もないから恥を晒すのは・・・
146 :
nobodyさん :02/08/14 00:26 ID:LHt/Hq/v
おながいしますm(__)m(ペコリ) ある変数をサブルーチン名に代入したりできるのでしょうか? &サブルーチン名=変数; みたいにしたいのです 例えば &hazime というサブルーチンを使いたい時 &(ココの書き方が分かりません)=$hazime; みたいのことができるのでしょうか?
できる。 $count = &con();
148 :
147 :02/08/14 00:31 ID:???
わりぃ。解釈間違えた。
&$value;
あのー、ネットでこんなの拾ってきたんすが、 なんでしょかね?これ?? #!/usr/bin/perl-s $f=$d?-1:1;$D=pack('C*',33. .86);$p=shift; $p=~y/a-z/A-Z/;$U=~s/( . *)U$/U$1/; $D=~s/U( . )/$1U;';($V=$U)=~s/U/V/g; $p=~s/[A-Z]/$k=ord($&)-64,&e/eg;$k=0; while(<>){y/a-z/A-Z;y/A-Z//dc;$o.=$_}$o.="X" while length ($o)%5&&!$d; $o=~s/.chr(($f*&e+ord($&)-13)%26+65)/eg; $o=~s/X*$//if$d;$o;$o=~s/.{5}/$&/g; print"$o|n";sub v{$v=ord(substr($D,$_{0}))-32; $v>53?53:$v} sub w{$D=~s/(.{$_{0})(.*)(.)/$2$1$3}} sub e{eval"$U$V$V";$D=~s/(.*)([UV].*[UV])(.*)/$3$2$1/; &w(&v(53));$k?(&w($k)):($c=&v(&v(0)),$c>52?&e:$c)}
152 :
nobodyさん :02/08/14 14:31 ID:8dp0qhB8
ssendmailでHTML形式のメールを送信したいのですが、 HTMLソースをHTML形式のメールに変換するスクリプトをご存知ないでしょうか? HTML形式のメールは、HTMLソースがそのまま本文中に書いてあるのだと ばかり思ってましたが、MHTMLとかいう形式があるようで・・・
154 :
nobodyさん :02/08/14 14:56 ID:8dp0qhB8
>>153 リンク先は「まぁ、またお前は騙されたわけだが・・・ 」というスレッドです。
156 :
nobodyさん :02/08/14 22:41 ID:dH0XveEg
教えて下さい。 ------------------------- #!/usr/local/bin/perl print"Content-type: text/html\n\n"; print "購入申し込み"; ------------------------- と書いて実行すると、 ------------------------- 購入垂オ込み ------------------------- と表示されてしまいます。 どうしてでしょうか? 何か基本的なことを間違えてるのでしょうか。
EUCでかくか \ を途中に入れろ。
>>156 157じゃないけど、具体的には「申」のあとに\を入れろって事。
申\し込み
なぜこうなるかというと、「申」のShift-JISでの2バイト目が'\'(0x5c)だから。
一週間をビットをたててフラグにしようと $a = 1 << 2 としてみました 00000100 になると思ってたんですが unpack("B*",$a) としてみたら 00110100 となっていました 上4ビットはなんなんですか
>>160 そのとおりですね・・・
質問間違ってました
なんでもASCIIになってしまうのか聞きたかったんです
162 :
156=154=152 :02/08/15 01:27 ID:5Zkc/vw2
>>157 EUCに変換して解決しました。
ありがとうございました。
>>158 分かりやすい解説ありがとうございます。
勉強します。
152の問題も解決しました。
スクリプトは見つかりませんでしたが、
Content-type: multipart/alternative;boundary="--- ・・・
を付けて、テキスト部分とHTML部分を区切るだけで出来ました。
ありがとうございました。
smile-seikun_gogo/
[email protected] smile-seikun_gogo/
[email protected] http://rating.auctions.yahoo.co.jp/jp/show/rating?userID=hidekurokawa&filter=-1 評価: 非常に悪い 落札者です。評価者は manaboon2001 (21)
IBM Deskstar ATA100/60GB 7200rpm 送料込み!! (6月 9日 23時 14分)
出品者は「 非常に悪い 」と落札者を評価しました。
コメント:取引終了後、1週間のうち私から3度メールでご案内しても何も返事がありませんでした。
お前はブラックリスト入りだ!! (6月 15日 23時 7分) (最新)
評価: 非常に悪い 落札者です。評価者は goodnanews (2)
デジタルミキサー Fostex VM04 (11月 11日 5時 49分)
出品者は「 非常に悪い 」と落札者を評価しました。
コメント:一方的な理由でキャンセルされました。自分が落札した商品には責任を持って対処してください。 (11月 14日 12時 36分) (最新)
評価: 悪い 落札者です。評価者は gtak55 (42)
FOSTEX☆MN06☆6チャンネルミキサー (10月 17日 5時 9分)
出品者は「 悪い 」と落札者を評価しました。
コメント:キャンセルの理由が納得いきません。落札したものはどんな理由があれ責任を持って購入すべきではないでしょうか?
(10月 18日 23時 48分) (最新)
評価: 非常に悪い 落札者です。評価者は hiroalive2000 (35)
定価98000円のスーパーリズムマシンプラス・メモリー9800円あわせて12000円即決 (9月 19日 2時 23分)
出品者は「 非常に悪い 」と落札者を評価しました。
コメント:最悪です。何度連絡してもメールくれません。完璧な無視です。多分オークション二酸化しないほうがいい人
ですからこんな人は注意してください。みなさん。 (9月 24日 19時 33分)
コメント:これかいたらすぐに返事がくるんですよ。こういうやつがふえてるんで・・・。
今まで完璧な無視してきたらこうかかれると私にしつこいとか言ってもんくつけるんですよ。すいそくですが・・・・
日ずけ見て下さったら皆さんわかると思います。 (9月 24日 19時 36分) (最新)
はじめまして。外部からあぷされた画像を呼び出した場合TOPに移動するように したいのですがどのようにしたら良いのでしょうか
はい。たしかに学生なので文章能力ありません。これで分かりますか?
http://www.cj-c.com/cgi_s/upb.htm (UPP BORD)
を設置してるのですがあっぷした画像のみを他サイトの掲示板で
転載されて困ってるので他サイトからあぷされた画像を閲覧した場合
自分のHPのTOPに飛ぶようにしたいのです。
あっぷされた画像直リンの場合弾きたいということです。
どうか方法教えてください
>>166 画像の直リンク防ぎたいなら .htaccess の出番かと
「.htaccess 画像 制限」 こんな感じのキーワードで
googleで検索すれば解説してるサイトみつかるべ。
これ以上はスレ違いなので、あとはご自分で・・・
168 :
エロ助 :02/08/15 11:32 ID:h1WzO6+x
マルチは放置。
画像のアップローダーでアップロードされた画像の 縮小画像を生成したいんですが、 私の知っている方法ではroot権限の関係で共有スペースでは不可能なのですが root権限の関係無しに縮小画像を生成する方法はありますか?
>>170 / ̄ ̄ ̄ ̄ ̄ ミ
/ ,――――-ミ
/ / / \ |
| / ,(・) (・) |
(6 つ |
| ___ | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| /__/ / < HTMLでできるだろ!
/| /\ \__________
173 :
170 :02/08/15 17:21 ID:???
>>172 ありがとうございました!
じっくり読んでみます!!
174 :
アップローダを作り隊 :02/08/15 18:04 ID:OdAnllx3
ファイルアップローダを作りたい、と思うこの頃ですが、 どうもわからんのです。 フリーのアップローダのソースを見ても掲示板とかが邪魔で 肝心のアップローダの仕組みがわからず。。。 perlのリファレンス本を何冊か読んでも、 何をアップローダに使えばわからず。。。 どうか皆様、この私にアップローダの「ア」の字くらいを教えてくださいませんでしょうか。
175 :
170 :02/08/15 18:24 ID:???
2<>コメント 3<>コメント 1<>コメント ログファイルにこういう形で保存されいて 1 2 3の中のもっとも大きい数字を求めるにはどうすればいいのでしょうか?
>>175 数値は比較するとその大小関係がわかります。
177 :
170 :02/08/15 18:40 ID:???
すみません理解できました。
教えるまでもなくアの字なら知ってるじゃん
180 :
アップローダを作り隊 :02/08/15 19:52 ID:OdAnllx3
>>179 スマソ。やっぱりわからんです。
設定するところをして、CGI対応のサーバーにアップしたのですが、
ファイルサイズがやけに小さくなって、しかも開けず。
自分のPCにApache入れてるんですが、それでも同じ結果です。
他のアップローダーもファイルサイズが同じように小さくなります。
ちなみにJPGファイル。
対応してるはずなんですが。。。
アップローダー十個くらい試してみたのですが、全滅です。。。
設定がいけないんでしょか?
>>180 スマソ。さっぱりわからんです。
とりあえず設定後のスクリプトを晒してごらん。
どのあぷろだでも同じならブラウザ壊れてるんじゃない?(^^; バグの原因が判らないなら3〜4種のブラウザで再現するかどうか見れ。
183 :
アップローダを作り隊 :02/08/15 20:17 ID:OdAnllx3
184 :
アップローダを作り隊 :02/08/15 20:17 ID:OdAnllx3
186 :
アップローダを作り隊 :02/08/15 20:57 ID:OdAnllx3
>>185 そ。。。そうなんですか?
ちなみにスペース借りてるサーバーがWindows2000なんですが、
それも関係あるんでしょうか?
文字化けも激しいのですが。。。
win2k にも binmode() って必要なのかな?
>>186 それを先に言(以下略
unixを想定して作られてるんだろうからunixで使えば?
189 :
アップローダを作り隊 :02/08/15 21:24 ID:OdAnllx3
190 :
アップローダを作り隊 :02/08/15 21:29 ID:OdAnllx3
>>188 もともとソースファイルを参考にして自分で作ろうと思ってるので、
できれば
>>183 のソースファイルの何行目あたりが大事だぞ、とかだけでも言っていただけないでしょか?
ほんと聞いてばかりですみませんです。
携帯で画像をアップロードする方法を教えてください。
193 :
アップローダを作り隊 :02/08/16 00:09 ID:kDsvONdE
>>191 今ソースファイルをわかり易く?まとめてるので、
binmodeを使うべきところがわかったら試してみようと思ってます。
使い方はわかったのですが、今までbinmodeというのは知らなかったので。。。
cgi-lib.plライブラリを使った方が早いんじゃないの。 CGI.pmでもいいけど。
質問を眺めていると、デリミタに<>を使っているものが多いんだけど、これは何でで しょうか。普通:じゃないですか?
198 :
nobodyさん :02/08/16 17:45 ID:gz1h7SNU
>>195 :をエスケープしないで済むからだとおもわれ。
タグを許可しなければ<>が入力されてくることはないので都合がよい。
おれは \t だなぁ。 ていうかこれが普通だと思いこんでいたけど。
ふつー\0でしょう セパレータに2バイトも使うとは愚の骨頂ですね \t ?? はつみみです
201 :
アップローダを作り隊=193 :02/08/17 04:09 ID:17AkwzDg
ソースファイルを何度も変えて試したのですが結局うまくいかず、
それならばと、書店に行って「大人のCGIスクリプト」という本を買って
そこに出ている「ホームページにファイルをアップロードする」というところを
参考にしました。
それで、とりあえず本に載っているソースをそのまま書いて試したのですが、
うまくいきません。…つД`)
もうどうしていいのかわからないのですが、
本に載ってたものをそのまま書いたソースファイルをアップしておきましたので、
もし見て何かわかることがありましたら、どうかお願いします。
http://ruffnex.oc.to/ipusiron/upload/1178.zip 状態として、CGI自体はエラーもなしに動くのですが、
ファイルがまったくアップロードされません。
1バイトもファイルが作られないので、何か決定的な間違えがあると思うのですが。。。
あと32行目当たりのコメントの後ろに「$bound =~ s/…」とあるのですが、(本がその通りに書いてあったので)
これは本来コメント部分なのか、それとも間違えてコメントの部分に書かれたものなのかがよくわかりません。
202 :
アップローダを作り隊=193 :02/08/17 04:12 ID:17AkwzDg
付け足しなのですが、 本には”アップロードされたファイルは「./filepost/」というディレクトリに保存される。” と書かれたありました。
「./filepost/」がパーミッション間違えてたりしてナ。
204 :
アップローダを作り隊 :02/08/17 10:12 ID:17AkwzDg
>>203 パーミッションは755ではダメですか?
CGIスクリプトからの書き込みとパーミッションって関係ないと思ってたのですが。。。
あと、前述したのですがNTサーバーなのでパーミッションが変更できないのです。
(NTサーバーだから変更できないわけじゃないかもしれませんが、借りてる鯖は変更できません)
やっぱりパーミッションは777がいいのでしょうか?
205 :
195 :02/08/17 13:13 ID:???
なるほど。漏れはCGIじゃなくて普通にUNIX鯖でperlアプリを書いているので、 CGIの流儀には詳しくないんだ。スマソ。
>>204 >> パーミッションは755ではダメですか?
>> CGIスクリプトからの書き込みとパーミッションって関係ないと思ってたのですが
ええと、不特定の人がファイルをうpするんですよね。うp = 書きこみですから、
ファイルを保存するディレクトリに誰でも書きこめるようにしておかないと駄目です
よ。755なら所有者しか書きこめません。
って、これはUNIX鯖の話で、NTのことは分かりません。でもパーミッションが変更で
きなかったら使いものにならないような気がしますが...
if ($ENV{'REQUESTMETHOD'} eq "POST"){ まずはここから ⇒ REQUEST_METHOD
208 :
207 :02/08/17 14:28 ID:???
sub fileget{ if ($ENV{'CONTENT_LENGTH'} > 5050000){exit;} binmode(STDIN); # 追加 #ファイル名、区切り文字「バウンダリ」の取得 while (<STDIN>){
209 :
207 :02/08/17 14:30 ID:???
if (open(OUT, "> ./$fname")){ binmode(OUT); # 追加
連続した番号(例えば1から100まで)を ランダムに並び換えて(シャッフルして)出力するにはどうすればいいですか?
212 :
アップローダを作れ隊 :02/08/17 17:34 ID:17AkwzDg
>>207 で、で、で。。。できますた〜。つД`)
if ($ENV{'REQUESTMETHOD'} eq "POST")のところは
後で自分で気付いて「バカだな〜」と思ったのですが、
それ直しても全然できなくて。。。
バウンダリというものが、検索かけてもいまいちイメージがわかないのですが、
きっとそのうち自分で勉強して理解できるようになります!
本当にわざわざソース見て、指摘してくださってありがとうございます。
二日間ほとんど寝ずに頑張った甲斐がありました。
いつか初心者コーナーで答えられるようになって帰ってきます。
本当にありがとうございました。
>>206 NT鯖がどうなのかよくわからなかったのですが、
パーミッション755で無事アップロードできました。
そもそもパーミッションってあるのかな?っと思いました。
>二日間ほとんど寝ずに頑張った 案外、これが重要だったりする。
214 :
??? :02/08/17 18:07 ID:mpsXRrac
本当の初心者なんですが、 サイトなどを見ながら、cgiの勉強しはじめたんです。 で、何か、perlを落として来いって書いてるんですけど、 perlをダウンロードしようと思ったら、 xpのところが「No additional requirements」って書いてて、 落とせないんですが、 どれを落とせばいいのでしょうか?
215 :
??? :02/08/17 18:10 ID:mpsXRrac
216 :
nobodyさん :02/08/17 18:16 ID:Jdg3+PCY
218 :
??? :02/08/17 18:25 ID:???
あー!解りました! アフォ過ぎだったんですね。 優しく教えていただき有難うございました!
219 :
nobodyさん :02/08/17 20:03 ID:fKAF/2/W
すみません、どなた教えてください。 PERLってパラメータ(変数)渡してファイル実行、てできないんでつか。 cgiページで別のcgi呼ぶのに require 'XXX.cgi'; とやればいいのは分かるんですが、変数渡して実行するやり方が 分かりません。
>>219 グローバル変数はそのままサブに引き継がれるが・・・
難しいか?
====================
本スクリプト
$aa = 1;
$bb = 2;
require 'XXX.cgi';
&XXX;
====================
XXX.cgiの内容
sub XXX {
$cc = $aa + $bb;
print "$aa + $bb = $cc";
} 1;
====================
こういう方法もあるな ==================== 本スクリプト require 'XXX.cgi'; &XXX(1,2); ==================== XXX.cgiの内容 sub XXX { $aa = $_[0]; $bb = $_[1]; $cc = $aa + $bb; print "$aa + $bb = $cc"; } 1; ====================
>220-221 分かりました!ありがとうございます、やってみます。
最後の } 1; ってどういう意味があるのですか?
224 :
:02/08/17 21:13 ID:???
>>223 このパッケージ関数の仕事は正常に終わったよ(゚Д゚)、ペッ って意味。
糞どもしねや
#kusokote まったくだ。CGIの話はして欲しくないな。
低レベルなスレッドだな。ぷっ
>224-225 ( ゜д゜)ポカーン
>224スマソ >225-227 タイム( ゜д゜)ポカーン
悔しかったらParrotの話でもしてみせろよ。糞ども
ここにいる連中のレベルは底が知れているな。
まったくだ。CGIの話はして欲しくないな。
俺みたいにexeを生み出して見ろや。腐れ低脳どもが。
まったくだ。俺はこのスレはもう立てるなってpart14で叫んだのに、、、(泣
>>233 exeを生み出して・・・・。
なんかカッコいい!!
わけないジャン。
236 :
nobodyさん :02/08/18 15:40 ID:CpuDe273
perlでyahoo等のページを読み込のは無理ですか? openでURLを指定してwhileでprintさせてみましたが 何も表示されませんでした。 もしできるのなら方法を教えてください。
238 :
nobodyさん :02/08/18 15:56 ID:QsLadsc+
JAVAスクリプトで、Duriusというサイトからダウンロードした
アプレットを、なんとかしてホームページで使いたいと考えています。
WaterPicというアプレットなのですが、
「classファイルが見つかりません」とステータスバーに表示されてしまい
必要なファイルはすべてサーバーにアップしたのですが、
うまく表示されません。
海外サイトなので、翻訳ツールなど使ってFAQを読んでみたり
自分なりに検索をしてみたのですが、どこを直せば良いのかわからず…。
どなたかご教授戴けますでしょうか。よろしくお願い致します。
参考サイト
ttp://www.durius.com/index.php
>>238 おもしろーーーーーーーーーーーーーーーい!
240 :
nobodyさん :02/08/18 16:27 ID:QsLadsc+
設置できないのですよぅ…。とほほ。
241 :
236 :02/08/18 16:28 ID:???
243 :
nobodyさん :02/08/18 16:32 ID:QsLadsc+
242さん、ありがとうございます。
244 :
nobodyさん :02/08/18 17:42 ID:iuSsoGyA
ソケットの接続をするために下のようなコードを書いたのですが 戻り値を得るのに時間がかかった時のために、タイムアウト時間を 指定する方法はないのでしょうか? unless (connect SOCKET, $sockaddr) { warn "don't connect $host:$port $!"; return 0; } 一定時間後に別プロセスからシグナルを受け取ると、connect関数の 戻り値が得られていなくても次の動作にうつる、という方法も考えた のですがもっと簡単な方法があれば教えてください。
245 :
+++ :02/08/18 18:00 ID:R5t0PgRF
247 :
+++ :02/08/18 18:07 ID:R5t0PgRF
>>246 落ちてきます?
404なんですけど・・・。
248 :
+++ :02/08/18 18:10 ID:R5t0PgRF
あ、サーバが見つかりませんでした。・・・なんですけど。
249 :
f :02/08/18 18:25 ID:zqX/Ef2t
-------風俗の総合商社・MTTどこでも-------
〇デートクラブ〇女性専用ホストクラブ〇
〇ハードSM奴隷クラブ〇レズビアン倶楽部〇ホモ・オカマ倶楽部
〇変態痴女と遊ぶ会〇痴漢・覗き趣味の会〇変態同好会・各種!
●楽しく遊べます! 090-8002-8356番
-----------美男・美女会員など多数在籍中-----------
http://www.mttdocomo.jp/ -----女性アルバイト随時募集・高収入(日払い)月100万円可能-----
-----レズビアン・スタッフ●ホモスタッフ●女性専用ホストスタッフ同募-----
http://www.mttdocomo.jp/ ------------------------------------------------
250 :
+++ :02/08/18 19:21 ID:???
お!今行ったら、落ちてきました! メンテかなんかだったんでしょうかね? とにかく、解決しました。スレ汚しスマソ。
Win2K+Apache+ActivePerlの環境です。 スクリプトのエラーがあると、err500とかになっちゃいますが、エラーの個所とか出せないんでしょうか? 前はIIS+ActivePerlだったんですが、そのときはエラーログが残ったんですが。。
use Carp; use sigtrap; use diagnostics; use warnings;
スイマセン、画像UP掲示板を作っていまして CGI.pmを使ってフォームから ENCTYPE="multipart/form-data" METHOD="POST" としてCGIに送っているのですが、書き込みを中止させたときに JavaScriptで書き込みのページに戻しているのですが(一から書き直させない為です) 「 警告 : ページの有効期限切れ 」 と、出てしまいます。 これはしょうがないのでしょうか? CGI.pmを使わない普通の掲示板だと上手くいくのですが・・・。
>>251 自分で考えたものより簡単そうなので試してみます。
ありがとうございました。
>>244 IO::Socket の connect()メソッドのコードを見よ。
ってかIO::Socket::INET使え。
$sock = IO::Socket::INET->new(
PeerAddr => $host,
PeerPort => $port,
Proto => 'tcp',
Timeout => 60,
);
259 :
nobodyさん :02/08/19 17:00 ID:1kKCbwDN
a<>b<>cccccccccccccccccccceeeeee 上の形式で保存されているログファイルの中にあるcの数をカウントするにはどうすれば良いのでしょうか?
>>259 上にあったぞ
$count には $log の変換個数が入る。
$count = $log =~ s/c/c/g;
261 :
259 :02/08/19 17:08 ID:???
ありがとうございます! メモしておきます!!!!!!!
>>256 Pragma:no-cacheとか吐いてるんじゃ無いの?
263 :
256 :02/08/19 19:43 ID:TnC/wrS+
Pragma:no-cacheの事が分らなかったので今急いで調べましたが ヘッダーに入れてキャッシュを無くすものでしょうか? 自分では入れていないので、データを受取ってCGI.pmで $query->param しているのが原因でしょうか? というか勝手にCGI.pmで処理されているのでしょうか?
264 :
nobodyさん :02/08/19 21:34 ID:nf8Usneb
可能な限りHTML的に正しいコードを吐き出したいんですけど、 「#」ってエスケープできないんでしょうか。
265 :
nobodyさん :02/08/19 21:45 ID:DxRxf6Pv
Perl5.8.0で use encoding "euc-jp"; してるときにURLエンコード・デコードってどうやるんでしょうか? 文字列がUNICODEになるせいか普通の方法だとできないです。
>>264 HTMLなら実体参照でもいいんじゃないか。
267 :
264 :02/08/19 22:40 ID:nf8Usneb
>>266 さん
ええと、色コードの指定に使いたいんですけど、実体参照でも有効なんですか?
っていうのは板違いですかね。
調べてきます。
268 :
E04 ◆Ikb1Go.. :02/08/19 22:50 ID:gHSnDTPF
掲示板に2ch掲示板のようなキャップ機能をつけたいと思っています。 ログファイルに書き込まれた文字列を$capとして読み込み、 読み込んだ後に暗号化したいんですけど… YY-Boardのcryptルーチンを転用させてもらったら、アクセスするごとに表示されるキャップが変わってしまいました。 どなたか、キャップ機能のルーチンを書いていただけたら光栄です。
269 :
E04 ◆Ikb1Go.. :02/08/19 22:52 ID:gHSnDTPF
すみませんキャップじゃなくてトリップですた 鬱じゃ
270 :
nobodyさん :02/08/20 10:21 ID:mXpjYiji
271 :
E04 :02/08/20 13:28 ID:OO5Itufa
>>270 マジかよ・・それ俺じゃないのになぁ(´Д`;
ま、マルチじゃないのにマルチと決め付けられたり、自作自演と決め付けられるのも、
この板ならではだからシカタナイか。
272 :
nobodyさん :02/08/20 13:32 ID:0fyshNrg
んじゃ $trip = substr( crypt($cap, $cap), -8 ) ;
273 :
270 :02/08/20 13:45 ID:UfVInuyu
>>271 マルチは問題ではありません。
ていうか、そこまで出来るのであれば、
crypt
の動作を調べて自力で出来るはず。と思う。
ソレで出来なかったらソースを晒して下さい。
ログインをしたら、クッキーを食べさせて ダウンロードするときなどに、認証するようにしたいのですが どのような処理を行えばいいでしょうか(;´Д`) ヒントを頂けないでしょうか?
ログイン時にクッキーを発行。 ダウンロードするときなどに、クッキーで認証する。
やっぱりマルチやんか。 プンプン
278 :
256 :02/08/20 16:39 ID:???
亀レスですが・・・。
>>262 さん
原因がわかりました、一度投稿した後そのまま記事表示させ、
その後の投稿でエラーなどで、投稿が中断され戻ると、
警告が出てきていました。
ですので、書き込み処理の後にHTTP-EQUIV=Refreshで更新させ
たら、上手く行きました。
すいませんでした。
279 :
256 :02/08/20 16:41 ID:???
×その後の投稿でエラーなどで、投稿が中断され戻ると その後の投稿が中断され、ブラウザの戻るボタンで戻ると
280 :
nobodyさん :02/08/20 22:43 ID:EZdiVz9h
旨くいかない? 上手くいかない? 美味くいかない? 美味く逝かない? HTMLは取れますけどね
282 :
280 :02/08/20 23:25 ID:EZdiVz9h
>>281 すみません。オークショントップは繋がりました。
(さっきはできなかったのに)
rating.auctions.yahoo.co.jp/jp/show/rating?userID=nakatax2002&filter=-1
こっちアドレスだと「通信が確立できませんでした」が出るんですが
なぜでしょうか?
そのページを見るためにクッキーとか、要るんじゃないの?
すみません質問です! フォームから受け取った変数に文字列が何も入ってない場合の 処理をしたいのですがどうすれば良いでしょうか? if($hensu==null){} if($hensu==""){} この二つを試してみたんですが駄目でした。
・・・ if ($aaa eq '') だろ?
287 :
nobodyさん :02/08/21 08:52 ID:wr41ngxx
ここでいいのかわかりませんが質問させてください。 ちゃんと動作してるcgiを(無意味ですがうっかり)書き換えなしに 上書きアップロードしたら動作しなくなってしまいました。 なぜなんでしょうか?サーバー側には問題ないようなんですが・・・
>>287 それを「ちゃんと動作していない」とゆう。
パーミッション以外、指摘の仕様が無い。
あとバイナリモードで送信したか,ちゃんと動いていた(過去形)というのが妄想だったか, 「書き換えなしに」というのが嘘っぱちか.
290 :
送料 :02/08/21 10:12 ID:piy6swDN
フォームのプルダウンで都道府県を選ぶと、 送料が表示されるというもの。 前提1 プルダウンのvalueは漢字で北海道… 前提2 料金は別ファイルに記述 hokkaido=790… で、次のようにしたのですが、 @pref = ("北海道","青森県","秋田県","岩手県"…); @price = ($hokkaido,$aomori,$akita,$iwate…); $inx=0; foreach $pref (@pref) { if (index ($pref,$form_data{'pref'})>= 0) { last; } $inx++; } $soryo = $price[$inx]; 誰か、もっといい方法、教えてください。
お初です。 実はこんな事が出来るCGIが無いかと探しています。 定期的に特定のサーバーへpingを打ちその結果を表示する。 ※イメージ的にはMRTGでpingの応答時間をグラフ化した感じ 出来たら、グラフ表示で過去ログを見えるとベストですが、共有サーバー上なので 勝手な設定やソフトを導入出来ない為に諦めています。 目的は、あるサーバーへの応答時間(経路またサーバー負荷かによる原因は区別しない) を、監視するサイトを作る為です。 表示の度に実行するタイプとcronで5分間隔程度で実行するタイプのどちらかを探しています。 かなり探したつもりですが、見つける事が出来ませんでした、 ここのエロい方々なら知っているのではないかと思い書き込んでいます。 どうか、おながいします。
>>290 $DATA{'hokkaido'} = "hokkaido,北海道,十円";
$DATA{'aomori'} = "aomori,青森,百円";
$soryo = (split(/\,/, $DATA{$form_data{'pref'}}))[2];
とか?
いや、もっといい方法あると思うけど。ケースバイケースで。
>>293 thxです。
なぜって、エロくないヤツがここにくるわけないと思っただけです。
295 :
:02/08/21 21:17 ID:koSJYhB+
すごいいきなりバカな質問なんですけど レンタルのカウンター使いたいんです。 でもHPにタグを挿入とか意味が分からない どうやるんですか??
296 :
送料 :02/08/21 21:18 ID:piy6swDN
>>292 レスありがとう。
$form_data{'pref'}は、北海道とか、青森とか
漢字が入ります。が、大丈夫ですよね。
試してみます。
297 :
nobodyさん :02/08/21 21:22 ID:NuztNbpZ
>>296 =290
リスト作っとくだけで出せるだろ。
%pref =(
'北海道',"$hokkaido",
'青森件',"$aomori",
'秋田県',"$akita",
'岩手県',"$iwate",
);
$soryo = "$pref{$form_data{'pref'}}";
>>295 すごいいきなりバカな質問なんですけど意味が分からない
どうしてここに書き込んだんですか??
htmlのテンプレートを読み込んで、表示させる掲示板で、 次のページへ移動する時にログファイルの行数で判断しようと思っています。 下の方法だと、行数のためにログを開くのがかなり無駄に思えるのですが アフォなので良い方法が見つかりません。ヒントをご教授して頂けませんか? $page は1ページの表示数です open(LOG,$log) @lines = <LOG>;$lines=@lines;close(LOG); $end = $page + $now_no; if ($end < $lines) {$next = "bbs.cgi?〜";} else {$next = "";} open(IN,$skin); $locate = \@header; while(<IN>){ if (/<!--start-->/) { $locate = \@table; next; } if (/<!--end-->/) { $locate = \@footer; next; } push(@$locate,$_); } close(IN); print @header; open(LOG,$log); while(<LOG>){print $table;} close(LOG); print @footer; 一部省略しているので、分かりにくいかも知れませんが・・・
>>258 ありがとうございます
そういう関数があるんじゃないかと探してました。
>>299 よくわかんないけど。
print @header;
print @lines;
print @footer;
じゃダメポ?
302 :
送料 :02/08/21 22:39 ID:piy6swDN
>>297 レスありがとう。これで、やってみたらできますた。
深く感謝。
これって、'北海道',"$hokkaido", でセットになっているんですか?
北海道の場所がわかると、その横の変数が表示できるということ?
>>301 それじゃ、ダメなんですよ。スマソ
open(LOG,$log)
@lines = <LOG>;$lines=@lines;close(LOG);
この処理はなくてもいいんですが、
記事が無くなっても、次のページへと言うのが
残ってしまうんです
304 :
297 :02/08/21 22:55 ID:NuztNbpZ
>>302 ハッシュについて調べてみ。
%hoge("キー","値");
$hoge{キー}で値が呼べる。
305 :
◆RbZL6NeQ :02/08/21 23:13 ID:myM0YIeg
初めてライブラリ書いてみた。CHTML<->HDMLのつもり 各タグ、延々と同じようなことを繰り返す もっとマシな書き方(効率・処理etc)ないでつか? #####<HTML></HTML>##### #$agent=[i=0/j=1/Ez=2/...] sub html{ my($temp)=@_; if(@$temp==2 && $$temp[1] eq 'tag_close'){ if($$temp[0]!=2){print '</HTML>'}else{print '</HDML>'} } else{ if($$temp[0]!=2){print '<HTML>'} else{print '<HDML VERSION=3.0'; if(@$temp>1){ @text=('TTL','MARKABLE','PUBLIC','ACCESSDOMAIN','ACCESSPATH'); foreach(1..@$temp-1){ unless($$temp[$_] eq 'N'){print ' '.$text[$_-1].'='.$$temp[$_]} } }print '>'}} }
>>305 @_=($agent,...)
ライブラリのわりに、コピペして'1;'忘れ
ライブラリのコメントって ;# のがイイんじゃなかったっけ
>>307 ;# がよくて # が悪い?????
307=jcode.plでモノを考えた典型的なCGI厨房
>>307-309 ;# コメント
の形式のコメントが、たまに使われることがあるのは、
そのスクリプトが -P オプションでCプリプロセッサに前処理させることを前提としている場合、
#コメント がプリプロセッサディレクティブと誤認されないようにするため。
もっとも、jcode.plはそうではないが。
あー来やがった。最強のコテが、、 とりあえず本物かどうか知らんがトリップぐらいしようね。 名前欄に_gunzip#hogehogeってやるんだよ >>もっとも、jcode.plはそうではないが。 じゃああれはなんとなくってこと?
313 :
nobodyさん :02/08/22 00:11 ID:SxBa3EGu
↑この馬鹿早く規制されねーかな。
314 :
nobodyさん :02/08/22 00:13 ID:SxBa3EGu
315 :
305 ◆Eth6qXuM :02/08/22 00:15 ID:F/orcdTE
>>311 スマソ、何も考えず適当に入れてた
最強なのか…一応変えとく
>>311 作者ではないので真意は分からないが、スタイルでそうしているだけだと思う。
#トリップ御教示ありがとう。
相手するなよ>gunzip こいつ鬱陶しすぎ マジむかつく
318 :
311 :02/08/22 01:08 ID:???
319 :
nobodyさん :02/08/22 01:26 ID:lGXorje/
320 :
311 :02/08/22 01:32 ID:???
321 :
nobodyさん :02/08/22 01:41 ID:lGXorje/
>>320 糞頭じゃ足りない事が、人間には沢山有るんでね
>>299 処理する順番を変える。
log が eof に達したら「次のページへ」を非表示にする。
323 :
nobodyさん :02/08/22 12:42 ID:C0K12Syt
初心者の質問です。 KENT WEBの宅鯖計画を見ながらソフトのインストールを試みたんだけど Active Perlのインストール中に警告ダイアログが出て どうしてもうまくいきません。 うまくやる方法をうまく教えてください。
どんな警告が出たのかを書かないと誰も答えられない。
325 :
323 :02/08/22 14:34 ID:C0K12Syt
>>324 そうですね、すいませんでした。
警告文は
"There is a problem with this Windows Installer package.
A script required for this install to complete could not be run.
Contact your support personal package vender."
です。
MSIのバージョンをあげてみろ、といってみる。
327 :
323 :02/08/22 16:01 ID:C0K12Syt
MSIのバージョンのあげ方もわからない・・・ 出直してきます。 お手数をお掛けして申し訳ありませんでした(逝)
330 :
初必者 :02/08/22 21:52 ID:???
いきなりスイマセン ↓これおかしいですか?動かんようになったんです。 ############################################## #リピート部分プログラム sub output { #mail入力の有無 if ($email eq '') { print "$name : "; } else { print "<A href="mailto:$email">$name</A> : "; } #メッセージの表示 print "$msg"; } ############################################### コレだけやったら「ワケワカラン」ですかねぇ・・・
#mail入力の有無 if ($email eq ''") { <=(。∀゜)「"じゃなくて""じゃないの?」 print "$name : "; } else {
print "<A href="mailto:$email">$name</A> : "; print "<A href=\"mailto:$email\">$name<\/A> : ";
333 :
初必者 :02/08/22 22:00 ID:???
えっと、、、
「"」じゃなくて、「'」2つなんで、okかと・・・
一応ダブルに変えたんですけど、ダメでした。
>>332 やってみます。
334 :
初必者 :02/08/22 22:03 ID:???
いけました! 超初歩的でしたね(スイマセン・・・) 1時間悩んだのが、5分ほどでいけました。 何やってたんだろ・・・ どもでした!
>>334 ""のなかに"が入る場合は\でエスケープするよりも、
print "<A href=\"mailto:$email\">$name<\/A> : ";
↓
print qq(<A href="mailto:$email">$name<\/A> : );
で書くほうがすっきりするよ。
336 :
初必者 :02/08/23 00:25 ID:???
>>335 おっ!そんな方法もあるんですね。
参考になります。
なんせ、実質昨日から始めたみたいなモンなんで・・・
もう、お世話にならなくて済むようにガンバリマス。
ありがdでした。
ちょっと疑問 ファイルの各行を配列の要素として読み込ませるコードって open(FP,"+<$file"); @xx = <FP>; foreach $yy (@xx) { print $yy; } close(IN); って書くらしいんだけど、 foreach $yy (@xx) { print $yy; } これって意味あんの?
338 :
337 :02/08/23 05:09 ID:???
closeのほうのファイルハンドルまちがいた・・・鬱死・・・
意味ないっていうか、読み込んだ奴を表示してる。 読み込むなら open(FP,"< $file"); #または open(FP,$file); @xx = <FP>; close(FP); でいいと思う。 漏れも初心者だからあってるかわからん。
>>337 それくらいわかるだろヴぉけ
つかサンプルまるうつししてるようなうんこはしね
>>340 マァマァ、ここは初心者スレですから・・・
342 :
初必者 :02/08/23 14:45 ID:???
昨日の今日で恐縮です・・・ かなりシンプルな掲示板を色々いじって勉強してるんですが、 テンポラリーファイルが、勝手に消えるんです。 全く分かんなかったんで、何度も何度も自分で作るんですけど、 プログラム実行するたび消えたんです。 で、検索したら、 「プログラムが動いているとき、一時的に作られる作業用ファイル」 って書いてあったんですけど、、、 つまり、実行後消えるって言うのは正常なんでしょうか?
>>342 に必要と思われるもの
英語の辞書 temporary
344 :
初必者 :02/08/23 15:06 ID:???
>>343 「一時的な」でしょ?
それは分かってます・・・
正常なのかが聞きたかっただけなんですけど、
煽られそうなんで、もぉやめときます。。。
>>344 分かっているのに聞くと言うことは 極めて日本語が不自由な在日ですか?
>>343 一時的というのは永続的に続く事なのですか?あなたが言っているのはそういうことになりますが。
>>335 qq(\/);
としているのは意味あるの?
349 :
nobodyさん :02/08/23 20:05 ID:BD+5XVCe
sendmailを利用したプログラムを書いていて
つまづいてしまったのですが、アドバイスいただけますでしょうか。
CGI設置サーバ:aaa.com
メーラーのSMTPサーバ:mail.ccc.or.jp
Mail-1:
[email protected] Mail-2:
[email protected] Mail-3:
[email protected] Mail-4:
[email protected] 以上の環境で、Mail-1・Mail-2・Mail-3にはCGIからもメーラーからも
数秒〜数分でメールが届くのですが、
Mail-4にはメーラーからは数秒で届くものの、
CGIからは2時間ちょっと経過した今現在、まだメールが届きません。
sendmailでは、こんなにタイムラグってあるものなんでしょうか?
それともCGIプログラム自体に問題がある可能性がありますか?
原因のマトが絞れず悩んでいるのですが、よろしくお願いいたします。
厨質でもうしわけないんですが、 ファイルの指定の行の内容をさしかえることってできますか? open(CNT,"+<$cnt"); flock(CNT,2); @cnt = <CNT>; @cnt[$n] ++; #n行目の数値をインクリメント truncate(CNT,0); seek(CNT,0,0); foreach $a (@cnt) { print CNT "$a\n";} close(CNT) 今は↑のような感じでやってるんですが、 これだと毎回ファイルをまるごと書き換えてるんで、効率悪いですよね・・・
>>350 これじゃいかんかの?
open(SAQ,"unittest.pl");
@fasx=<SAQ>;
$fasx[2]="-_-";#替えたい行
print @fasx;
352 :
350 :02/08/24 01:55 ID:???
>>351 書きこむ時には結局
open(SAQ,">unittest.pl");
foreach(@cnt)
{ print SAQ "$_\n";}
ってやらないとだめなんですか?
>>349 です。
CGI設置サーバをddd.co.jpに変更したら送信先4件ともメール届きました。
前のaaa.comに設置した方からは、今だに
[email protected] 宛には
10時間経過した今現在も届きませんが、
とりあえずメールの受け取りができたので解決といった感じです。
ほんとはSSLが使えるaaa.comに設置したかったんですが、
は〜〜どうしよう・・・。
こんなことあるんでしょうか・・・sendmail。
もしかしてスレ違いだったかな。スミマセン。
あぶらあげ
スレ違いかもですが、クッキーについて少し質問させてください。 インラインフレームを使用したページで、-@ クッキーに対応したページをフレーム内に表示させると、-A 効かなくなったんですが、 当然のことなんでしょうか? で、これが当然のことなら、 JavaScriptで、@のページにクッキーのスクリプトを埋め込もうと思うのですが、 それで、果たして、Aのページまで対応できるのか、不安になりまして・・・ どなたか分かる方お願いします。 全然、見当違いなこと言ってるのかも知れませんが、 そのときはお許しを・・・
そうですよね。 いや、Aのページが、 必死でクッキー処理を追加した掲示板だったもんで・・・ 「製作板」逝ってきます。
ばーぁ
2つ前までのリンク元って取得できないものでせうか?
「CGIに依存しない・・・」が読めなくなったな...。 悲惨な終わり方だな。
if ($str =~ /xxx/) { print "含んでいる\n"; } の/xxx/の部分て文字列じゃなく、変数にしてもできるんですか? if ($str =~ /$str2/) { print "含んでいる\n"; } みたいに
というか、 if($xx =~ /xxx/) で含むなら、と覚えてたら正規表現なんてわからないよな
>>344 コードの先に、unlink("***") でファイルを消しているんじゃ無いのか??
糞コテ死ね
@listに123,456,789が代入されているとき @listから456を取り除いて、 print "@list"; で123,789にするにはどうすれば良いのでしょうか。
>>367 @po=(123,345,234);
@po=($po[0],$po[2]);
print @po;
>>367 配列のindex Nの要素を取り除きたいのか、
値Xを持つ要素を取り除きたいのかで全然違うよ
# 前者
my $N = 1;
splice @list, $N, 1;
# 後者
$X = 456;
@list = grep { $X != $_ } @list;
370 :
367 :02/08/24 22:52 ID:???
すみません。初心者なんで良く分からないんですが、 変数に入っている文字列から指定した文字列を消去したいんです。 正直、@でも$でも構いません。
371 :
nobodyさん :02/08/24 23:02 ID:zQgcBRyf
文字をバイナリでファイルに書き出したいのですが 方法を教えて頂けないでしょうか? 例えば $val="65"; の場合 $val をファイル、もしくは標準出力に書き出すと 文字の 65(バイナリでは 0x36 と 0x35) がファイルに書かれますが バイナリで 65(0x41) を書き出したいのです。 pack,unpack も試しましたが文字のままでした。(;´Д`) 先ほど始めて使ったので調べていない点が あるかもしれませんが宜しくお願いいたします。
372 :
ん? :02/08/24 23:02 ID:???
$hoge = '123456789'; $hoge =~ s/456//; 本買えよー
373 :
367 :02/08/24 23:04 ID:???
$hoge = '65'; $hoge =~ s/(.)/sprintf("\\x%02X",ord $1)/eg; unpackは使いづらいから嫌い
375 :
nobodyさん :02/08/24 23:28 ID:zQgcBRyf
>>374 即レスありがとうございます。早速試してみましたところ
\x36\x35
と表示されました。
実はこの出力が欲しかったのではなく
バイナリエディタで見た場合に 0x41 と表示される
出力が欲しかったのです。
入力ファイル内容 が ABC の場合に
出力ファイル内容が 16 進バイナリで 41 42 43 であって欲しいのです。
エディタで開くと謎の文字が表示されるアレです。
私の説明が悪く申し訳ありません。
何に使うかと言いますと
ジャンクハードの FlashROM 内容をダンプした物を
文字列整形後バイナリデータに変換し逆アセンブルしたいのです。
他に方法がありましたら宜しくお願い致します。
376 :
nobodyさん :02/08/24 23:57 ID:Us3nZQzg
文字列の中から指定した文字の個数を調べるにはどうすればいいのでしょうか?
377 :
nobodyさん :02/08/25 00:12 ID:EOslaqTi
>>376 $count++ while($hoge =~ /$page/g);
>>378 (・∀・)ソレダ!!
どうも一般的な関数みたいですね。
大変助かりました。
ありがとうございます。
>>379 書込みタイミングがずれてしまいました。
どうもありがとうございます。
これから実装してみます。
いや、普通はpack/unpackを使うと思うんだけど print pack "C*", 65, 66, 67;
おぼえとけよ。お前らのIPは全部保存してあるからな。 いまさら泣いて許しを請うても遅いからな(w
CGIに依存しない〜は残念だったな(ppp 糞固定どもと成れあっとけや糞虫。
何か言えよ!
386 :
299 :02/08/25 16:49 ID:???
>>322 返信遅くなってすみません
今から試行錯誤してみます。
アリガトゴザマスタ
387 :
nobodyさん :02/08/26 11:06 ID:kuaIpm20
アクセス制限のやり方教えてください。
>>387 if($ENV{REMOTE_USER}){if($ENV{REMOTE_USER} eq $dqn_user){print "Location: $url"}}
elsif($ENV{REMOTE_HOST} eq $dqn_host){print "Location: $url"}
でいいの?
proxyかけてるやつの制限ってどうやるの? 教えてー
>>389 ] あなたは Proxy を利用していますか?
]
] はい、利用しています (→Yahoo! へのリンク)
] いいえ、利用していません (→トップページへのリンク)
こんな感じのページを置いておく。
395 :
391 :02/08/26 14:21 ID:???
396 :
nobodyさん :02/08/26 15:38 ID:IyYWB8TD
kent-webのアップロード式掲示板のやつで 着メロをうpできるようにするにはどうすればいいんですか?
397 :
nobodyさん :02/08/26 17:40 ID:AuEFFmIZ
perlの勉強始めたばかりの超初心者です。
色々な人のソースを参考に本を片手にCGIスクリプトを書いているのだけど、
http://www.kent-web.com/utility/index.htmlのPerl Checkerで
自分の書いたスクリプトをチェックすると、
Missing right bracket at regist.cgi line 270, at end of line
syntax error at regist.cgi line 270, at EOF
regist.cgi had compilation errors.
って、エラーがでます。
実際の270行目って、スクリプトの終わりで何も書いてないし、
直前の269行目にはexit;
どこが悪いのかわからないんですけど、わかる人いますか?
おねがいいします。
>Missing right bracket 右ブラケットが欠けている。
たいがい、エラー行の前に原因がある。
400 :
299 :02/08/26 20:06 ID:???
>>299 ですが
open(LOG,$log);
while(<LOG>){print $table;}
close(LOG);
は
open(LOG,$log);
($date,$no,$sub,$text) = split(/\,/,$_);
$table = join('',@table);
$table =~ s/<text>/$text/g; #$sub等も置き換え
print $table;
close(LOG);
でした
もうだめぽ・・・
負荷状況を調べたくて use Benchmark; を試したいのですが、 Benchmark.pmを同じフォルダーに置いて、コマンドから実行させてみたりしましたが ダメでした。ご教授して頂けないでしょうか?
402 :
299 :02/08/26 22:43 ID:4fIS3YbU
@header; @footer; の中にNEXTがあるので、 print $table; をpush (@txt,$table); にして {ここで置き換え処理} @header; @txt; @footer; にしたのですが、@txtが大きくなると負荷が掛からないかと心配です ログのサイズは大きくても200kくらいです
ファイルのデータを配列にいれるのはどちらの方がいいでしょうか? 他にいい方法はありますか? 1、 @DATA = <DATA>; 2、 while(<DATA>){ push(@DATA, $_); }
>>404 1 短くて簡潔な方がイイ。
2 だと @DATA が空である必要があるし、よけいな while を呼び出さなければならないから。
406 :
757 :02/08/26 23:21 ID:???
>>404 データを加工しない限り1以外の方法は使わなくていいんじゃないか。
757は余計だったな(藁
ファイルサイズが大きいと1はまずいんでないかい?
>>408 ファイルサイズがでかけりゃ、1も2もまずいだろうよ・・・
410 :
404 :02/08/26 23:34 ID:???
ありがとうございます。1のほうを使う事にします
ま、1か2のどちらかしか考えないのじゃなくって 本当にファイルの中身を配列に入れる必要があるのかと
windows上でjperl使ってて、 Runtime Exceptionって出てperl自体がこけるんだけど、 対処方法がわからない。なんとなく正規表現に負担をかける 処理を多用するとまずい感じ(64k制約の話を聞いたことがあるけど、 漏れの場合、扱ってる個々の文字列の長さはせいぜい2k程度) だれか教えてちょ。 こける場所は不定。デバッガかませると動作完了したりする ときもある。
>>299 そのソースどっかで見たことあるなー
引用してるなら、元サイトのスクリプト見てみたら?
299=404?
ここの掲示板みたいに、プロクシ規制の方法を教えてください。
Perlの「コーディング」で困ってる人のスレです。
PNGカウンタを作ってるのですが <img src="pngcount.cgi?4"> <img src="pngcount.cgi?3"> <img src="pngcount.cgi?2"> <img src="pngcount.cgi?1"> とやると4回も起動することになるので1回にまとめたいのですが @listにそれぞれの画像のパスが格納されている場合 例:@list = ("./image/0.png","./image/1.png","./image/0.png"); 上の場合だと010と表示させたいのですが foreach $number(@list) { open(IMG,"$number") || exit; print "content-type: image/x-png\n\n"; binmode(IMG); binmode(STDOUT); print <IMG>; close(IMG); exit; } 上のようにやっても1つしか画像が表示されません。 いくつも画像を表示できないのでしょうか?
猫
419 :
nobodyさん :02/08/27 17:12 ID:dvEqdJRZ
i-mode絵文字対応フォームメールを設置したいのですが、 文字化け対策がうまく行きません。 (文字化けする絵文字としない絵文字がある。) 処理をうまくしてる人はどうやってやってます?
>>419 &#xxx;という形式で送信されるから適切に処理する
>>417 ヘッダーに空白行(\n\nってとこね)を出力した後には、もうContent-typeとかやってもダメです。
つまり出力できる画像は1つだけです。
422 :
419 :02/08/27 18:00 ID:???
>>420 どうもありがとうございます。文字化けするものと、しないものを一部抜粋しました。
***************************************
NO1 F89F 晴れ 文字化け
NO2 F8A0 曇り 文字化け
NO3 F8A1 雨 大丈夫
NO94 F8FC 車椅子 大丈夫
NO95 F940 新月 文字化け
NO135 F9B0 決定 大丈夫
NO136 F991 黒ハート 文字化け
***************************************
if (!open(OUT,"| $SENDMAIL -t")) { &error('送信できません'); }
print OUT "To: $MAIL_TO\n";
print OUT "From: $WEBMAS\n";
&jis("Subject: $SUBJECT"); print OUT "$msg\n";
print OUT "Content-Transfer-Encoding: 7bit\n";
print OUT 'Content-Type: text/plain; charset=iso-2022-jp' . "\n\n";
&jis("$NAME_FROMさんの質問が届きました。"); print OUT "$msg\n";
#絵文字対応
$sjis = '[\x80-\x9F\xE0-\xF7\xFA-\xFC][\x40-\x7E\x80-\xFC]|[\x00-\x7F]|[\xA1-\xDF]';
$emoji = '[\xF8\xF9][\x40-\x7E\x80-\xFC]';
$QUERY{'COM'} =~ s/\G((?:$sjis)*)($emoji)/$1.''.unpack('n',$2).';'/ego;
&jis("--$QUERY{'COM'}"); print OUT "$msg\n";
&jis("▽答えはココから"); print OUT "$msg\n";
&jis("$CGI?M=H&T=$ID_FROM&F=$ID_TO&P=$PASS_TO"); print OUT "$msg\n";
close(OUT);
こんな感じにしたんですけども駄目なんです。
424 :
nobodyさん :02/08/28 02:34 ID:TSMc6GTX
任意の文字列が含まれる1行を抽出し、該当文字列のみを 新しい文字列に置換えるスクリプトを作成したいのですが、わかりません。 下記のメールアドレスで行を取得して、元データ(@old)を 新しいデータ(@new)に置換る(行の置換え)スクリプトを、 上記の様に修正したいのですが・・・。 教えてください。お願い致します。 open(IN,"data/data.csv") or die; while($line=<IN>){ chomp($line); if($line =~ $mail){ push(@old,$line); @tmp1 = "@new"; open(OUT,"+<data/data.csv"); print OUT "@new"; close(OUT); } } close(IN);
>>424 とりあえず元ソースは全放棄したほうがいいと思った
#置き換え対象文字列
$mail="
[email protected] ";
#置き換え文字列
$replace="
[email protected] ";
open(IN,"data/data.csv") or die;
@old=<IN>;
close(IN);
foreach (@old){
s/$mail/$replace/g;
}
open(OUT,">data/data_after.csv") or die;
print OUT @old;
close(OUT);
みたいなのでダメなんすか?って全部書いちゃったよおい。
426 :
425 :02/08/28 04:06 ID:???
どでかい配列作るのが嫌なら(csvファイルが何千行とかなら) 一時ファイル作ったほうがいいね。 open(IN,"data/data.csv") or die; #一時ファイルを開く open(OUT,">temp.csv") or die; while($line=<IN>){ $line=~s/$mail/$replace/g; print OUT $line; } close(OUT); close(IN); #一時ファイルを消して、ファイルを置き換える rename('temp.csv','data/data.csv') or die; はいオナニー終わり!
427 :
nobodyさん :02/08/28 10:57 ID:3EY8gxC5
特定の曜日、日時にコンテンツのhtmlを自動生成したいのですが 来訪者の度にCGIを実行して、時刻をチェックする方法以外ないでしょうか? この方法だと、来訪者が増えるたびに処理が重くなってしまいます。
>>427 crontabが使えなければ、それしかないかな。
430 :
nobodyさん :02/08/28 15:34 ID:z8uBgDDw
正規表現で、配列を変数展開させたいのですがうまくいきません。 m/^hoge$array[0]hoge/; ↑このように書いても、$array[0]はうまく展開されないんです。 どなたかいい知恵貸してください。 おながいします。
>>430 正規表現中のブラケット [] は文字クラスを表します。
foreach などで他の変数に代入してから処理する等の回避方法が考えられます。
432 :
430 :02/08/28 16:48 ID:???
>>431 むう、やはり正規表現中で[]を使わないように回避するしかないのですね。
了解しますた!
ありがd
433 :
431 :02/08/28 17:11 ID:???
>>430 ごめん。
5.003 Build 316
で試したら、それ、多分期待通りに動いた。他の原因があるかも。
@aaa = ("どおして",);
$bbb = "どおしてそんなことすんのー。やめてーなー。ほんとにもー。";
if($bbb =~ /^$aaa[0]/){print "is true$aaa[0]\r\n"}
else{print "is false$aaa[0]\r\n"}
434 :
430 :02/08/28 18:25 ID:???
>>433 すまそ、おっしゃる通りうごきますた。
正規表現を解釈するよりも前に変数展開してるんでしょうね、きっと。
>>430 で「うまく展開されない」と書きましたが、別の原因でした……
…………………吊ってくるっす ゴメ
配列操作に関する質問です readdirで得たファイルリスト「@datafiles」から カレントディレクトリやデータファイル以外のファイル名が収まっている要素をspliceしたいのですが なにかうまい方法は無いでしょうか? データファイルかどうかは命名規則「/^\d+(dat)$/」で判断したいと思っています
436 :
435 :02/08/28 19:06 ID:???
ちなみにファイルリストを「@filelist」にとっておいて @datafiles = grep(/^\d+(dat)$/, @filelist); としてもダメでした grepの使い方間違ってます?
/^\d+.dat$/ だったりはしない?
438 :
結構前スレ888さん :02/08/28 19:38 ID:99E4DmXW
特定のURL以外から飛んできた人を弾きたのだけど 前教えてもらったのは"特定のURLから飛んできた人を弾く" if ($ENV{'HTTP_REFERER'} =~ /aaa/) { print "Location: abab\n\n"; exit; } (aaaから来た人をababに飛ばす) "特定のURL以外から飛んできた人を弾く"を....
439 :
結構前スレ888さん :02/08/28 19:39 ID:99E4DmXW
>弾きたのだけど 弾きたいのだけど
440 :
437 :02/08/28 19:46 ID:???
あー。見えにくいかもしれんけど、 dat が拡張子ならピリオド . が必要ってことで。 あと、ファイルテスト演算子 file test operator ってのもあるから。 それで良ければ調べてみるヨロシ
442 :
結構前スレ888さん :02/08/28 19:56 ID:99E4DmXW
>>441 つまり外部リンクできた人を弾きたいと(.cgiに)
>442 else か not か !
444 :
結構前スレ888さん :02/08/28 20:44 ID:99E4DmXW
notかな
unless
446 :
435 :02/08/28 21:03 ID:???
>437 そうでした・・・穴掘って埋まってきます・・・
>>414 PerlがRuntime exceptionでこける事例は、例えば
NamazuのBBS
WinNTでNamazuが落ちる事例
http://search.namazu.org/ml/namazu-users-ja/msg00011.html 当たりでやりとりがあります。
ただ、あまりはっきりした解決方法はでてきませんでした。
このやりとりの中で触れられている正規表現の処理に関する問題が
>>412 で書いたマッチ64K制限は、確かActivePerlのサイトあたりに
あったことです。
Perlのversionを上げるもしくはUnix系OSの上で処理をするか
いずれかができればいいのですが(普段はそうしてます)、
この件に関してはちょっとそのへんの変更が難しいもんで。
ちなみにperl Runtime exceptionでぐぐるとかなりたくさん
Active Perlのこの問題はでてきます。
448 :
414 :02/08/28 21:38 ID:???
>>447 いや、板違いってゆうのは撤回しますが、結局 ゲイツ が悪いんでしょ?
えーと、現在のところ、どうも原因不明の様ですし、初心者向けの話題でもないようですから。
Active Perl + Win の新スレ立ててみたらどうでしょうか。
>>446 ピリオドをエスケープしないと意図しないファイルも引っ掛かります。
/^\d \.dat$/
↑プラスがスペースに変換されてます。
451 :
nobodyさん :02/08/29 02:33 ID:r6Il9+nb
MySQLでフランス語のデータを管理してるんですが、SELECT文 でのアクセント付き記号の扱いに困っています。 例えば、&egarve;を入力して、&egarve;だけにマッチさせたいんで すが、&egarve;とeが引っかかってきます。 ご存知のお助けください。
452 :
451 :02/08/29 02:36 ID:r6Il9+nb
すんません。訂正します。 >例えば、&egarve;を入力して、&egarve;だけにマッチさせたいんで >すが、&egarve;とeが引っかかってきます。 は 例えば、èを入力して、èだけにマッチさせたいんで すが、èとeが引っかかってきます。 です。
453 :
? :02/08/29 05:06 ID:???
みようみまねでスキンを使った掲示板をいじってるんですが、 スキンから読み込んだのを変換するとき、 $skin =~ s/title<!--s-->/$title/i; $skin =~ s/***/***/g; $skin =~ s/***/***/i; $skin =~ s/***/***/i; ・ ・ ・ って感じなんですが、 $skin =~ s/title<!--s-->/$title/i; と打ったところ、一つだけしか「s/title<!--s-->」が 変換されなかったんですね。 で、なんとなく、 $skin =~ s/title<!--s-->/$title/g; にしてみたら、いけたんでけど・・・ この後ろについてる「i」とか「g」の意味はなんですか? 他にも「s」とかもあったんですが・・・ 検索しても見つからないのでお願いします。
456 :
482 :02/08/29 07:41 ID:8thG1OyK
458 :
? :02/08/29 14:55 ID:???
>>455 有難うございます。
つまり、
iは「大文字小文字を区別しない」で、
gは、「全体から探す」ってことで、
oは、「変数を1度しか展開しない」ってことなんですね
で、もう一つ疑問が・・・
=~ /***/ や
=~ m/***/ は解ったんですが、
=~ s/***/ の説明がないんですよ・・・
「m」が「/」以外のディリミタを使えるようにするためのものですよね?
同じ意味なのでしょうか?
違ったら、この「m」とか「s」入る場所?の名称なんかを教えて頂けないでしょうか?
検索すら出来ない状況なので・・・ホントすいません。
CGI、とくにFormまわりの質問なのでスレ違いかもしれませんが @dataにテキストファイル(S-JIS)から文字列を読み込んで 「print "<TEXTAREA name=\"text\" cols=\"80\" rows=\"16\">@data</TEXTAREA>";」 としたときに、なぜか@dataの2行目以降行頭に半角スペースが入ってしまいます おかしいな、と思って「print @data;」してみても 行頭に半角スペースが入っている事はありませんでした 改行コードの問題かと思いforeachで「$_ =~ s/\r\n/\n/g;」としても状況に変化がありません IE,NN共に同じ症状を確認しているのですが これはHTML、あるいはブラウザの問題なのか、Perl側の問題なのか どうやって回避したらいいんでしょうか?
460 :
292 :02/08/29 15:01 ID:???
$XXX =~ s/Z/A/; $XXXに入ってる「Z」を「A」に書きかえる。(最初に見つかったやつだけ) $XXX =~ s/Z/A/g; $XXXに入ってる「Z」を「A」に書きかえる。(すべて) $XXX =~ s/Z/A/i; $XXXに入ってる「Z,z」を「A」に書きかえる。(大文字小文字を区別しない)
461 :
_ :02/08/29 15:02 ID:???
462 :
292 :02/08/29 15:03 ID:???
>>459 HTMLソースを見ても半角スペース入ってるのか?
463 :
459 :02/08/29 15:06 ID:???
>461 テキストデータには展開される可能性がある文字列はありませんでした ・・・そういう意味じゃないのかな >462 はい、TEXTAREAで挟むと半角スペースが現れますが 「print @data;」だとソースでも半角スペースは現れません
464 :
? :02/08/29 15:08 ID:???
なるほど! sが、置き換えるって意味ですか! ホントおばかでした。 スレ汚しすいませんでした。 皆さん有難うございました!
465 :
_ :02/08/29 15:08 ID:???
>>463 "@array" と @array の違い(変数展開)を調べること
466 :
459 :02/08/29 15:17 ID:???
>465 うーん、直接その答えにはたどり着けませんでしたが 「print "<TEXTAREA name=\"text\" cols=\"80\" rows=\"16\">" . @data . "</TEXTAREA>";」 とすることで解決しました ありがとう
467 :
292 :02/08/29 15:27 ID:???
>>
469 :
nobodyさん :02/08/29 15:28 ID:jYAiqFv3
ユーザーのプロバイダのアドレス?調べるのってどれでしょう? *******.ap.plala.or.jp こんなやつ $ENV{'REMOTE_ADDR'}; だとIPアドレスが表示されるようなのですが
470 :
292 :02/08/29 15:29 ID:???
変なとこで送信してもた。スマソ。
>>466 $" という変数を見てみな。デフォルトでは半角スペース入ってるから。
この変数はprint "@xx";の時に区切りとして使うものを入れてるモノ。
先だって
$" = '';
としておけば半角スペースは無くなる。
>>469 アドレスが知りたいのなら、IPアドレスがいいじゃないかアケチくん。
472 :
292 :02/08/29 15:32 ID:???
$ENV{'REMOTE_HOST'} ただし、最近のプロバイダではここにリモホが入ってる設定にしてるところは少ない(無駄だから) その場合は次のコードで行けるだろう。 $ENV{'REMOTE_HOST'} = &nslook($ENV{'REMOTE_ADDR'}); sub nslook{ local($x)=@_; local($ip,$addr); if($x=~/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/){ $ip="$1.$2.$3.$4"; $addr=(gethostbyaddr(pack('C4',$1,$2,$3,$4),2))[0]; if($addr ne ""){ return $addr; } } return $x; }
473 :
469 :02/08/29 15:33 ID:oKWRspRK
>>471 そうなのかしら。
でもぱっと見わかりやすいのもいいわ。
っていうかじゃぁ両方で。
474 :
469 :02/08/29 15:35 ID:oKWRspRK
およよ。 そう、REMOTE_HOSTでやってみたら 何も取得できなかったんですよ。 上のはアドレスから変換してるのでしょうか?
475 :
292 :02/08/29 15:39 ID:???
>>474 nslookというサブルーチンに、IPアドレス$ENV{'REMOTE_ADDR'}を教えて
リモートホストを教えてもらって、空っぽだった$ENV{'REMOTE_HOST'}に代入するコードじゃよ。
>474 何を取得できてるの? foreach(sort(keys(%ENV))){$chk .= "$_ is $ENV{$_}<br>\n"}
478 :
476 :02/08/29 15:57 ID:???
別に他意はないんだけどさ。これでいい? foreach(keys(%ENV)){$chk .= "$_<br>\n"}
479 :
469 :02/08/29 16:03 ID:KExh1vW6
>>472 やってみましたが、それでもIPアドレスになっちゃう。
CGIサーバーはPlalaです
自分のPC上でやるとパソコンの名前が表示されます。
(ActivePerl+httpd)
Plalaはどうだかしらないが、IPアドレスから名前に変換をサポートしていない鯖がある。 あきらめるか、別の鯖で試す。
481 :
nobodyさん :02/08/29 16:32 ID:SCkpIe5L
Perlで http通信を行い特定のHPからhtmlを取得後 パースして、htmlから特定のデータを取得したいのですが 必要なモジュールとか、ソースとか解説のHPがあれば教えてください。
483 :
469 :02/08/29 16:50 ID:1fSV4HtQ
$host = gethostbyaddr(pack("C4", split(/\./, $host)), 2) || $host; こんなのでいけました。
484 :
nobodyさん :02/08/29 17:01 ID:SCkpIe5L
>482 何番目のスレの何番になります? それ読みますから教えてください。
486 :
初心者の依頼者(´∀`; ◆3zTzMwh2 :02/08/29 17:16 ID:w2vhS8x7
えっと、 ↑に答えが出てることはわかっているんですが、理解できません。 fusianasanで表示されるやつはどうやって取得するんですか?
488 :
初心者の依頼者(´∀`; ◆3zTzMwh2 :02/08/29 17:20 ID:w2vhS8x7
>487 別に
489 :
292 :02/08/29 17:27 ID:???
490 :
nobodyさん :02/08/29 17:30 ID:SCkpIe5L
>489 ありがとうございます。
>>482 2chの使い方になると思うんだが、この板から全文検索したいんだが、どうすればいいの?
「全部表示してブラウザで検索」しかないのか? それとも googleに拾ってもらわなければいけないのかな?
494 :
424 :02/08/29 19:47 ID:k9SFERS8
>>425 様
有難うございました。
私の勘いで、作成したいスクリプトの記述が間違っていました。
すみませんでした。
(勉強の為、書いて頂いたソースは保存しました)
以下、教えて頂きたい内容です。
任意の文字列が含まれる1行を抽出し、複数の該当文字列を
新しい文字列に置換えるスクリプトを作成したいのですが、わかりません。
(置換え対象の文字列には、手入力の文字列も含まれます)
495の様に、メールアドレスで行を取得し、
@oldに格納されている全ての文字列を個々の変数に代入して、
ファイルに出力させるスクリプトを作成しましたが、うまく動作しません。
確認出来たエラーは2点です。
1.ファイルの一行目しか$lineに入りません。
その為、該当レコードがあるにも拘らず、「データがありません」と
なってしまいます。
2.レコードの改行が削除され、次のデータが同じ行に出力されてしまいます。
($old1,$old2,$old3,$old4,$old5) = split(/,/,$old);
@oldから抽出する上記以外の方法がわからず、困っています。
ソースは495です。お願い致します。
(改行が多く書き込めなかった為、分けました。)
495 :
424 :02/08/29 19:47 ID:k9SFERS8
494の続きです。 置き換えたい変数です→($new1,$new2,$new3,$new4,$new5) open(IN,"data/data.csv") or die; while($line = <IN>){ chomp($line); if($line =~ $mail){ push(@old,$line); } else { print "該当するデータがありません。\n"; exit(0); } foreach $old (@old){ ($old1,$old2,$old3,$old4,$old5) = split(/,/,$old); } open(OUT,"+<data/data.csv") or die; print OUT "$old1,$new2,$new3,$old4,$new5"; close(OUT); print "書き換えが完了しました。\n"; exit(0); } close(IN); exit(0);
sage
>>494-495 何をやりたいのだか解らないんだけど。
>>425 をこうするって事かしら。
foreach(@old){
if(s/$mail/$replace/g){push(@new,$_)}
}
print OUT "@new";
使用している各関数がどういう働きをするものかよく調べた方が良いと思います。
ラクダ本を買うとか。
498 :
nobodyさん :02/08/29 21:09 ID:mQvrBYqz
すいません、根本的なところで質問です。 何も手を加えてないのに、昨日まで動いてたcgiが動かなくなったんですが、 これは何が原因でどうすれば直るんでしょう。 kentのyybbsを色々いじってたんですけど、文法エラー解消しても動かないので まずは無改造のスクリプトをただ上げたんです。 そしたら動かない。 しかも、それまで使ってたスクリプト(2つあるうち1つだけ)が突然internal server error。 頭抱えてます。 どなたか助けてください。
499 :
nobodyさん :02/08/29 21:12 ID:0ltwZgpC
■10.000円の高額収入
1件につき最大10.000円の高額収入。月収100万円以上も可能。
■画期的なビジネス!
インターネットを利用したこれまでにない斬新で画期的なビジネスです。
■誰でも出来ます!
インターネットができる環境の方なら誰でも参加可能です。
インターネットを利用したビジネスですので、自宅や会社で好きなときにで
きるビジネスです。
■専門的な知識は一切不要!
ビジネスに必要なツールは全て当社で用意いたします。
また、サポートも万全です。
■詳細は今すぐこちらから
http://www.future-web.tv/haru/
>>498 改造してないBBSなんでしょ?
kentのサポート板で聞けよ
>>498 Internal Server Error ならhttpdサーバのログに
エラーが出てるはず。それを確認しる。
>>500 無改造というのはコイツが手を加えてないということだろ
503 :
498 :02/08/29 22:31 ID:mQvrBYqz
やっぱりkentさん所で聞くのが早いですかね。 逝ってきます。
504 :
424 :02/08/29 23:02 ID:zsUv5K1P
>>497 様
レス有難うございました。
書き方が悪くてすみませんでした。
>>425 様にも
>>426 で教えて頂いたのですが・・・。
置換え前の文字は$mail以外、変数では無いので
マッチさせる事が出来ない状態でした。
ファイルから文字を取得し、変数に格納したいと思っていました。
入力フォームを作り直します。
505 :
505 :02/08/29 23:31 ID:kiu2pPYa
sub make_html{ open(HTML, ">hoge.html") || &error("HTMl化に失敗しました。"); print HTML &end; close(HTML); } 開いたファイル(hoge.html)に書き込みたくて上のように記述したのですが、 ファイルを開いて直接サブルーチン(&end)を使うのは無理なのでしょうか。
506 :
_ :02/08/30 00:12 ID:???
,一-、
/ ̄ l | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
■■-っ <
>>505 んな こたァない
´∀`/ \__________
__/|Y/\.
Ё|__ | / |
| У.. |
>>506 end がどうなってるか一応聞いてやれよ。
508 :
505 :02/08/30 13:07 ID:tuhObyZ6
sub end{ &header; open(IN,"$file") || &error("$file を読み込めません"); @lines = <IN>; close(IN); foreach $line (@lines) { local($name,$url,$mail,$body,$hogehoge) = split(/<>/,$line); &output; } &footer; exit; } こんな感じです。
509 :
_ :02/08/30 13:12 ID:???
>>508 exit; はいらんよ、だって書きこんだ後 close している意味ないじゃん。
510 :
:02/08/30 13:29 ID:UPHK1/CW
フォントサイズの変更や入室後の名前変更ができないチャットで、 フォントサイズを大きくしたり、名前を変更している人がいました。 どうやったらできるのでしょうか?
>>508 戻り値を print 死体なら
return @lines;
だろうけど…。どう説明して良いやら。
>>510 そのチャットの管理人に聞いて下さい。
513 :
:02/08/30 13:45 ID:UPHK1/CW
>>511 ソースを書き換えるのですか?
どうやれば書き換えられますか?
514 :
511 :02/08/30 14:23 ID:???
>>513 ソースを見てスクリプトの脆弱な部分を探すんだよ。
515 :
_ :02/08/31 12:58 ID:???
($_="\xa8\xdc\xa6\xe7\xc9\xbe\xc8\x49")=~s/./\x82$&/g; substr($_, 8, 1)= "\x89"; substr($_, 14, 1)= "\x81"; print;
516 :
>_ :02/08/31 13:40 ID:???
%b5%cf%b4%d3%c5%b0
517 :
517 :02/09/01 03:40 ID:+nm+B08x
二つのリファレンス(一方から一方を辿ることができる)の位置関係を 知りたい場合はどうしたらよいでしょうか? 例えば $a = { 'b' => [ $c = { 'd' => 'e' } ] }; とあった場合に、 &rel($a,$c) = '{b}[0]' みたいな出力を得たいのですが…
>>517 とりあえずヒントだけ。
・関数 ref
・$a = {}; print $a;
以前もあったな。その質問
520 :
_ :02/09/01 11:03 ID:???
そう、以前にもあったけどまだやってたのか・・・ 一応、やってみたけどこんな感じでいいのかな? sub rel{ my( $key, $i, $rel ); GOOD_BYE: for $key ( keys %{$_[0]} ){ for ($i=0; $i<=$#{${$_[0]}{$key}}; $i++){ #if ( ${${$_[0]}{$key}}[$i] == $_[1] ){ print "goo\n"; } $rel= "{$key}[$i]",last GOOD_BYE if ${${$_[0]}{$key}}[$i] == $_[1]; } } $rel; }
521 :
_ :02/09/01 11:05 ID:???
ちょっと見づらいかな、もいちど sub rel{ my( $key, $i, $rel ); GOOD_BYE: for $key ( keys %{$_[0]} ){ for ($i=0; $i<=$#{${$_[0]}{$key}}; $i++){ $rel= "{$key}[$i]",last GOOD_BYE if ${${$_[0]}{$key}}[$i] == $_[1]; } } $rel; }
超絶ハッカー 何でも聞け
聞け
Perl上級車俺がどんな質問二問k0尾たっるぞ!
彼女を逝かせる超絶テクを教えてください。
528 :
517 :02/09/01 15:43 ID:+nm+B08x
>>518 やっぱりbreadth-firstサーチをしないとできないってことっすかね?
>>520 ,521
ありがとうございます。が、より一般的なケース(リファレンスの構造を問わない)が対象なのです…
529 :
517 :02/09/01 15:47 ID:+nm+B08x
内部構造的にはGCのためのリファレンスカウントがあるはずだとおもうので、 それをどうにかして逆に辿れないものかと思うのですが…
530 :
nobodyさん :02/09/01 16:23 ID:oCDCWNWk
◆4XfSMGTg はバッカーですか?
531 :
◆4XfSMGTg :02/09/01 16:27 ID:A6Gp7Ink
会社員で日曜日によく来ます。
ここは初心者コーナーとは思えない
>>529 いい加減だが...。
#!/usr/bin/perl
use strict;
use Data::Dumper;
my $a = { d => "e" };
my $b = { b => [$a] };
my $c = { f => { g => $b } };
print 'rel($b, $a) = ', rel($b, $a), "\n";
print 'rel($c, $a) = ', rel($c, $a), "\n";
print 'rel($c, $b) = ', rel($c, $b), "\n";
sub rel ($$)
{
my $dumper = new Data::Dumper([@_]);
$dumper->Indent(0);
$dumper->Dump() =~ /\$VAR2\s+=\s+\$VAR1->(.+);$/;
return $1;
}
-------------------------------------------
rel($b, $a) = {'b'}[0]
rel($c, $a) = {'f'}{'g'}{'b'}[0]
rel($c, $b) = {'f'}{'g'}
534 :
517 :02/09/01 23:45 ID:???
>>533 そうですよね…、クイックハックならData::Dumperを使うのが一番手っ取り早いんですが、
リファレンス構造を全てtraverseするので実行速度が…
ダイレクトに辿るとしたっら、やっぱり要素ごとにリファレンス元を
保持するようなarrayを持たせるしかないですかね。。
何に使うのか分からないのだが... デバッガでも作ってるの?
WebデザインとWebプログラミングってどう違うんですか? ネット初心者なんで本当に分かりません。誰か教えて下さい。
Webデザイン HTML、CSS,JavaScriptやブラウザーなど Webプログラミング PerlやCGI、PHP,Ruby等
Webデザイン→デザイナーがやる Webプログラミング→プログラマがやる
>>537 ありがとうございます。と言っても、本当はよくわかりません(w
仕事の内容がどう違うか分かり易く教えて頂けるとありがたいんですが。
>>538 ありがとうございます。
540 :
初心者 :02/09/02 02:28 ID:???
Perlを使って掲示板などを作りたいんですが、 最初にエディタやコンパイラーは、何を落とせばよいのでしょうか? 先輩の皆様お薦めのものなどございますでしょうか? 使ってるPCはWinMEなのですが、ご教授お願いします。
>エディタ 自分が使いやすいと想うテキストエディタを使え。 >コンパイラー 落ち着け。 ActivePerlでも落としとけ。
複数のファイルを読み込んでsortさせて表示したいのですが。 sortはできたのですが opendir(DIR, "$logdir") ; @2ch = readdir(DIR); closedir(DIR); ファイル名を読み込んでいる様子で。 検索してやり方を探してみたのですが自分では分かりませんでした。 アドバイスお願いいたします。
543 :
518 :02/09/02 06:08 ID:???
>>532 >>535 禿同。(w
>>528 BFS でなく DFS ですかね。
>>533 とどっちが速いかは
調べてませんが、泥臭く書くとこう。
sub rel {
my ($foo, $bar, $idx) = @_;
my $rv;
if (ref $foo eq 'ARRAY') {
for (my $i = 0; $i < @$foo; $i++) {
$foo->[$i] eq $bar && return $idx . "[$i]";
$rv = rel($foo->[$i], $bar, $idx . "[$i]") and return $rv;
}
}
elsif (ref $foo eq 'HASH') {
foreach my $k (keys %$foo) {
$foo->{$k} eq $bar && return $idx . "{$k}";
$rv = rel($foo->{$k}, $bar, $idx . "{$k}") and return $rv;
}
}
return;
}
つかそこまで速度を求めるほどデカい or 深いんでしょうか?
これ以上はもう perl のソース読んでねとしか。
>542 readdirのリファレンスを穴が空くほど読め それはopendirしたディレクトリのファイルリストを得る関数だ だいたい複数ファイルを読み込んでsortって何だ? そのファイルにはASCIIデータが1行しか入ってない事が保証されてんのか? 要リファクタリングと思われ
>>542 @2ch は無理だよ
変数名は数字で始まってはいけませn
数字から始まっていたら、全部数字で無ければいけないじゃ無いっけ?
548 :
nobodyさん :02/09/02 10:45 ID:Bmg2BPcQ
時間取得で質問があります。 月と日にちを取得したいのですが、 $tm=time; ($sec,$min,$hour,$mday,$mon)=localtime $tm; とやらないといけないのですか? $sec,$min,$hourが余計なんですが...
書き込んだメッセージの中にアドレス(
http:// 〜)が含まれていたら
<a href="" target="_blank"></a>
で囲みたいのですが、どうやってアドレスと判定すればよいのでしょうか?
>>548 (localtime(time))[0..8]
553 :
548 :02/09/02 12:32 ID:???
>>551 仕様ですか。
ありがとうございました。
554 :
548 :02/09/02 12:39 ID:???
>>552 なるほど。
$tm=time;
($mday,$mon)=(localtime $tm)[3,4];
で、できました。
ありがとうございました。
>>548 (undef,undef,undef,$mday,$mon)=localtime;
556 :
548 :02/09/02 12:46 ID:???
>>555 試してみました。それでもできるんですね。
ありがとうございました。
557 :
550 :02/09/02 12:51 ID:???
>>551 さん
できました!ありがとうございます!
558 :
542 :02/09/02 19:45 ID:???
&lock_open(TXT, "a.txt"); @txt = <TXT>; &unlock_close(TXT); open(OUT,"> x.txt"); print OUT "@txt"; close(OUT); &lock_open(TXT, "a2.txt"); @txt = <TXT>; &unlock_close(TXT); open(OUT,">> x.txt"); print OUT "@txt"; close(OUT); &lock_open(TXT, "x.txt"); @txt = <TXT>; &unlock_close(TXT); foreach $m (@txt) { chop($m); } でできました。opendirの意味がいまいちわからなかったので544さんの「それはopendirしたディレクトリのファイルリストを得る関数だ」 の助言で納得できました。おさわがせしてすみませんでした。ありがとうございます。
>>558 @txt = &lock_open("a.txt");
とか
print OUT &lock_open("a.txt");
とか
chop @txt;
とか。どーでもいーけど。
563 :
nobodyさん :02/09/02 21:53 ID:Ldjfc++c
perlでsocketを使用して、外部のサーバの情報を取得したいのですが、 その際にタイムアウトの時間を設定することは出来ませんか? 例えば、10秒以内に取得できなければ、エラーを出して終了するとか出来ませんか? 現在↓みたいにして取得しています。 よろしくお願いします。 #--------------------------- use Socket; my $sock_addr = pack_sockaddr_in(80, inet_aton("2ch.net")); socket(SOCKET, PF_INET, SOCK_STREAM, 0); connect(SOCKET, $sock_addr); select(SOCKET); $|=1; select(STDOUT); print SOCKET "GET / HTTP/1.0\r\n"; print SOCKET "\r\n"; while (<SOCKET>){m/^\r\n$/ and last;} while (<SOCKET>){print;} #--------------------------
fork
>>563 $time=$^T;
if(int($^T-$time)>=10){shutdown(2)}
ヽ(´∀`)ノ ( へ) ヽ
perldoc -q timeout
ここはPerl5なんか未だに使ってるヴォケのすみかですか・
Perl4 なんかよく使っていますが。何か。
571 :
nobodyさん :02/09/03 19:43 ID:bBGpZ26t
名前空間を気にせずに複数ファイルにコードを分割したいのですが、どのようにするとベターでせうか。
自分にとって読みやすい様にするのがベター。
573 :
f :02/09/03 19:51 ID:K/olstAP
-------変態・MTTどこでも-------
---●●●変態痴女を紹介致します。●●●---
例えば>欲求不満オマ●コヌレヌレ女・露出オナニー痴女・
フェラチオおしゃぶり女・ミニスカ・ノーパン娘・巨乳パイズリ娘・
アナルSEXおねだり娘・オマ〇コ弄られマン汁グチョグチョ女・
SM牝豚・緊縛・浣腸・スカトロ・等・・・刺激を求めています。
●●●学生・OL・主婦・モデル・牝豚・女王様・オカマ等・多数!●●●
090-8002-8356番
-----------------------------
http://www.mttdocomo.jp/ -----女性アルバイト随時募集・高収入(日払い)月100万円可能-----
http://www.mttdocomo.jp/ Iモードはこちら→
http://www.mttdocomo.jp/i
574 :
nobodyさん :02/09/03 20:21 ID:OLMxXVpc
575 :
初心者 :02/09/03 23:24 ID:KI0OEEO7
すみません質問です.
perlで、他のurlに変数と値をポスト送信してアクセスする方法はありますか?
print"Location:
http:// 〜";
はうまくいきませんでした。お願いします。
詳しい方、教えてください。
578 :
初心者 :02/09/03 23:34 ID:KI0OEEO7
>>576 ふつう、<a>タグの記述だと、
"〜.cgi" method="post" postdata="name=value&name2=value2"
とかになるのかな?と思うのですが(htmlではなくhdmlで作業して
いるので、そういう記述になっています)、
GETメソッドなら
print"Location:
http:// 〜.cgi?name=value&name2=value2";
みたいなやり方で出来るのかもしれませんが、
postだとどうなのかな?と。
perl自体、初めて触ったという話にならない初心者なので、
正直まいっています。
詳しい方、またそうでない方も、参考程度の意見で構わないので、
聞かせていただけたら幸いです。
579 :
bloom :02/09/03 23:43 ID:L4DD9EQO
ここってCGI厨しかいないの?
掲示板でログファイルのサイズが100KB以上になったら末尾要素を削除するという処理をしたいのですがうまくいきません # 記事の最大保存容量(単位:KB) $maxsize = 100; $maxsize = $maxsize * 1000; $logsize = (stat($logpass))[7]; while($logsize > $maxsize) {pop @data; $logsize = (stat($logpass))[7];} 書き込み処理の直前に↑のようにやってみたんですがうまくいきませんでした。 変数を書き出したりしてみたんですが原因がわからず困っています。 どなたかわかりませんでしょうか?
pop @data; だけじゃ、ファイルに書き込んでないから、 ファイルは変わっていない。
>>586 そのあとログファイルに書き込み処理をしています。
588 :
名無しさん@Meadow :02/09/04 12:03 ID:gOg0cXWU
だってさ、ファイルの大きさを求めて100KB以上かどうか判定しているのは、 書き込む前でしょ。 while($logsize > $maxsize) {pop @data; ↑$logsize = (stat($logpass))[7];} 矢印のところで書き込まないと・・・ それより別の方法を考えたら?
あ、なるほど。納得しました。
配列@dataのバイト数を調べたいんですが foreachでまわして一行ずつlength関数でバイト数を調べるほかに何か方法ありますでしょうか?
配列に入れる前に計っとくとか。
592 :
nobodyさん :02/09/04 15:23 ID:2Otyyhgv
593 :
名無し :02/09/04 15:51 ID:AttOz/Tz
以前、ここで見かけた様な気がするのですが 回答が書かれているのを見つけられないので 以前、質問した人に代わってお聞きします。 CookieをOnにしないと弾き出してしまう ここで使っているものみたいなCGIのスクリプトを 扱っているようなホームページは知りませんか? もちろん、ここにスクリプトを書いて下されば もちろん、なおさら有り難い事ですが…
594 :
b :02/09/04 16:01 ID:07M2lj7H
595 :
nobodyさん :02/09/04 16:12 ID:A3ZRMRKj
>>595 , - - 、 /ヽ
/ O \グヒャッ ! /ヽ、 / ヽ
,, : ,ー, O | / _,;, -'''"~~ ヽ
'' ; ∴_ノゝ ゝ /o O ヽ
ヽ ,;''"~"'';, / ┌─┐ ノ( ヽ
_ノ| ;;'';;'';;'';;'' | / | ⌒ | <スレ違いもはなはだしいわ!
ゝ、ヾ ヾ | ト、 | /
/ ヽ ヾ ヾ ヾ、 \ノ ノ
ノ\_ヾ ヾ /⌒ヽ、 ___/、
ノヾ ヾ_ _/ ノ, ヽ
ヽ、ゝ ノ ノ ハ ヽ
ゝ、 ノ ノ、 ノ ゝ | )
ー─一'´ ゝ、 l'´
) /
CGIだけど、なんか質問ある? Part 6
http://pc.2ch.net/test/read.cgi/php/1025930486/
>>593 どんなスクリプトでも頭に以下のような文を入れれば弾ける。
unless($ENV{'HTTP_COOKIE'}){
print "Set-Cookie: value=check; path=$ENV{'SCRIPT_NAME'} domain=$ENV{'HTTP_HOST'} expires=Fri, 31-Dec-2010 00:00:00 GMT\n";
}
&error_end('くっきーオンにしてちょ') unless($ENV{'HTTP_COOKIE'});
598 :
593 :02/09/04 19:35 ID:rVUPKdSl
>597さん どうも有り難うございました。 まさか、こんなに早く教えて頂けるとは思いませんでした。 ところで expires=Fri, 31-Dec-2010 00:00:00 GMT\n の部分なのですが、ここの記述は 絶対こうでなくても構いませんよね。
600 :
名無しさん@Meadow :02/09/04 21:42 ID:rtiaBVOu
>>590 $ perl -e '@ar=qw(a b c d e f); print length("@ar"), "\n";'
11
ディレクトリーを削除したいのですが、中にファイルが有るので消せません。 一気に消す方法はないでしょうか?ご教授頂けないでしょうか?
602 :
名無しさん@Meadow :02/09/04 22:18 ID:rtiaBVOu
>>601 $ perl -e 'system("rm -rf ./dir");'
./dirってとこは、消すディレクトリのパスを入れてね。
>>602 そう言う方法があるのですがね。
ご教授ありがとうございます!
604 :
601 :02/09/04 22:33 ID:???
CGIで使うのですが、それだと使用できませんですた・・・(´・ω・`)
605 :
名無しさん@Meadow :02/09/04 22:35 ID:rtiaBVOu
>>603 >そう言う方法があるのですがね。
~~
逆説の「が」ですか?
だったら、
$ perl -e 'use File::Path; rmtree ("./dir");'
606 :
601 :02/09/04 22:42 ID:???
>>605 そういう意味じゃないです(;´Д`)
そちらもダメでした・・・
logフォルダーに 1 と言うフォルダーがあり、
その中に、0.log 1.log ・・・ 10.log
と言うファイルが有るので、それをフォルダーごと消したかったんです。
説明が悪かったのかも知れませんが・・・
>>606 >そちらもダメでした・・・
perl5でしょ?
libディレクトリにFileモジュールが入ってないってこと?
考えがたい。
じゃスクリプトミス?
use File::Path;
rmtree("./dir");
ってちゃんと書いた?
じゃファイル属性を確認してちょ。
>>607 書き間違えでした、コピペで逝けました
アリガトン
web用のCGI作ってるんすけど。 \r\nって\nにしちゃダメなんすか? 特に動作に問題は見当たらないしファイルサイズも削れるんで\nでいきたいんすけど。 それとも不都合な環境とかあるんでしょうか。
>>611 改行は、<br>で表すんだから、別に構わんです。
ただ、編集環境がwindows(MS-dos)なら、普通、¥r¥nが自動的に
つくんですが。いちいち変換するの?
613 :
611 :02/09/05 05:48 ID:???
>>612 改行コード自体いまいち理解できてないんですすんまそん。とりあえず
print "Set-Cookie: $cookie\r\n";
とか
print "Content-type: text/html; charset=EUC-JP\r\n\r\n";
とかの\r\nを\nにしちゃまずいんかなと思ただけ、というか
\nでいけるならなんでわざわざ\r\n使ってるんだろうとか思ってみただけれす。
レスどうもっした。
ってゆうことで、613さんのは、htmlファイルの 出力だから、問題は起こらないね。
617 :
T女の竹田 :02/09/05 11:51 ID:sI+RlSZg
>>613 ftp://ftp.nic.ad.jp/rfc/rfc1945.txt The line terminator for HTTP-header fields is the sequence CRLF.
However, we recommend that applications, when parsing such headers,
recognize a single LF as a line terminator and ignore the leading CR.
(訳)HTTPヘッダ領域の行末区切りはCRLFの並びです。しかし、アプリケーションが
そのようなヘッダを読み取るときは、単独のLFを行末区切りとして解釈し、続くCRを
無視することをお勧めします。
というわけで、実際問題LFだけでも問題はまずないだろうけど、正式には
CRLFだよ。
訂正 続くCR→前のCR
619 :
ゆゆ :02/09/05 12:03 ID:FN8hs1rs
CGIチェックする際、サーバで perl -wc やってます。 エラーで 70行目に @Iとあるけど\@Iにするべきというエラーがでるのだけど そんなものどこにも書いてないです。 いままで行数があってないなどありましたが、@Iというもの自体が ない場合のエラー場所がわかりません。 何か特有の字が @Iとなったりしますか?
ソース見せろ、バカ。
全角空白
622 :
613 :02/09/05 13:58 ID:???
>>617 \nを使うって事はアプリケーション側のサービスに甘えるってカンジすか。
とりあえずCGIを公に配布とかしたりしない限りは
こっそり\n使っちゃってもいっか、と解釈。
\r\n だとWindowsサーバーで動かすときとか、おかしくなることがある。
624 :
613 :02/09/05 14:18 ID:???
\x0D\x0A のように16進数でCRLFを表すのがいいらしい。 Windowsでの改行はCRLFだから、\r\nで出力してしまうと\r\r\nになってしまう罠。
626 :
613 :02/09/05 14:29 ID:???
世の中は罠がいっぱいだなや。
627 :
:02/09/05 14:39 ID:???
掲示板の書き込みの中の、半角の数字を全角に変換。 または、その逆の変換を選択できるようにしたいです。
javascriptつかうと半角(全角)しか受け付けないようにできるYO.
629 :
nobodyさん :02/09/05 16:18 ID:FN8hs1rs
CGI内にジャバスクリプトってそのまま使えるの? >>EOF 内にHTMLのほうで使ってるまま持って来たら InternalServerErrorに・・・。 ジャバスクリプト取ったらエラーは起こらないのだけど。
>>630 初心者わらってんじゃねーよ。
初心者をあざ笑うスレでも作ってそこでやってくれ。
解っているのなら教えてやって下さい。
初心者同士で嘗め合うことから先に進めません。
>>629 Java Script はクライアント側で動作しますので、
Perl 文法エラーの可能性が高いと思われます。
>>629 ジャバスクリプト内に半角「@」があるんでしょうね。ほぼ間違いなく。
>634 ◆4XfSMGTg はオープントリップ kusokote 630 と 631 は別人。
636 :
nobodyさん :02/09/05 22:27 ID:CVMgCTHS
textareaに書かれた文字列を.txtに出力するものを 初めてperlでCGIを書いてみたんですが動きません。 どんな原因が考えられますか? #!/usr/local/bin/perl require "./jcode.pl"; $object = $ENV{ 'QUERY_STRING' }; open (FILEOUT, ">./xxx.txt"); print FILEOUT @object; close (FILEOUT); exit;
>>636 $object にデータ入ってても
@object にはなにも入ってないように思うが。
デコード処理が行われていない。 jcode.pl が使われていない。 GETで受け取るため文字制限がある。
掲示板の過去ログをlogというフォルダの中に1.html 2.html〜、というふうに収納してるんすよ。 フォルダ内のファイル数を数えて、その数+1を新規の過去ログのファイル名にしてるんすよ。 でも、そうすると既に存在するファイルを削除した場合、当然やけどファイル数が減ってしもて ファイル名がかぶってしまうんすよ。 何か良いファイル名の付け方知りまへんか。 ご教授よろしくお願いします。
フォルダ内のファイル数を数えるのではなく、別にカウントしとけば。
641 :
639 :02/09/05 22:57 ID:???
>>640 書き込みボタンを押した回数をカウントするとかですか?
もっとスマートなやり方あればよろしこ頼みます。
>641 空きが見つかるまでリピートぶん回して open(OUT, "./log/日付とか$i.html");
ファイル名を日付にするとか。
645 :
639 :02/09/05 23:16 ID:???
なるほどいろいろあるもんですのぉ。
>>627 半角全角は面倒だね。Perlでやると大抵Shift-JISとかで送られてきた
文字列を処理することになるから文字の境界で苦労する。
>>628 さんの言うとおり、JavaScriptでやるのがいいと思う。
ちょっと書いてみた。板違いだけど…
<form OnSubmit="txt=mainForm.messageArea.value;
while (txt.match(/[0123456789]/))txt=txt.replace(/[0123456789]/,
'0123456789'.charAt('0123456789'.indexOf(RegExp.lastMatch)));
mainForm.messageArea.value=txt;">
これで全角→半角が一応IE6ではできた。他は試してない。
mainForm.messageAreaは好きに変えてね。
647 :
636 :02/09/06 00:15 ID:GoSqrpgT
cgi-lib.plを用いてgetではなくpostにして、改行処理らしきものをつけ無事解決しました。 けれどデコードっぽいことをしてませんが、半角カナいれたりしても何も問題がありません。 のちのちまずいことになりますかね?
>>647 >半角カナいれたりしても何も問題がありません。
EUCで書いてるからカシラ
649 :
nobodyさん :02/09/06 00:22 ID:+YKj9Zdt
>>646 俺はJAVAscriptで入力制限てどうも気に入らないんだけどどうよ?
ユーザビリティーを考えてjavascriptの入力チェックを書くことあるけど
クライアントでチェックってどうも設計上よろしくないと思っている俺。
650 :
636 :02/09/06 00:37 ID:GoSqrpgT
>>611 ,617,625
ここはPerlスレだからCGIと仮定するのもおかしいかもしれないけど、
「CGIでParsed headers」なら規格上 LFのみ か、 CRLF のどちらかです。
http://hoohoo.ncsa.uiuc.edu/cgi/out.html もうちょっと詳しく言うと、CGIのヘッダというのは
HTTPサーバが解釈して、HTTPヘッダを生成するためのものなので、
フォーマットは一緒ですがHTTPのヘッダとは別物と考えるべきです。
蛇足で、NPHの場合はそのままクライアントに渡されるので、
当然CRLFにする必要があります。
652 :
651 :02/09/06 00:38 ID:???
なんか変な文だ。ごめん
>>650 EUCで書いてあると半角カナは化けないにょろ。
何故かmacで書きこまれるとたまに化けるけど。そんときはjcodeかな。
654 :
初心者以下 :02/09/06 00:44 ID:DvbQB/jN
教えてください。
自分のHPに素材サイトで手に入れたJavaゲーム(9面パズル)を
置いてみたのですがサーバーにアップしてDLすると
何故か遊べなくなってしまいます。
(2枚目、3枚目の画像が表示されない。タイムカウントが動かない
ゲームが始まらない)
絵を置き換えたからかな、と思い試しに
加工を加えずアップしてみましたがやはりダメでした。
ftpでアップしているのですがコレが原因なのでしょうか?
初心者ですんません。
javaは2日前に知りました。
素材サイトのゲーム
http://www18.big.or.jp/~neon2/bunkatu/usa9.shtml
>>654 板違い
それに、それはJavaではなくJavaScriptだ
2apeとかの掲示板を携帯対応にはできるのでしょうか?
>>658 $ua=$ENV{'HTTP_USER_AGENT'};
if($ua=~/UP.Browser|DoCoMo|J-PHONE|ASTEL|PDXGW|L-mode/i){
あとはお好きに
>>659 すごく初心者なのですがそれをどうしたらいいのでしょうか?
>>649 うん、セキュリティから言うとJavaScriptじゃ何もしてないのと同じだしね。
この場合みたいにおまけみたいな機能ならいいかなと思った。
unkooooooo
>>661 まずは携帯から掲示板にアクセスして、
うまく動作してない箇所があったら
>>659 の方法で処理を振り分ける。
一応うちではそうしてるにょろ。
サブルーチンの事で質問ですけれども。 ぶっちゃけスクリプトのどこに置くのが一番効率いいんでしょうか。 とにかく先頭の方でしょうか はたまた最下部でしょうか それとも呼び出す直前でしょうか どこでもいっしょでしょうか というかなるべく使わないほうがいいんでしょうか 自分では調べられないので教えてくださいまし。
変わらないから気にしなくて良し
669 :
667 :02/09/06 03:51 ID:???
はい
670 :
名無しさん@Meadow :02/09/06 05:32 ID:dZ6p0Gwt
>>646 IE5.5ではできんかった。というよりINPUT TYPEとかも書いてほしい。
>>649 よく理解できんです。
サーバーのデータベースに直接アクセスするとかソースを見られて
はいけないものは、CGIだけど、それ以外は、なるべくサーバーに
負荷がかからないクライアントサイドのJavaScriptで処理した方が
いいのでは。
まあ、JavaScriptをOnにしてくださいと書くのは面倒というのはある。
テキストブラウザとかだとJavaScriptできないし。あとJSのバー
ジョンとかNSとIEの違いによるサポート状況の違いとか面倒。
>>627 もう来ないか。textareaだかで受け取ったデータの中の
全角<->半角変換スクリプト:
$input = "012344567899012";
@zenkaku=('0', '1','2','3','4','5','6','7','8','9');
@hankaku=('0','1','2','3','4','5','6','7','8','9');
$sw = 1;
if ($sw == 1) {
&zen_han(\@zenkaku,\@hankaku);
} else {
&zen_han(\@hankaku, \@zenkaku);
}
sub zen_han {
my ($A, $B) = @_;
for $i (0 .. 9) {
$input =~ s/@$A[$i]/@$B[$i]/g;
}
}
print $input, "\n";
671 :
nobodyさん :02/09/06 06:55 ID:HPly/0Dw
cgiは今回初めてです。アクセス制限の仕方を教えて下さい。
和鳥で、KENTのWebPatioを使ってます。 regist.cgiの中の unlink("$logdir$in{'no'}\.cgi"); unlink("$logdir$in{'no'}\.dat"); なのですが、unlinkでエラーを返してきます。 和鳥だとunlinkは使えないのでしょうか?
掲示板が昨日まで動いていたのに急に動かなくなりました。 早くどうにかしてください。
677 :
627 :02/09/06 14:32 ID:???
PerlでのCGIなのですが、スクリプトの負荷を数値化する方法はないですか?
>>670 文字境界…。
$input = "浮P";
とかにすると化けちゃうよ。
680 :
ぱぴぷぺ :02/09/06 17:41 ID:UnlQ9r36
なんとかPerlで動的に画像をブラウザに表示させたろう と考えてるんだけど、モジュールとか使わない場合、 XBMつーーのがあるのを知ったのですが、 これはモノクロのみカラーは絶対ダメ?
>>680 >動的に画像をブラウザに表示
なら、Location、binmodeで吐く
「動的に作成した画像をブラウザに表示」
なら、GDが無難か?ファイルにもよるか…
xbmは白黒のみ xbm,xpmはIEで表示できたっけ。
>>679 perlによる日本語の扱いはeucにするのが常識。
>>683 ごめん。ついSJISで考えてた。
EUCなら、
$input="横井";
だね。
685 :
:02/09/06 23:30 ID:???
while (!mkdir($hoge, 0705)) { mkdir "$hoge", 0705; } これってどんな意味があるんですか?
$hogeがパーミッション705で製作されるまで繰り返す。
>>685 どうしてもmkdirしたい
{}の中が怪しいがw
688 :
685 :02/09/06 23:38 ID:???
>>686 これはもし、ディレクトリィがあった場合はどうなるんですか?
>>687 どの部分がぁゃしぃですか?
689 :
nobodyさん :02/09/06 23:42 ID:Aw2qBvZ4
ある変数の一番最後の文字を別の変数の頭に置くにはどうすればよいでしょうか。 例えば$aaaが4876で$bbbが124だった場合、$aaaを487、$bbbを6124にしたいのです。 「$bbb = chop($aaa).$bbb」 と書いてみたら、結果は$aaaが空白で$bbbが4876124になってしまいました。 どう書けばよいでしょうか。
690 :
nobodyさん :02/09/06 23:57 ID:1kVQvMrN
■10.000円の高額収入
1件につき最大10.000円の高額収入。月収100万円以上も可能。
■画期的なビジネス!
インターネットを利用したこれまでにない斬新で画期的なビジネスです。
■誰でも出来ます!
インターネットができる環境の方なら誰でも参加可能です。
インターネットを利用したビジネスですので、自宅や会社で好きなときにで
きるビジネスです。
■専門的な知識は一切不要!
ビジネスに必要なツールは全て当社で用意いたします。
また、サポートも万全です。
■詳細は今すぐこちらから
http://www.bea.hi-ho.ne.jp/paisen/
>>689 $aaaを""で1文字ずつsplitしたものを配列に入れて@hairetu[-1]で最後の文字を取り出してみる?
692 :
685 :02/09/07 00:01 ID:???
これは? $ccc=$aaa$bbb; $cco=$ccc =~ s/\d/\d/g; $cco=$cco-1; $ccc=~ s/(\d{1,$cco})([^\n])/$2/g; $ccc=$ccc$bbb;
693 :
685 :02/09/07 00:02 ID:???
一行ミスった。 $ccc=~ s/(\d{1,$cco})([^\n]*)*/$2/g; こふだった。
694 :
685 :02/09/07 00:05 ID:???
全然違うので考え直してきます。
695 :
685 :02/09/07 00:12 ID:???
$aaa='11111'; $bbb='22222'; $cc0="$aaa$bbb"; $cco=$cc0 =~ s/\d/\d/g; $cco=$cco-1; $ccc =~ s/(\d{1,$cco})([^\n]*)/$2/g; $ccc="$ccc$bbb";
$aaa = '4876'; $bbb = '124'; $aaa =~ s/(.)$//;$bbb = $1.$bbb;
>>685 そのスクリプトを理解する必要はないし、そのスクリプトから
何かを学ぼうと思わない方がいいと思うよ。
>>689 そのまま
$bbb = chop($aaa).$bbb;
で動くと思うけど。
700 :
697 :02/09/07 00:23 ID:???
701 :
685 :02/09/07 00:24 ID:???
$aaa='11111'; $bbb='22222'; $cc0=$aaa; $cco=$cc0 =~ s/\d/\d/g; $cco=$cco-1; $cc1=$aaa; $cc1 =~ s/(\d{$cco})([^\n]*)/$2/g; $ccc="$cc1$bbb";
702 :
685 :02/09/07 00:39 ID:???
685[なぜだ?今の答えなら間違いなくあたっていたはずだ。 きさまは以前にも突然現れ消えたことがあった。] 689[オラには聞き逃げができる。] 685[そいつはやっかいな技だ。バシッ!私も聞き逃げは自身があるんだ。]
703 :
685 :02/09/07 00:43 ID:???
1行書き忘れた。 685[689とまではいかないがね。]
704 :
689 :02/09/07 01:15 ID:mL5CsCc5
>>699 わたしもなぜ$bbb = chop($aaa).$bbb; で$bbbの値全部が$aaaの頭にくっついて
しまうのか、わからないんです。
>>685 $aaa $bbb の値は dat.txtを参照しているので、固定値ではありません。
705 :
689 :02/09/07 01:34 ID:mL5CsCc5
すみません。間違えました。頭ぐちゃぐちゃです(;;) わたしもなぜ$bbb = chop($aaa).$bbb; で$aaaの値全部が$bbbの頭にくっついて しまうのか、わからないんです。 ○ わたしもなぜ$bbb = chop($aaa).$bbb; で$bbbの値全部が$aaaの頭にくっついて しまうのか、わからないんです。×
ループの中でやってるとか。 #例 while($aaa){ $bbb = chop($aaa).$bbb; } これなら$aaaが空になって全部$bbbの頭に付く。
708 :
689 :02/09/07 01:55 ID:mL5CsCc5
>>706 きっとその通りです(><)
でも、置換条件があるので、
if($aaa ne $hoge){
$bbb = chop(aaa).$bbb;
}
というように、{}内に書かなきゃいけないかなと思っているのです。
発想自体間違っているのかな...
>>707 文字列扱いにする方法はありますでしょうか。。
>>707 chopの時点で文字列コンテキストに変換されるわけだが。。
>>708 適当なとこ言うな。
>>689 普通にやりたいことやるなら
$bbb = substr($aaa, -1) . $bbb;
だけど、chopでも$bbbの値は希望のものになるはず。
ならないなら他に原因がある。
前後のコード晒してみると吉。
一度だけ通れば良いなら if($flag != 1 && $aaa ne $hoge){ $bbb = chop($aaa).$bbb;$flag=1; } とか。
( ´,_ゝ`) プッ みなさんレベルが低いですね
713 :
689 :02/09/07 02:10 ID:mL5CsCc5
>>710 とりあえずchopはあきらめてsubstrで試してみます。
(やりたい事は同じはずだから)
ありがとうございました。
ちなみにif(){〜}はループじゃないぞ。
その外側にwhile(){〜}とかfor(){〜}とかforeach(){〜}とかの
ループがあるんじゃないのか。
substrじゃ$aaaの値は減らないけど良いの?話違わない?
>>712 スレタイ嫁
……chop、カッコで囲んだら? $bbb = (chop($aaa)).$bbb;
>>684 私は、jperl使ってるので別に文字化けしないけど。
じゃtr使えばいいじゃんという問には答えません。
( ´,_ゝ`) プッ みなさんレベルが低いですね
↑さびしんぼハケーン(・∀・)ニヤニヤ
↑さびしんぼハリケーン(・∀・)ニヤニヤ
721 :
CGIゲームつくりたい人 :02/09/07 18:06 ID:BCsa1yWW
CGIに関してはまったく知識がないのですがこれから勉強するつもりなのですが 目標が自分でCGIゲームを作ることで そのために参考書を買って勉強したいのですが オススメの本ありますか? 本屋いってもゲーム作りの本がどれだかわからなくて・・・ よろしくおねがいします。
>>721 作りたいゲームにもよるけど
Perl は君の求めるものに向いてないと思うよ。
JavaScript とかの方が良いんじゃない?
>>722 C言語薦めた方が…。
>>721 perlでゲーム作るのは空しいかも。
趣味の域は越えられますまい。
>722-723 まてまて、Flash+CGIという素晴らしいコンビネィションがあるだろうが
>>721 が何言語でCGIを作るのかが、大事だろうが。
726 :
nobodyさん :02/09/07 20:02 ID:6TBf75EA
データが入ってるファイルに一行で ヤッタ?マン コーヒー ライター という3つがスペースで区切られてあった時、 aa=ヤッタ?マン bb=コーヒー cc=ライター というふうにするにはどうすればよいのでしょうか?
>>726 ($aa, $bb, $cc) = split / /,"ヤッタ?マン コーヒー ライター";
730 :
CGIゲームつくりたい人 :02/09/07 20:58 ID:BCsa1yWW
>>722-725 >>727 レスありがとうございます。
作りたいゲームは・・・罪と罰++やFFAみたいなゲームです
普通のPerlの本をきちんと読めば作れますか?
それともゲーム作成向けの本とかあるんですか?
だ!か!ら!無理だっつーの。 だいたいゲーム作りたいならCやれ。 Perlは馬鹿でも使える言語だが、ゲームが作りやすい言語でない。 習得期間は Perlは3カ月で Cは1年 C++は3年だ。 Perlの本はオライリーの奴買っとけ。
修得はCよりもPerlの方が時間がかかるとおもうよ。 複雑さがCとは比べものにならないでしょ(^_^;)
>733 両方覚えたけどPerlの方が楽。 Cは基本的な部分を覚えるまでに挫ける人が出そう。 プログラムのいろはを知らない人間ならPerlからの方が断然楽だと思う。 サンプルソースが山のように転がってるし。 なにをもって習得とするかの問題だけど、出力をHTMLでできる分、 PerlでCGIスクリプト作った方が楽だと思うよ。
>>730 perlは「ゲームを作るための言語」ではないので
「ゲームの作り方の本」なるものはないと思われ。
応用すればゲームにもなるというだけの話
736 :
nobodyさん :02/09/08 01:41 ID:GXmEPtQH
for(@xx){〜} と foreach(@xx){〜} の違いを教えてください
perl -MO=Deparse,-x7 -e 'for(qw/a b c/){ print }' perl -MO=Deparse,-x7 -e 'foreach(qw/a b c/){ print }' というわけで、for(@配列)の場合、ただのforeachと同等。
738 :
nobodyさん :02/09/08 01:53 ID:GXmEPtQH
サンクス
739 :
nobodyさん :02/09/08 06:17 ID:nOl8KoRo
結論 perlでゲームは作れるが、perlでゲームを作る本などない perlで掲示板が作れるようになれば、まあゲームも作れるだろう
>>732 Perlでマインスイーパー作りましたが、何か?
741 :
nobodyさん :02/09/08 06:47 ID:gqIGmvuo
>>732 アクション系列のゲームならそうでしょうが、ウェブ上でのゲームならPerlベースで幾らでもありますよ。
表現はHTMLが精々ですけどね(w
で、質問です。
AnyDBMで1000人前後のデータ(名前、成績、等大小50パラメータぐらい)を管理しようと考えています。
それでファイルロックをどうしようか悩んでいるのですが、
sub LOCK {open (LOCK, "lockfile.lock");flock(LOCK,2);}
sub UNLOCK {flock(LOCK,8);close(LOCK);}
こんなのってありなんでしょうか?
それともやはりrename等で制御したほうが良いですか?
742 :
名無し二丁拳銃 ◆0s6WDHa6 :02/09/08 11:30 ID:HukZlCsp
最近Perlを始めて,今,カウンタを作っているところなんですが, 以下のソースだと,カウンタの値が永遠に1のままなんです。 #!/usr/local/bin/perl #値を保存するファイル名 $file = "count.dat"; #−−処理開始−− #ファイルを読み込み open FH,$file; $count= <FH>; #カウントアップ処理 $count++; #書き出し処理 print "Content-Type: text/html\n\n"; print "Total : <a href=cgi-bin/acces/replist.cgi>$count</a>"; #値を保存 open FH,>$file; close FH; exit;
sendmailでメールを送りたいです。 html形式で送ろうと思うんですが、 ヘッダーの部分の Content-Type: text/plain; charset=ISO-20220JP ここのtext/plainを text/html に変えればいいだけですか? ローカルだと実行できないので教えてください。
>>744 ローカルでテストするときはsendmailに渡すんじゃなく、ファイルに書き出してみればいいんじゃない。
746 :
nobodyさん :02/09/08 12:14 ID:Y8OpaJeI
はじめまして。 掲示板のプログラムを作成しています。 『投稿確認』をしたいのですが、そこでどうにもこうにも困ってるキングオブDQNなんです。 まず、htmlファイルからsubmitで送られたデータを表示することはできるのですが そこから先、どうすればいいのか分かりません。 どうすれば [投稿確認画面表示]⇒[logファイルへの書き込み]の二段構えにすることができるのでしょう?
>746 <input type="hidden" name="***" value="*********">
748 :
:02/09/08 12:24 ID:???
749 :
746 :02/09/08 12:31 ID:Y8OpaJeI
>>745 どもっす。
とりあえず、上手くいきました。
whileとかループをぬけるのはlastですが、ifをそっこーで抜ける方法はありますか?
752 :
746 :02/09/08 13:16 ID:Y8OpaJeI
うう、うまくいかなかった。やっぱりキングオブDQNだよ。w 確認画面でsubmitで送られた文字を表示して <form action = "./data.cgi" mehtod = post> <input type = "hidden" name = "confirm" value = "OK"> <input type= "submit" value = "投稿する"> で最初にsubmitで送られた文字を表示するのと同じCGIを呼び出して if ($confirm eq 'OK' ) { …… } で分岐させたのだけれど、うまくいかない。 確認画面が表示されるだけです。しかも、nameとかemailとかのデータが全部消えてる。
754 :
747 :02/09/08 13:21 ID:???
>752 1から勉強しなおせ。 >751 gotoなどと言ってみるテスト。
>>752 確認画面を表示の時に一度送られてきたデータも
hiddenで書き出してる?
756 :
746 :02/09/08 13:26 ID:???
>>755 いえ、していません。必要なのでしょうか?
757 :
747 :02/09/08 13:30 ID:???
>756 nameなどのデータを入力 ↓ 入力されたデータを受け取る 確認画面表示 ↓ 入力されたデータを送っていない データが空っぽ
>>754 >gotoなどと言ってみるテスト。
( ´,_ゝ`) プッ
759 :
746 :02/09/08 14:01 ID:???
hiddenで書き出しても、うまく送信できません。 なには他に注意点はあるのでしょうか? 荒らしてゴメン。
>759 ソースをtxtにしてアプれ。 多分一斉につっこんでくれる。
>>759 HTMLを覚えてこい
データの送受信を覚えてこい
日本語覚えてこい
htmlファイルへの書き込みのときに現在は下のようにしているのですが これだとhtmlファイルを見ると\nが効いて改行されているのですが cgiファイルでは改行されていないので見にくいです。 ヒアドキュメントを使って print HTML <<HEADER ではだめでした。 どうしたらよいでしょうか? open(HTML, ">hoge.html") || &error("ファイルが開けません"); print HTML "<HTML>\n<HEAD>ここにタイトルやスタイルシートなどをごちゃごちゃと</HEAD>\n<BODY>\n"; close(HTML);
説明する能力って大事だよね
764 :
746 :02/09/08 14:25 ID:???
もういいです。さいなら。
print pack('C*', map{$_+180}(1,27,0,35,23,27,12,42,17));
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。 1:自分はこう言う事がしたい。 2:それでこんな風にやってみたが・・・ 3:それだとこんなエラーが出て上手く行かなかった。 1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。
767 :
nobodyさん :02/09/08 14:45 ID:971QY8yx
a.sh(sh)で定義した変数をperlで書いたスクリプトで参照したいのですが どのように書いたらよいですか? a.sh #!/bin/sh STR=testtxt ↑ (このSTRという変数をperlのスクリプト内で使いたい)
-- test.sh ------------------------------ #!/bin/sh export STR=mona /usr/bin/perl test.pl -- test.pl ---------------------------- #!/usr/bin/perl print "STR = $ENV{STR}\n";
769 :
nobodyさん :02/09/08 16:11 ID:QxRWekvC
他人がWindowsで作成したiモード用のcgiを直すことになったのですが、 iモード用作成は初めてで、 しかもMacなので、どうやってテストすればいいか分かりません。 iモードツールみたいなもののMac版ってないですかね? 教えて下さい。
マルチ氏ね
771 :
nobodyさん :02/09/08 16:30 ID:fnlZSMGR
GoogleのクロールにCGIの実行結果を反映させるには、どのような点に注意すればいいですか?
>>771 どうやらGoogieは、「〜.cgi」で終わってるリンクは無視するけど、
「〜.cgi?***」となってるリンクは拾う模様。
***の部分はテキトーで構わないので、Googleに拾って欲しければ
そのCGIへリンクを張る時に、「<a href=〜.cgi?hoge>」とでもしておけばよし。
まぁ俺調べに過ぎないのでダメだったらすまそ。
つってもスレ違いぽいけど。
>>762 open(HTML, ">hoge.html") || &error("ファイルが開けません");
print HTML "<HTML>\n";
print HTML "<HEAD>ここにタイトルやスタイルシートなどをごちゃごちゃと</HEAD>\n";
print HTML "<BODY>\n";
close(HTML);
774 :
nobodyさん :02/09/08 22:08 ID:wn4ctmfO
Proxyをはじくものを作りたいんですが、どうやったら判別できますか?
775 :
適当 :02/09/08 22:12 ID:???
>>774 if(!$ENV{'HTTP_HOST'}){
print"カエレ";
exit;
}
>744 漏れ串くらいしか無理。 A串は無理。 診断君でも見てな。
既存のものを見習え。
778 :
775 :02/09/08 22:18 ID:???
HTTP_HOST>REMOTE_HOST
779 :
741 :02/09/08 22:19 ID:gqIGmvuo
鬱。
780 :
nobodyさん :02/09/09 00:56 ID:ocbC3C/Q
copal2の構文チェックってどうやるの?
781 :
nobodyさん :02/09/09 01:41 ID:ewVE42mB
はじめまして 初心者なのでよろしくお願い致します CGIを単独で実行できるEXEにするようなツールはありませんか? postやgetで受信した変数を判断し、ローカルでそれっきりで動くもの そういうものはありませんか?
CGIってのが、PerlならPL2EXEとか。
783 :
Rikuta :02/09/09 01:50 ID:4uRhXRlu
掲示板を作成しています。 長くなったタイトルや、URL表記を途中まで取得し、 残りを「....」としたいのですが、正規表現ではどうするのでしょうか。 @subject = split(//,$subject); @subject = splice @subject,0,40; undef $subject; foreach (@subject){ $subject = $subject.$_; } print $subject; としたのですが、当然というか・・・日本語では化けてしまいます。 Jperlを使用しないでどうすればよいでしょうか。
784 :
nobodyさん :02/09/09 01:52 ID:ewVE42mB
782>> ありがとうございます 試して見ます
785 :
741 :02/09/09 02:12 ID:2XJWXXjE
鬱。ダレモコタエテクレナイヨー
786 :
741 :02/09/09 02:49 ID:2XJWXXjE
チョトIDガカコイイカモ
>>783 $subject =~ s/([\W])/sprintf("%%%02X",unpack("C",$1))/ge;
788 :
787 :02/09/09 03:07 ID:???
↑URLエンコードしてしまう
789 :
nobodyさん :02/09/09 03:08 ID:EyAemdpt
>>783 $n = 40;
$subject = substr($subject,0,$n+1);
$tmp = chop($subject)."\0".$tmp while($subject);
$tmp =~ s/(?<=[\x81-\x9f\xe0-\xfc])\0(.)\0/$1\0\0/g;
$subject = substr($tmp,0,$n*2).'....';
$subject =~ tr/\0//d;
print $subject;
>>741 読み込みオープンのロックは1。それも他の書き込みに対するロックなので
読み込みには無力。
書き込みで開いてロックしときな。
790 :
783 :02/09/09 03:18 ID:???
>>787 表示上で使用しますので、エンコードはちょっと・・・
>>789 ありがとうございます。
うまくいきました。
>>790 エンコードして切ってデコードって言いたいんじゃないの?こんなふうに。
$n = 40;
$subject = substr($subject,0,$n+1);
$subject =~ s/([\W])/sprintf("%%%02X",unpack("C",$1))/ge;
$subject = substr($subject,0,$n);
$subject =~ s/(%[a-f\d]|%)$//i;
$subject =~ s/%([a-f\d]{2})/pack("H2",$1)/egi;
print $subject;
792 :
791 :02/09/09 03:42 ID:???
あ、これじゃエンコードしてる意味無いね(;´Д`)
793 :
nobodyさん :02/09/09 03:43 ID:PULoisdM
空行は/^$/にマッチするのは分かるんだけど 空行を削除するにはどうしたらいいんですか? あたりまえだと思うけど while(<STDIN>){ s/^$//; } としても駄目なんです。。
>>793 @line = <IN>;
$n = @line;
for($i=0; $i<$n; $i++){
if($line[$i] eq "\n"){
$line[$i] = '';
}
}
かな…?
>>793 print unless /^$/;
で逝けますYO
>>783 Shift-JIS
$subject = ($subject =~ /([\x0-\x7e\xa0-\xdf]|[\x81-\xbf\xe0-\xfc][\x40-\xfc]){40}/s) ? $& : $subject;
EUC-JP
$subject = ($subject =~ /([\x0-\x7e]|[\x8E\xA1-\xFE][\xA1-\xFE]){40}/s) ? $& : $subject;
これでどうかな?
797 :
nobodyさん :02/09/09 09:52 ID:OPX6Zz9+
ド初心者なんですがスマソ パスワードが違ったらはじくのを作りたいんですが正しく動作しません どこをどう直せばいいでしょうか? if ($pass != xxxx){ print "aho"; exit; }
799 :
nobodyさん :02/09/09 10:16 ID:OPX6Zz9+
>>798 パスワードが違ったらahoと表示させたいんですよ
eqだと合ってたらahoですよね?
>>799 そこまでわかってて何故neにたどりつけないのか謎
ちなみにパスワードは暗号化したほうが良いよ
801 :
nobodyさん :02/09/09 10:41 ID:OPX6Zz9+
>>800 neでやっても500Internal...がでてきちゃうんですよ
802 :
nobodyさん :02/09/09 10:54 ID:OPX6Zz9+
言い方がまずかったですね passが違う場合にif内を実行したらcgiを終了させるものを作りたいんですよ (passが合ってるならifより後を実行)
803 :
◆TpctYDQ6 :02/09/09 10:56 ID:YALFpbWA
if ($pass ne "xxxx"){ print "aho"; exit; } で、エラーなら問題は別のところでしょ。
804 :
nobodyさん :02/09/09 11:04 ID:OPX6Zz9+
>>798-803 print "Content-type: text/html; charset=EUC-JP\n";
を加えたら正しく動きました。スマンコ
首釣って逝ってきます。
>>794 ,795
その方法でいけました。
ただ、
while(<STDIN>){
s/hoge/hage/;
s/omeko/sasete/;
print;
}
みたいな置換と一緒に空行を削除したい
場合はどうすればいいの?
ifをネストすればいけると思うんだけど
書けないので教えてください。
>>806 while(<STDIN>){
if($_ ne"\n"){
s/hoge/hage/;
s/omeko/sasete/;
print;
}
}
質問があります。 今日が、その年その月の第何週何日目か? を求める方法を教えて下さい。 例えば今日の場合、第2週の3日目なので 出力結果を23と得たいです。 お願いします。
>>806 while(<STDIN>){
next if /^$/;
s/omae/bakaka/;
s/omae/ahoka/;
print;
}
でもええよ。
>808 ($sec , $min , $hour , $mday , $mon , $year , $week) = localhost(time); print (int($mday/7)+1)*10 + $week ;
>810 =~ s/localhost/localtime/; ∧‖∧
>810 それだと2-6日は必ず第1週になるよ…
814 :
∧‖∧ :02/09/10 13:46 ID:???
>812 仕様書の意味取り違えてました。 ($sec , $min , $hour , $mday , $mon , $year , $week) = localtime(time); print (int(($mday+8-$week)/7))*10 + $week; かな?
カレンダーとかかな?
>>808 を読むと日曜が始まりみたいだけど、それなら
($sec , $min , $hour , $mday , $mon , $year , $wday) = localtime(time);
として、
第何週かは
int(($mday + 12 - $wday) / 7)
何日目かは
$wday + 1
だと思う。たぶん…
>>810 >>815 ランダムに日付を変えて何度かテストしてみても
期待通りの結果が得られて大丈夫でした。
ちなみに、利用するのは
いつも巡回する複数サイトの一部記事を
引っこ抜いて表示させるものです。
新しく追加するサイトのファイル名が
今回質問させていただいたフォーマットでした。
ありがとうございました。
817 :
nobodyさん :02/09/10 21:40 ID:ApnEpI8H
Perl 5.6.1、Vine2.5で勉強してます。プログラミングはPerlが初めてです。 リャマ本第2版、P172の問題2が分かりません。 題意は、Unixのmvコマンドと同じ働きをするプログラムを書け、 という内容で、ヒントとして、第2引数がディレクトリの場合も考慮せよと。 で、漏れの解答はこんな感じです。変数の名前、正規表現の 区切り文字は末尾の解答例に合わせてます。 ($old, $new) = @ARGV; if (-d $new){ $basename = $old; $basename =~ s#^/.*/##g; $new = $new . "/$basename"; } rename($old, $new) or die "Cannot rename $old to $new: $!"; 一応は思った通りの動きをします。メデタシ。 ところが、解答例は、4行目が以下のようになってる。 ($basename = $old) =~ s#.*/##s; 勿論、こちらも思った通りの動作をしますです。 かっこは、漏れの解答での3行目と4行目を合体させてだけなので 無視するとして、よく分からないのは、右辺です。 1) s/ は置換だけど、後の/sは一体何? 2) .*/ だと、頭の/が残るような気がするんだけど。。。 なんでだろう。。。?
818 :
nobodyさん :02/09/10 21:44 ID:Lqs0IC/U
819 :
817 :02/09/10 21:45 ID:ApnEpI8H
自己レスですが、(2)は、たった今、自分の書いたのをみて分かりました! ルートディレクトリの「/」も 「.*/」で、「.」にマッチするやん! ってゆーか、これだと、 # test.pl aaa ~/bbb の場合、エラーになるよね? ニョロがマッチしないから。。。 で、1)の方は、おながいします。
821 :
817 :02/09/10 21:59 ID:ApnEpI8H
>>820 サン、ありがとうございます。
ははぁ、なるほど!
文字列を単一行として扱う、ということですね。
だけど、この問題の場合、こんなオプションが必要なのでしょうか?
勘違いしているかもしれないけど、漏れの理解では、深いディレクトリ
を処理すると、引数が複数行になってしまうことがあるかもしれないので
sをつける、と思ってるのですが、この考えによると、普通mvするとき
引数に改行なんか入れないですよね?
そもそも、んな深いディレクトリを掘ることってあまりないので、
今まで思いもよらなかったし、そもそもmvコマンドで引数に改行
入れてもいいのかどうかも分からん。。。
いくら長くても一行だと思うが。
823 :
nobody :02/09/11 02:17 ID:Zh9eBVFz
”どこが間違っているのかわかりません”的なものじゃないんだけど crypt関数の使い方で聞きたいことがあります。 (例) print "文字列を暗号化します。適当に文字をいれて下さい\n"; $get = <STDIN> $key ="sp"; $pass = crypt($get,$key); print "暗号化された文字列は$passです\n"; この$keyの部分は任意の二文字を入れるんだけど それってどういう意味があるんでしょうか? これによって暗号化される結果などが違ってくるのでしょうか??。 特に意識することではないんでしょうか?
>>823 >結果などが違ってくるのでしょうか
全然変わる。
>>823 そんなの、それを実行してみればすぐに解りそうなもんだが?
(`Д´)
PERLでURLを指定してそこのソースを取得する方法を知っている方、 どうかおしえてつかーさい。
>828 「LWP」で検索。
830 :
nobodyさん :02/09/11 13:13 ID:l0g0P0Oz
ライブラリを読み込む際、いちいちrequire **.plってかかなきゃダメでつか? 7枚くらい読みこまなきゃいけないんですけど長ったらしくて。
>>830 >ダメでつか?
>7枚くらい
( ´,_ゝ`) プッ
馬 鹿 ば っ か し だ な(藁 おれをふくめてな。
「オ・・・ッ オクッ・・ オクレ兄さあああああああああああああああんッッッ
>>830 別ファイル(仮にloading.plとする)に
require "a.pl";
require "b.pl";
.
.
.
って書いといて、本ファイルでは
require "loading.pl";
だけで逝けるよ。
さすがに、require "a.pl", "b.pl" ...;はだめでしょ。
>>834 ナルホド。
>require "a.pl", "b.pl" ...;
はい。ダメですたw
ありがとござました。
改行だとわかってるときはchompよりchopのほうがいいの?
\r\nも\nしか削らない<chop byとほほパパ
838 :
nobodyさん :02/09/11 20:31 ID:ofaOgNiv
初心者なんですが、変数から特定の文字列を探す方法ってないですか? すまそ。教えてください。
>838 index 後は検索しる。
840 :
nobodyさん :02/09/11 20:39 ID:ofaOgNiv
>>839 indexって何番目にあるかを検索するだけですよね?
どうやって使うのかが分からないです。
>840 特定の文字列を探したかったんでしょ? 使い方は検索しる。 文字列を探して抜き出してどうこうしたいってなら、 substrを使うとか、indexを使わず正規表現に頼るとか。 後は検索しる。
842 :
839 :02/09/11 20:48 ID:ofaOgNiv
>>840 使い方何となく分かりました。ありがとう!
ユーザー関数を定義する事ってできますか?
ユーザー関数を定義しる: ユーザーが作ったサブルーティン、ライブラリ、モジュール。 (反対語:)組み込み関数 ユーザー定義を関数にするんじゃないか?
845 :
nobodyさん :02/09/11 21:49 ID:wdtzvpz4
できます。
>>837 >\r\nも\nしか削らない<chop
\n について勉強したほうがいいよ
847 :
847 :02/09/12 14:36 ID:???
$syu =~ s/<br>/\r\n/g; $value =~ s/<br>/\r/g; $value =~ s/<br>/\n/g; このようにフォームデータを変換するのと逆に、 すべてのOSの改行文字に対応して、改行を<br>に変換することはできますか? フォームのtextareaのvalue=""にログを入れたいのですが。
848 :
847 :02/09/12 14:37 ID:???
一行目の$syuは$valueの間違いです。
出来ない。 つーか、\nで十分。
850 :
847 :02/09/12 14:45 ID:???
for($NUM = 0; -e "$NUM.jpg" == 1; $NUM++){ print "<a href=\"$NUM.jpg\">$NUM</a>"; } としたのですが、上手く動きませんでした。 For文は for(NUM =0; ここの条件が成り立ってるとき動作する; NUM++) こういう事ではないのでしょうか? while文で while(-e "$FileAddress$NUM.jpg" eq "1") こうしたらできたのですが・・・
852 :
851 :02/09/12 17:34 ID:???
ファイルが連番で[1-20].jpgである場合、 -e でファイルが存在を調べるか、 readdir で一覧を取得するか どちらかを考えたのですが どちらの方が効率が良いと思うでしょうか? ご教授頂けないでしょうか、お願いいたします
Benchmark.pm で調べれ
$syu =~ s/\x0D\x0A/<BR>/g;
$syu =~ s/\x0D/<BR>/g;
$syu =~ s/\x0A/<BR>/g;
>>847 この産業で出来るぞ。
>>854 <BR> を改行に変換したかったんじゃないのか?
856 :
nobodyさん :02/09/12 18:22 ID:V0oL4dfD
なんかファイル処理でDBM使わされることになったんですが、ファイルロックがイマイチ分かりません。 sub Filerock { my $now = time(); my $lockfile = "lock"; my $locking = "lock.now"; for($_=5; $_>=0; $_--){ if(rename($lockfile, $locking)){ utime($now, $now, $locking); $SIG{'INT'} = $SIG{'HUP'} = $SIG{'QUIT'} = $SIG{'TERM'} = "intProc"; # 割り込みで中断するときの処理を定義 &Dbmopen; return; } sleep 1 if $_; } &Header("フォームエラー"); print "<h2>ロックちう</h2>\n<hr>\n"; &Footer; exit; } こんなんで良いんでしょうか。 もっと効率の良いコードがあればアドヴァイス願います。
ダミーファイルでも開いてflockしとけ
858 :
nobodyさん :02/09/12 18:31 ID:NNUPZyEk
>>851 $NUM.jpg
と
$FileAddress$NUM.jpg
違うよ
861 :
初心者厨房 :02/09/12 19:24 ID:jvK2X5HW
Perlの勉強を始めたばかりの初心者です。ちゃんと書いたつもりなんですがうごきません。 どうしてなんでしょうか。教えてください。お願いします。 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print 10+5 # 足し算 print " / "; # 区切り print 10-5; # 引き算 print " / "; # 区切り print 10*5; # 掛け算 print " / "; # 区切り print 10/5; # 割り算 print " / "; # 区切り print 10%5; # 剰余算 _END_
print 10+5 # 足し算
print 10+5 # 足し算 ↓ print 10+5; # 足し算 エラーメッセージぐらい読め
>>864 ハァッ!!!!!!!!!!!!!!!!!!!!!?
( ● ` ∇ ´ ● )ガオー
870 :
初心者厨房 :02/09/12 19:54 ID:ODncwTzE
ありがとうございます。わかりました。ところでエラーメッセージのどこをみればわかるのですか?
873 :
初心者厨房 :02/09/12 20:08 ID:ODncwTzE
ほんとに始めたばっかでなにがなんだかわかんねーんだからしょうがねーだろ。
< ● ` ∀ ´ ● > <
>>873 一緒に祖国に帰るニダ
1 :ぼぶ ◆EMrmvKLI :02/09/10 19:18 ID:G4zqfa38 これはいろんなとこにコピペしてください。 みんなで台風を起こしましょう。 東京駅を中心に右回りです。 9月22日夜9時にみんなでいっせいに「フゥー」と吹くのです。 注意 周りに障害物のないところでやりましょう(なるべく高いところ) 「フゥー」以外に扇風機やうちわを使ってもかまいません。 !東京を壊しましょう!
876 :
初心者厨房 :02/09/12 20:15 ID:ODncwTzE
#!/usr/local/bin/perl print "Content-type: text/html\n\n; $atai='値'; print '「$atai」(シングルクォート文字列では展開されない)/'; print "「$atai」(ダブルクォート文字列では展開される)"; _END_ 何がまちがってんの?
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。 1:自分はこう言う事がしたい。 2:それでこんな風にやってみたが・・・ 3:それだとこんなエラーが出て上手く行かなかった。 1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。
糞な質問ばっかりだな
てゆーか最近カマッテ君が住みつきだしたのはなんで?こんなとこに。 上級者ぶってツッコミ入れてるのも知ったかぶりだからとんちんかんだし とりあえず初心者嘲笑いたいなら的確に回答してやってからにするのが筋ってもんじゃないの
何でもかんでも答えるのは如何なものかと。
◆4XfSMGTgの発言禁止依頼しました
答えないでいるならいいが、質問馬鹿にするだけしといて そいつ自身答えられないパターン多すぎなのも見ててうざ
下手に答えて自分がバカにされるのが嫌なんだろ、きっと。
>>887 いや今まで無視してたよ リアクションしてあげないのが一番だから。
ここに来て立て続けで軽く荒れてきたから
ちょうどいいかと思ってつっこんでみただけ。
で、結局釣られたのは>888というオチか
890 :
888 :02/09/13 00:03 ID:???
はいはいごめんよ 俺が悪かった。許してね。
>>889 −−−−−−−−−−−−−−−−−−−−−−−−−−−
以下、普通のスレに戻って下さいませ。
場を乱すだけ乱しといて何を今更…
>>891 これ以上乱れないように882で釘さした形だと思うが。887とかが俺を煽ってきただけだし
申し訳ないがもうレスらないんでよろ
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。 1:自分はこう言う事がしたい。 2:それでこんな風にやってみたが・・・ 3:それだとこんなエラーが出て上手く行かなかった。 1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~
894 :
nobodyさん :02/09/13 03:15 ID:R5wD3hCH
mbx形式のメールをmh形式にばらす スクリプトを書こうと思ってます。 mbxは複数のメールが1つのファイルになっていて ピリオドだけが書かれた行がメールの区切りになっ てます。そのmbxファイルを1つ1つのメールに ばらして連番で出力したいのです。 #書いたプログラム-mbx.pl open(OUT,">$n"); while(<STDIN>){ unless(/^\.$/){ print OUT; } else{ ++$n; } #ここまで で、実際にperl mbx.pl < hoge.mbx とすると1に全て出力されてしまいます。 なにがいけないんでしょう?
>>894 追記
最初に$n = 1;で初期化してます。
>894 改行文字忘れてるよ
>>896 ごめん意味わからない。どこにつけ忘れてるの?
>897 unless(/^\.\n$/){ かな?
>>898 指摘サンクス。
あとはどうすれば連番で出力できるのか
教えてくらはい。
>894 てか unless( $_ eq ".\n" ) でいいんじゃ...
メール本文に.\nがあったらまずいかな と思ったんだけど。。。
>>899 open(OUT,">$n");
をwhileの中に入れてないからでわ?
何がしたいのかイマイチわからないけど
こういう事か?
$n = 0;
while(<STDIN>){
next if($_ eq ".\n");
++$n;
open(OUT,">$n".'.mh');
print OUT;
close(OUT);
}
>>901 区切りに使われてるものが本文中に無変換で置かれてることは
ないだろう。もしあったらシステムが破綻する。
>899 こんな感じでどう? $n = 0; loop: { $n++; open( OUT, ">$n" ); while ( <> ) { if ( $_ eq ".\n" ) { close OUT; redo loop; } print OUT; } }
>>904 書き込みで開いたら何も出てこないぞ…(;´Д`)
>905 ?
907 :
905 :02/09/13 04:29 ID:???
ごめん、勘違い。
>区切りに使われてるものが本文中に無変換で置かれてることは
>ないだろう。もしあったらシステムが破綻する。
よく考えたらそうですよね。
>>903 >>904 両方試したけど各行ばらばらになって出力されてしまいます。
.mbxの改行コードはlfなんですが。
なんでだろう。。
>908 ばらばらって?
910 :
894 :02/09/13 04:35 ID:???
$n = 1; open(OUT,">$n"); while(<STDIN>){ unless(/^\.\n/){ print OUT; } else{ ++$n; open(OUT,">$n"); } } で自己解決しました。 説明が下手でちゃんと伝わらなかったみたいでスマソ。
911 :
894 :02/09/13 04:37 ID:???
>>909 hoge.mbxの内容が1行ずつ連番で出力されて、
7000.mhとかまでできた。
>911 そんなはずは......ちゃんとコピペしてくれた?
913 :
894 :02/09/13 04:48 ID:???
>913 あ 904 なんだけどね...... うちではちゃんと動いたんだけどなぁ まぁいいんだけど
915 :
894 :02/09/13 05:05 ID:???
>>914 はじめてのperlって本を一通り終えただけの
初心者だからredoとかloopが分からないのレス。
動かない理由がよく分からないけどサンクス!
$xxが"aa"でも"bb"でもないとき"cc"と表示するのを作りたいんですが if ($xx ne "aa"|"bb"){ print "cc"; } これじゃいつでも"cc"と表示します。何でですか?
if ($xx ne "aa" && $xx ne "bb"){ print "cc"; }
918 :
905 :02/09/13 16:15 ID:???
>>894 このくらいの説明は最初にしようよ
| > MBXファイルのフォーマットを公開して頂けないでしょうか?
|
|次の通りです。
|
|ヘッダ
|(ブランク行) --- CRLF1個だけの行
|本文
| --- 行頭に1個のピリオド(メール間の区切り文字)
|ヘッダ
|(ブランク行) --- CRLF1個だけの行
|本文
| --- 行頭に1個のピリオド(メール間の区切り文字)
|
|
| (注意)本文の行頭に「.」がある場合は、「..」というように「.」を1
| 個余分につけて保存されます。
919 :
nobodyさん :02/09/13 16:48 ID:+7b38iG7
dataディレクトリ内のディレクトリ一覧を取得しようと思って↓の コード書いてみたんですが、いくつかディレクトリが存在するにも関わらず 「.」(ルート)と「..」(上)のディレクトリしか拾えないんですが、何かおかしな 点などありますでしょうか・・・ opendir(DIR, "data"); while($dir = readdir(DIR)){ if(-d $dir){ #処理・・・ } } closedir(DIR);
920 :
919 :02/09/13 16:51 ID:+7b38iG7
すんません、分かりました if(-d $dir){ は if(-d "data/$dir"){ としないとダメですね。
ひとつのcgiファイルの容量はどれくらいまでOKなんでしょう? 特に気にする必要はない?
ワラた
>>921 10MBとか書いてみればどうでしょう?w
アクセスする人数にもよるけど
重たいものを書いたらすぐビジー出ますよ
重たいものと大きいものは全く違うんじゃない?
数十行でも重い処理は書けるからね。
>>921 まず気にするほどのことは無いと思う。多分1MBくらなら問題ないでしょう。
プログラムが重いと感じたら処理の流れを見直すべし。
それと、「CGIファイル」じゃ意味が通じないんで「Perlスクリプト」や「スクリプトファイル」と表現するように。
上記の回答もそのような意図と解釈して書いてます。
925 :
名無しさん :02/09/13 20:11 ID:dJSmRC1R
926 :
nobodyさん :02/09/13 20:56 ID:MTIQ7Fw0
変数の表記で変数名も変数である場合 $xx_(ここも変数) ()の変数は$yy どう表記したらいいでしょうか?
${xx_}$yy
{ my $xx_1 = "foo"; my $yy = 1; no strict 'refs'; # シンボリックリファレンスを許可する(デフォルト) print ${"xx_$yy"}; }
>>927 ,
>>929 Can't use an undefined value as a symbol reference at test.3.pl line 8.
>>928 fooが出力されるべきところ何もでてこない
結局、どれでやってもだめレスが・・・
931 :
930 :02/09/14 08:21 ID:???
ゴメソ
>>928 は、myを取ったら出力されました
わしの考えたのは
$var = "xx_" . $yy;
print $$var;
分かりやすくていいでしょ
あ、そりゃmyがあればダメだよね。つい癖で…。 ごめん。
933 :
929 :02/09/14 14:29 ID:???
934 :
nobodyさん :02/09/14 14:58 ID:bLV5ATcL
AnyDBM使って多数のパラメータを扱うのですが、 データ数が多い場合はやはり幾つかのDBMに分けた方が良いのでしょうか。 それとも全部一括りにして1つのファイルにまとめた方が効率が良いのでしょうか。 ちと分からないので質問です。
>>934 ファイル1枚
・壊れやすそう
・壊れたら致命的そう
・サイズがでかそう
ファイル複数
・壊れにくそう
・壊れても被害は少なそう
・余計なデータは読まずに済むから軽そう
936 :
nobodyさん :02/09/15 05:43 ID:sdGpPtiV
特定の日付からgmtime?(1018470831みたいな数値)を逆算するには どうしたらよかとでしょうか?
937 :
nobodyさん :02/09/15 07:30 ID:iaBuYHci
>>936 1900年からの経過秒数が知りたいの?
だったら、
use Time::Local;
print timelocal(0,0,0,15,8,102);
で9月15日0時0分0秒のそれが出てくる
短くて済む、という理由でrequireじゃなくてdoを使いたがっています。 ライブラリルーチンのインクルードは、requireを使った方が良いといわれていますが、 その理由がよくわからないので言う事を聞く気になりません。 うまい具合に違いを説明して僕を説得してください。
939 :
あ ◆4WVJTVm. :02/09/15 11:47 ID:7pMxPAY1
whileで配列の処理をしていて、 途中である条件が一致した場合、現在処理している変数が何番目の変数なのかを知り、変数に数値を格納したいのです。 どなたかご回答よろしくお願いします
940 :
あ ◆4WVJTVm. :02/09/15 11:51 ID:7pMxPAY1
ミス >現在処理している変数が何番目の変数なのかを知り、 ↓ >現在処理している配列が何番目なのかを知り、 すみません
>>938 わたしは初心者なのですが、ライブラリをインクルードするのはdoではできな
いと思うのですが、具体例を示していただけませんでしょうか。
>>939 配列の番号は$array[$i]の$iです
for $i (0 .. $#array) {
if ($array[$i] == 0) {
$array[$i] = $num;
print "$i番目の配列要素の値に$numを代入しますた\n";
}
}
>>941 require "hoge.pl";
となっているところを
do "hoge.pl";
と置き替えるだけです。
一応平気で動作しています。
>>942 if ($array[$i] == 0) { って??
$array[$i] = $num; って$numはどこからでてきたの?
それにそんなことしたら配列の内容書き換えてるんじゃ?
「聞く気になりません」って…何の理由もなしにrequireを使え、なんて事はないよ。 doは%INCをチェックしない。つまり、同じライブラリを何度も読んでしまう。 そうなると、サブルーチンの再定義など、いろいろ不都合が生じると。
>>943 さん、回答ありがとうございます。
やってみたらできました。私も識者の回答を待っています。
どなたかお願いします。
947 :
944 :02/09/15 12:17 ID:???
っつわけで、
for $i (0 .. $#array) {
if($array[$i] eq $arujouken){
$hensuu = $i
last;
}
}
かな?
>>939
949 :
944 :02/09/15 12:23 ID:???
950 :
942 :02/09/15 12:25 ID:???
>>947 じゃ、同じ質問を返そう
$arujoukenって??
$array[$i] = $i; って?
>>939 は数値を格納したいっていってるのよ
配列の番号を格納していなんて言ってないよ
951 :
944 :02/09/15 12:27 ID:???
>>950 わかりやすくしたつもりだが…<$arujouken
もちろんマッチングだとは思うので仮にこうしたまでだが。
$array[$i] = $i;
なんて書いてません。
952 :
942 :02/09/15 12:28 ID:???
>>949 こちらの回答がいちいち後手に回ってしまいスマソ
ここのところ質問者が質問しっぱなしが続いてるね
まさかネタじゃないだろうね
953 :
944 :02/09/15 12:31 ID:???
>>952 まだ質問されてから1時間も経ってないYO
住人でもなきゃすぐにレスなんてこないかと
954 :
938 :02/09/15 12:36 ID:???
>>945 そうなのですか。一応検索はかけていたのですが
そこまで説明しているとこは見つけられなかったもので。
説得されました。require使います。
>>946 だそうです。
955 :
あ@939 ◆4WVJTVm. :02/09/15 12:48 ID:s9DZ7/nK
あ です。
>>939 の質問に答えてくださったかたがた、ありがとうございました。
陰様で、いろんなかたがたの意見を参考に服用していって、さらに素晴らしいものが出来上がりました。
本当にありがとうございますた。
956 :
944 :02/09/15 12:57 ID:???
957 :
nobodyさん :02/09/15 13:48 ID:kinL8j5T
「aaaかbbb」が出てきたら順目を返す物をつくりたいんですが、 正しく動きません。何で? $xxx = index($yyy, "aaa"|"bbb");
>>957 質問に答える前に一つ聞きたいんだけど、どこでそういう構文を学んだの?
正直、凄く興味がある。
indexって位置を返すんじゃなかたっけ?
>>959 いや、それ以前にビットOR演算子が…。
論理OR演算子なら百歩譲ってああ誤解するのも頷けるけど、なぜビットOR演算子が…。
答えられないのか?
どっちか先に出現するほうの位置を晒せってことだろ?
>960 正規表現とごっちゃになってるとか。
965 :
nobodyさん :02/09/15 14:49 ID:kinL8j5T
>>965 ちがうんじゃない?
aaaかbbbが出てくるindexを全部出してちょってことじゃ?
こんなのどうかにゃ:
$yyy = "bbbabcdaaaefghbbbcdefaaa";
&search_index($yyy, "aaa");
&search_index($yyy, "bbb");
sub search_index {
my ($string, $substring) = @_;
my $index = $start = 0;
while($index = index($string, $substring, $start) + 1) {
last if $index < 0;
print $index - 1, "\n";
$start = $index + length($substring);
}
}
順目って用語あるの?
GyRCJSolXiUoJGkySyRAJEohKhsoQg
>>966 本人が言ってるのに「ちがうんじゃない?」とは、これ如何に!
誰か〜 次スレ立てて〜
970 :
3日目 :02/09/15 14:57 ID:AwUTEWn/
フォームを設けて、そこへあらかじめ文字を入れておきたい場合、 $temp="ここに<br>入力" print <<"HTML"; <textarea >$temp</textarea> とすると、 フォームのテキストエリアに ”ここに<br>入力”と表示され<br>が入ってしまう。 ”ここに 入力” とちゃんと改行させるにはどうすればいいの?
>>970 お前はHTMLからやり直せ
お前はHTMLからやり直せ
お前はHTMLからやり直せ
お前はHTMLからやり直せ
お前はHTMLからやり直せ
お前はHTMLからやり直せ
>>971 その為にID晒してんだろが! 注意力散漫さんはプログラミングやるには不向き
>>973 おまえにはネチケットに何もあったもんじゃないな
>>970 $temp =~ s/<br>/\n/ig;
977 :
3日目 :02/09/15 15:13 ID:AwUTEWn/
>>957 /aaa|bbb/;
$xxx=length $`;
オマエラミンナ ムダニアオリスギ
GyRCRnk5fEo0JEMkRiRJJCY7VyQmISkbKEI
981ゲト
982 :
nobodyさん :02/09/16 21:35 ID:PzkShHDm
あんま調子乗んなよ・・・ __ /_、_\ ( _ノ` ) ズキューン /⌒ /_ \ , :, ( ;y=ー( _ノ` )・∵: ; / と ̄ ̄_) / /\  ̄ / ̄\ ←◆3pIoOHKo _| ̄ ̄ \ / ヽ \_ \ ̄ ̄ ̄ ̄ ̄ ̄ \__) ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ || || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| .|| ||
983 :
perl初心者 :02/09/17 00:56 ID:i0fZtbTD
申し訳ありません。前スレに同じような質問があったらしいのですが、dat落ちしてまして……(T_T) TMPL_LOOPのネストって出来るのでしょうか? もし出来るとしたら、その方法は? テンプレではTMPL_LOOPをネスとさせておいて、単純に配列に配列を格納すればいいのでしょうか?
985 :
nobodyさん :02/09/17 01:23 ID:jlRQ/iYc
cookieについてです。 他のブラウザは大丈夫なのにMAC版のIEでのみcookieが書き込めないと言う 現象がおきて困っています。考えられる原因はなんでしょう? 手法としては通常通りHTMLヘッダの前にprint文でSet-Cooki:を出力しています。
1000!
987 :
nobodyさん :02/09/17 06:28 ID:yAKo74Fa
>>985 > 他のブラウザは大丈夫なのにMAC版のIEでのみcookieが書き込めないと言う
日本語の値をMacOSX用IE5.2のcookieに書き込む場合には、
Jcode.pmを利用して、UTF-16形式にエンコードする必要が
あるかもしれません。
988 :
nobodyさん :02/09/17 07:57 ID:PJt6wEZh
988ゲト
1000
コテハンは死ね! 1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。