【Perl】初心者コーナーPart11
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
02/03/27 12:53ID:wAXxxOxPいらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。
参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://pc.2ch.net/test/read.cgi/php/988809842/
CGIの質問はこちら【CGIだけどなんか質問ある Pert 5.01 】
http://pc.2ch.net/test/read.cgi/php/1015127347/l50
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
過去ログ、その他の役立ち情報は>>2-10を見よう。
0002nobodyさん
02/03/27 12:54ID:wAXxxOxPPart1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
DAT: http://tako.2ch.net/perl/dat/957208980.dat
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
DAT: http://tako.2ch.net/perl/dat/971817087.dat
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part5 http://pc.2ch.net/php/kako/988/988728069.html
Part6 http://pc.2ch.net/test/read.cgi/php/996075607/
Part7 http://pc.2ch.net/php/kako/1000/10002/1000267444.html
Part8 http://pc.2ch.net/php/kako/1003/10039/1003900311.html
Part9 http://pc.2ch.net/test/read.cgi/php/1009549309/
Part10 http://pc.2ch.net/test/read.cgi/php/1014556702/
[ひまぢん氏のミラー]
Part1 http://www.angelfire.com/ak5/2ch-web-program/kako/957208980.html
Part2 http://www.angelfire.com/ak5/2ch-web-program/kako/971817087.html
Part3 http://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html
Part4 http://www.angelfire.com/ak5/2ch-web-program/kako/984430156.html
Part5 http://www.angelfire.com/ak5/2ch-web-program/kako/988728069.html
0003nobodyさん
02/03/27 12:54ID:wAXxxOxP・Perl Com: http://www.perl.com/pub/
・CPAN.com: http://search.cpan.org/
・ActivePerl: http://www.activestate.com/
・CGI-ML:http://forest.ne.jp/cgi-ml/
[お薦め]
・Perl Recipes: http://www.effectiveperl.com/recipes/
・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
[Document&Tutorial]
・Perl News: http://www.news.perl.org/
・Perl Monks: http://www.perlmonks.org/
・PerlMonth - Online Perl Magazine - : http://www.perlmonth.com/index.html 接続不能
・use Perl All The Perl: http://use.perl.org/
・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
・Perldoc.com: http://www.perldoc.com/
・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
・Rex Swain's Home Page: http://www.rexswain.com/
・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
・Perl Tuts: http://savage.net.au/Perl-tutorials.html
・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
・Perlfect Solutions: http://perlfect.com/
・The Perl Archive : http://www.perlarchive.com/
・Perl6 & Parrot VM についての情報: http://dev.perl.org/perl6/
0004nobodyさん
02/03/27 12:54ID:wAXxxOxP・Perl Module Reference: http://www.bekknet.ad.jp/~bero/docj/module_/
・PPMPackages: http://www.activestate.com/PPMPackages/
・河馬屋二千年堂's Page: http://member.nifty.ne.jp/hippo2000/index.htm
[Security]
・安全なプログラミングのためのガイドライン:http://www.FreeBSD.org/ja/security/#spg
・Perl security:http://www.perldoc.com/perl5.6/pod/perlsec.html
・Perl security和訳:http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlsec.html
・CGI and Security http://www.ansi.co.jp/tech/cgi/security/
・The Unofficial Web Hack FAQ:http://www.nmrc.org/faqs/www/
・How to Write Secure Code:http://www.shmoo.com/securecode/
・Safe CGI Programming :http://www.improving.org/paulp/cgi-security/safe-cgi.txt
[OS]
・Linux日本語マニュアル:http://www.linux.or.jp/JM/
・FreeBSD日本語マニュアル:http://www.jp.freebsd.org/man-jp/
0005帝国 ◆JXzsccCc
02/03/27 12:58ID:BFIdDUdC991 名前:製作板で誘導した人 本日の投稿:02/03/27 12:14 ID:???
$permissionの中身は何?
てかパーミッション設定するのに変数使う必要あるんだろうか・・・・
$file="\.\/$folder\/$filename";
chmod 666,$file;
とかじゃダメ?
992 名前:nobodyさん 本日の投稿:02/03/27 12:26 ID:???
nobodyに0700にされる罠。
993 名前:帝国 ◆9qoWuqvA 本日の投稿:02/03/27 12:39 ID:BFIdDUdC
パーミッションはフォームにいれた値。
だから変数に格納する必要が。。
994 名前:nobodyさん 本日の投稿:02/03/27 12:44 ID:???
パーミッションは8進数で設定するのは別に罠ではないという罠。
立たぬなら 立つまでまとう Perlスレ
0006nobodyさん
02/03/27 13:02ID:???とりあえず、変数に入れずに試してみろ。
自分でも原因究明する努力は忘れずに。
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
これ重要。
0007nobodyさん
02/03/27 13:08ID:???頭に0を付ければ8進数として解釈するんでないかい?
0008帝国 ◆JXzsccCc
02/03/27 13:32ID:BFIdDUdC0009nobodyさん
02/03/27 13:36ID:???umask(0);
じゃあ、これをファイル作成の前においてみて。
0010nobodyさん
02/03/27 15:56ID:yW5j0qTy配列を送ろうとすると、パラメータが混ざってしまいます。
回避方法はありませんでしょうか
local ( @aaa , $bbb ) ;
@aaa = ( 0 , 1 , 2 , 3 ) ;
$bbb = "4567" ;
&test( @aaa , $bbb ) ;
exit ;
sub test
{
local ( @aaa , $bbb ) = @_ ;
print "\@aaa=@aaa\n" ;
print "\$bbb=$bbb\n" ;
}
このソースを実行しますと。
@aaa=0 1 2 3 4567
$bbb=
となります。
これを。
@aaa=0 1 2 3
$bbb=4567
このようにしたいのですが
0011nobodyさん
02/03/27 15:59ID:???最初の要素で@aaaの要素数を渡しておけば?
0012
02/03/27 16:05ID:lRPZasZ4今練習でCHATを本のサンプルから作っているのですが、
&ReadPars(*in)
という入力があるのですが、この「*in」とはどのような意味なのでしょう?
もし宜しければご教授ください。
0013nobodyさん
02/03/27 16:06ID:???ってかなぜmyじゃなくてlocal?
0014こちらも初心者
02/03/27 16:14ID:???フォームから渡されるデータを格納するハッシュの名前
&ReadParse(*in);
とするとフォームから渡されたデータが
%inというハッシュに格納される
で良いですよね?>諸先輩方
001513
02/03/27 16:25ID:lRPZasZ4ありがとうございます。
ReadParseというサブクラス(?)に定義されているハッシュに格納するコードを
呼び出してそこに「in」の値を渡し、結果として%inとなるという事ですよね?
では「*」とはどういう意味なのだろう・・・
すいません、せっかく教えていただいているのに・・・
もし宜しければそのあたりが詳しく書いてあるサイトを教えていただけないでしょうか?
検索をかけてもヒットする単語が多すぎて検索できないのです。
001613
02/03/27 16:35ID:???inが関係ないという事で検索する事ができました。
*とはいろいろな変数の型を纏めて扱えるようになるものだったのですね(語弊あり?)
お邪魔いたしました。
0017nobodyさん
02/03/27 16:40ID:???こんな時代遅れのことをやると恥ずかしいので、忘れた方がいいですよ。
001810
02/03/27 16:42ID:yW5j0qTy>普通はリファレンス使うと思う。
>ってかなぜmyじゃなくてlocal?
myでのパラメータ渡しの記述例
お教えいただけませんか、よろしくお願いします。
002010
02/03/27 17:23ID:yW5j0qTyレスありがとう御座います。
早速試してみました。
>localをmyに変えれば?
my ( @aaa , $bbb ) ;
@aaa = ( 0 , 1 , 2 , 3 ) ;
$bbb = "4567" ;
&test( @aaa , $bbb ) ;
exit ;
sub test
{
my ( @aaa , $bbb ) = @_ ;
print "\@aaa=@aaa\n" ;
print "\$bbb=$bbb\n" ;
}
実行結果:
@aaa=0 1 2 3 4567
$bbb=
残念ながら結果は、変わりませんでした。
>そして本屋に行ってPerlの本でも買えば?
ご指摘ありがとう御座います。
先程、www.amazon.co.jpにて
プログラミング Perl (オライリー社)
Effective Perl (ASCII 社)
の2冊購入いたしました。
002110
02/03/27 17:41ID:yW5j0qTymy ( @aaa , $bbb ) ;
@aaa = ( 0 , 1 , 2 , 3 ) ;
$bbb = "4567" ;
&test( \@aaa , \$bbb ) ;
exit ;
sub test
{
my ( $aaa , $bbb ) = @_ ;
print "\@aaa=$$aaa[ 0 ] $$aaa[ 1 ] $$aaa[ 2 ] $$aaa[ 3 ] \n" ;
print "\$bbb=$$bbb\n" ;
}
実行結果:
@aaa=0 1 2 3
$bbb=4567
http://www13.cds.ne.jp/~ohsaru/perl/perlref.html
こちらのページが大変参考になりました。
0022nobodyさん
02/03/27 19:03ID:???レスキューやKENTのようなヘボの模倣しないで、プロトタイプ使えって。
sub manco(\@$)
{
print "$_[0]->[0]\n";
print "$_[1]\n";
}
@a = qw(1 2 3 4 5);
manco(@a, 10);
002310
02/03/27 21:15ID:???ようきけや、22よ、
君いつもいるね。
いつもそんなことばかりやっているね。気付いてるかい?
はっきり言って誰も君のこと相手にしてないよ?わかってるの?
それって、自分ではおもしろいと思ってやっいているんだろうね。
きっと、薄ら笑い浮かべてやっているんだろうね。
でもさぁ、君以外の人には全然おもしろくないんだよ。
もしかして自分でもおもしろくないのにやっているんじゃないの?
自分でも何してるのかわからなくなってるんじゃないの?
家族からも近所からも煙たがられているんだね。
友達も彼女もいないんだね。会社でも浮いているんだね。
どこに行っても相手にされないんだね。
ネットでも無視されてここに流れ着いて来たんだね。
ここでさえ相手にされてないじゃん。どうするの?かわいそうに。
もう駄目じゃん。生きていても何もいいことないよ?
どうせ誰からも相手にされないんだから、死んだ方がいいんじゃない?
相手にされないから奇抜な言動で注目を浴びようと必死なんだね。
始めは少し注意を向けてもらったのだろうけど、もう飽きられて完全に 無視されているね。
おもしろくもないのに、意味不明な事を大量に書かれても目障りなんだよね。
それって迷惑なんだよ?気付いてる?
さようなら。この世から消えてくれ。君いるだけで迷惑。
せめて最後ぐらい人里離れた山の中で自殺してね。
002410
02/03/27 22:18ID:yW5j0qTyプロトタイプ宣言についてですが、
@array = ( 'a' , 'b' , 'c' , 'd' ) ;
$str = "4567" ;
test( \@array , $str ) ;
exit ;
sub test(\@$)
{
my @aaa = $_[ 0 ] ;
my $bbb = $_[ 1 ] ;
print "$aaa[ 0 ]:$aaa[ 1 ]:$aaa[ 2 ]:$aaa[ 3 ]\n" ;
print "$bbb\n" ;
}
実行結果:
a:::
4567
こんな感じに変更してみたのですが、
testへの最初の引数の配列が正しく
@aaaに渡りません。
$_[ 0 ][ ? ]だと問題無く参照できるのですが、
どこか間違ってますでしょうか
0025nobodyさん
02/03/27 22:30ID:???プロトタイプは呼び出し前に宣言したヤツしか反映されない。
sub foo( prototypes );
foo(args);
sub foo( prototypes ){
...
}
0027nobodyさん
02/03/27 23:28ID:???まともに説明もできないのかこのガラクタが!!
0031nobodyさん
02/03/28 00:08ID:???どうやらオマエは説明もできないのに使ってるようだナ!
知ったかぶりがバレてしまって顔が青ざめて必死になって今調べている姿が
目に浮かぶな! 実にこっけいなピエロ君だなオマエは!
無力なオマエは周りの人たちから陰であざ笑われていることさえも気づかずに
一生を過ごしていく、そんなちっぽけな存在のまま残り少ない人生をひっそりと
過ごしていかなければならないオマエの存在価値は小さ過ぎてどうでもいいことだ。
ただ、いまおれに相手してもらえたことだけでもありがたく思って寝ろ!
0034nobodyさん
02/03/28 00:25ID:???sub foo ($) {
$_[0] == 0 or &foo($_[0] - 1);
print $_[0];
}
foo 10;
sub bar ($) {
$_[0] == 0 or bar $_[0] - 1; # error
print $_[0];
}
bar 10;
0035nobodyさん
02/03/28 00:30ID:???sub bar($);
sub bar ($) {
$_[0] == 0 or bar $_[0] - 1;
print $_[0];
}
0036nobodyさん
02/03/28 00:34ID:???あ、なるほど。勉強になります。
0037nobodyさん
02/03/28 05:37ID:Zku7n2ykPerlのスクリプトって、いったん全部をコンパイルしてから処理をするのでしょうか?
それとも、そのルーチンで必要な部分だけピックアップしてコンパイルするのでしょうか?
なんでこんな質問をするかといいますと、
if ($hoge) { require "hoge.pl"; &hoge(); }
といったソース書いたとします。
$hogeがtrueにならなかったときには、hoge.plの中にエラーがあっても、
警告されないような気がするんです。
だとするのなら、ケースによって全く異なる処理になるようなルーチンは、別のファイルで
作成した方が、スクリプト自体が小さくなり、より高速に処理が終了するのかな?
という風に想像しているのですが。
「むしろrequireで呼び出すファイル分ディスクアクセスが発生したりいろいろで、
その場合は遅くなる」
という風な想像もあったりするのですが、その辺みなさんはどうお考えなのか、
ぜひお教え下さい。
0039ノバ
02/03/28 15:03ID:B1izX7ckどうすればいいのでしょうか??
フォルダに格納されている画像が6つの時は
★★★
★★★
画像が8つの時は
★★★★
★★★★
このように表示したいです。
0042ノバ
02/03/28 15:16ID:B1izX7ck★はサムネイルじゃなくて、生画像です。
0043nobodyさん
02/03/28 15:38ID:???glob('path/to/images/*.*')とか
`ls path/to/images` とか。
0044nobodyさん
02/03/28 17:09ID:???2段にしたいんだよね
だったらファイル数2で割って、そこで改行すれば良い
って俺は3ヶ月ぶりに触ってるからアホ丸出しなんだけど (笑
0045nobodyさん
02/03/28 17:14ID:???sub openDir()
{
#ディレクトリを開けてファイルを数えて2で割って$linefeedをフラグにする
&dispImage($dir,$file,$linefeed);
# $dirディレクトリのパス
# $ファイル名
# 改行表示用のフラグ
}
こんな感じで行けると思う (遅いかな
dispImageを頑張って書いてちょ
0046nobodyさん
02/03/28 17:16ID:???$dir ディレクトリのパス
$file ファイル名
$linefeed 改行表示用のフラグ
#名無しさん@お腹いっぱい じゃ無くなってる!
0047nobodyさん
02/03/28 18:00ID:???という意味のif文を教えてください。
0050nobodyさん
02/03/28 19:01ID:ZEbZLPiw>2
私は在日韓国人ですが、日本生命側が怒る気持ちも理解できます。
私も西村氏の掲示板運営に抗議するため、敢えてここで西村氏を誹謗中傷し、
「文句があれば訴状を送って来い」
と、連絡先をメールで伝えましたが、訴状は届きませんで、代わりに
イタズラ電話が毎日かかってくるようになりました。
本当に陰湿で卑劣な男です。
21 名前:名無しさん@お腹いっぱい。 投稿日:2001/04/27(金) 22:01
ひろゆきの彼女へ
今回の件、知ってるだろ?
悪い事はいわない。
ひろゆきとは別れたほうがいいぞ。
こんなイタ電しかできない男と一緒にいてどうする。
イタ電でパクられるなんてのは、大抵は女だぞ。
ひろゆきの脳は女性ホルモンが支配している。
女と女がくっついてたってしょうがないだろ?
24 名前:名無しさん@お腹いっぱい。 投稿日:2001/04/27(金) 22:26
いたずら電話とはひろゆきらしいな
ひろゆきの陰険さはメルマガ読んでればわかるし、驚きもしないが
それよりも自分への中傷だけには異常に反応するところが愉快だな
0051nobodyさん
02/03/28 21:23ID:???チョン公ウゼえよ
0052nobodyさん
02/03/28 23:17ID:Pnsb/wgVいちいちファイルを作っていたら大変なので困ってます
0053nobodyさん
02/03/28 23:23ID:???sub printx
{
my($data) = @_;
push(@buffer,$data);
print $data;
}
005552
02/03/28 23:30ID:???うにゅ? STDOUTに出力される奴を変数に送りたいんです
my $stdout;
tie *STDOUT, 'IO::Scalar', \$stdout;
こんな感じです。ActivePerl だと IO::Scalar がなくて…
005652
02/03/28 23:37ID:???ActivePerlの標準インストールベースで動かないといけないので
困ってます
再帰処理で標準出力に吐いているデータを加工するためにバッファ
に貯め込みたいんですが、再帰部分に手を入れたくないんですよ
0057nobodyさん
02/03/28 23:43ID:7pPJ3EHV@b = (5, 4, 3, 2, 1);
@c = reverse @b;
if ( @a == @c ) {
print "equal\n";
} else {
print "not equal\n";
}
if ( @a == (reverse @b)) {
print "equal\n";
} else {
print "not equal\n";
}
の実行結果が
equal
not equal
になるのはなぜですか?
0059nobodyさん
02/03/29 00:01ID:???0060nobodyさん
02/03/29 00:03ID:???1 ppmでインストールさせる。
1.5 IO::Scalarは一緒に配る。
2 perltie見ながらFILEHANDLEにtie出来るクラス作る。
3 再帰部分に手を入れる。
0061nobodyさん
02/03/29 00:14ID:???006252
02/03/29 00:17ID:???うーん、やっぱそうですか
相手が素人さんなのでインストールさせられないんです
中見てみます(ショボーン
・・・作るか
0063nobodyさん
02/03/29 00:41ID:???実際に評価されているのはスカラーだよ.
my @a = (1, 2, 3, 4, 5);
my @b = (5, 4, 3, 2, 1);
my @c = reverse @b;
my $a = @a;
my $b = @b;
my $c1 = @c;
my $c2 = reverse @b;
print join "\n", $a, $b, $c1, $c2;
006457
02/03/29 01:22ID:???ああ、そうなんですか。
じゃあ、
@a == reverse @b
の部分でリストコンテキストでreverse @bを評価するってのは
できないということですか?
無理やりスカラーにするintってのがあるかと思いますが
その逆とか・・。
0065始めて約一ヶ月
02/03/29 01:44ID:XyE2iK+m<input type=text name=$i size=10 value=$value$i>
}
この「value」の所の書き方がわかんないです。
教えてくんさい。
0066nobodyさん
02/03/29 01:47ID:???equal
not equal
にはならねぇだよ?
0067nobodyさん
02/03/29 02:10ID:???print "<input type=text name=$i size=10 value=$value$i>";
}
こういう意味か?
006852
02/03/29 02:16ID:???うう、ヘタレじゃぁ
0069始めて約一ヶ月
02/03/29 02:27ID:XyE2iK+mごめんなさい書き方が悪かったっす、
$value = tsukue;
for($i=1;$i<=$5;$i++){
print "<input type=text name=$i size=10 value=$value$i>";}
のなかで「$value$i」を使った時に「$value$i」が「tsukue1」と認識されないで
「tsukue」と「1」に認識されちゃうんです。
なにか良い書き方はありますか?
0071nobodyさん
02/03/29 03:38ID:???できないと思う.そもそも==でリストコンテキストはあり得ないんじゃないかと.
とりあえずperlfaq4にも書いてあるけど,配列の比較は面倒な方法を取らないとだめだよ.
あと,無理やりスカラーにするのはscalar.intは整数化.
my @a = qw(1 2 3 4 5);
my @b = qw(5 4 3 2 1);
sub arycmp (\@@) {
my ($a, @b) = @_;
@$a == @b or return;
my $n = @b;
$a->[$n] eq $b[$n] or return while $n--;
return 1;
}
print (arycmp(@a, reverse @b) ? "equal\n" : "not equal\n");
0072始めて約一ヶ月
02/03/29 04:20ID:XyE2iK+mごめんなさいさらに書き方が悪かったっす、
$value1 = いちばん;
$value2 = にばん;
$value3 = さんばん;
$value4 = よんばん;
$value5 = ごばん;
print "<form action=XXX.cgi>";
for($i=1;$i<=$5;$i++){
print "項目$i<input type=text name=$i size=10 value=$value$i>";}
print "<input type=submit value=更新>";
のなかの「$value$i」を「$value1」〜「$value5」と認識させて、
フォームの「項目1〜5」のテキストスペースにそれぞれ
「いちばん、にばん、さんばん、よんばん、ごばん」と表示させたいのです。
すいません説明の仕方が下手で。
よろしくお願いします。
0073自動ツッコミプログラムV0.01
02/03/29 04:29ID:???配列使えば?
0074M
02/03/29 06:31ID:xslHK9Siようにするには,ファイル名を何にすればよいのでしょうか。
0076nobodyさん
02/03/29 07:53ID:???2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。
0077nobodyさん
02/03/29 09:37ID:???$value2 = にばん;
$value3 = さんばん;
$value4 = よんばん;
$value5 = ごばん;
print "<form action=XXX.cgi>";
for($i=1;$i<=$5;$i++){
cgiに書かれている言語なんていうのですか?教えてください
0078nobodyさん
02/03/29 09:38ID:???0079nobodyさん
02/03/29 09:46ID:???0080nobodyさん
02/03/29 09:50ID:???${"value$i"}
これでいいか?
わかったら帰って宿題やれ。
>73の言うように配列使った方が利口だと思うけどな。
0081nobodyさん
02/03/29 10:29ID:???本読む、初心者向けのサイト見るなどして、レベルアップしてから来い。
ここは一から手取り足取り教えてくれる無料教室じゃないって事だ。
0083nobodyさん
02/03/29 10:42ID:???$value1 = いちばん;
↑ これは ↓ こうしてみる。
$value1 = 'いちばん';
for($i=1;$i<=$5;$i++){
↑ これは ↓ こうしてみる。
for($i=1;$i<=5;$i++){
print "項目$i<input type=text name=$i size=10 value=$value$i>";
↑ これは ↓ こうしてみる。
print qq|項目$i<input type="text" name="$i" size="10" value="|, ${'value'.$i}, '">';
たぶんね。
0084nobodyさん
02/03/29 13:51ID:GD6wTrbPどうすんだ?
Cの
/* */
みたいのないの?
0085nobodyさん
02/03/29 13:58ID:???全ての行に#を付けて書く。
0086nobodyさん
02/03/29 13:58ID:???こんなのもある。
=foo
いっぺんに複数行コメントするとき
どうすんだ?
Cの
/* */
みたいのないの?
=cut
=英字
から
=cut
まで
0087nobodyさん
02/03/29 13:59ID:???要するに、ない。
どうしてもと言うのなら、使わない変数にヒアドキュメント代入する手もあるけど、メモリの無駄だな。
008885=87
02/03/29 14:00ID:???知らなかった。
スマソ。
008986
02/03/29 14:04ID:???いや、でもこれは厳密にはコメントじゃないから。
#をつかうとコンパイル時に完全に無視するけど
=は違う、みたいな話があったようななかったような…
0090nobodyさん
02/03/29 14:13ID:GD6wTrbP0091nobodyさん
02/03/29 16:22ID:???これを
foreach( %aaa )
{
print "$_" ;
}
みたいなかんじで、次々に引っ張ってきたいんですけど、
可能ですか?、出来れば簡単な例など教えて下さい。
0092nobodyさん
02/03/29 16:39ID:???foreach my $q (keys %{ $aaa->{$p} }){
print "\$aaa->{$p}->{$q} = " . $aaa->{$p}->{$q} ."\n";
}
}
これでいい?
0094nobodyさん
02/03/29 18:22ID:???0095nobodyさん
02/03/30 12:03ID:1Ui3rht3全て0にするには、
$var = 0 ;
@array = (
[ $var , $var , $var ] ,
[ $var , $var , $var ]
) ;
は分かるのですが、列数と行数を与えて初期化
するのはどのようにしたらいいのでしょうか?
$retsu = 5 ;
$gyou = 3 ;
$var = 0 ;
・・・ここから行き詰まってます。
ヒントでもお教え下さいませ。
0096nobodyさん
02/03/30 13:19ID:???$retsu = 5;
$gyou = 3;
$var = 0;
foreach $row (0 .. $gyou - 1) {
foreach $col (0 .. $retsu - 1) {
$array[$row][$col] = $var;
}
}
0にするだけなら@array = ();でもいい気がするけど。
0097nobodyさん
02/04/01 04:59ID:???アンカタグでリンクにするのってどうすれば良いですか?
0098nobodyさん
02/04/01 06:49ID:???画像を表示する部分のタグ変更。
0099sato
02/04/01 12:58ID:???送信ボタンを押した時に、あるサブルーチンへ飛ばしたい場合は
<form action=>の部分にどのように記述すればいいんでしょうか?
0100nobodyさん
02/04/01 13:07ID:???条件があるなら条件を指定して呼び出せば良い。
0101初心者
02/04/01 13:07ID:???>>99
<input type="hidden" name="mode" value="submit">
あとは、$modeとかに値を入れてsubmitなら
フォーム送信された場合のサブルーチンへ飛ばす。
とか。。
でいいんですよね?
0102初心者
02/04/01 13:08ID:???0103100!
02/04/01 13:10ID:???0105nobodyさん
02/04/01 13:26ID:???みんな頑張ってsatoの難題に挑戦してくれ!
0107nobodyさん
02/04/01 13:36ID:???0108nobodyさん
02/04/01 13:45ID:2cwLH4730109sato
02/04/01 13:48ID:???それをボタンが押された時に行いたいんです
すなわちtest.cgiの中に
[追加] [削除]
ボタンがこのようにあるとして、
[追加]を押した時には、サブルーチン sub plus へ。
[削除]を押した時には サブルーチン sub delete へ。
この時<form action=test.cgi method=post>をCGI内に埋め込むと
複数ボタンと複数サブルーチンをどのように処理するのか・・
0110nobodyさん
02/04/01 13:55ID:???条件分岐はわかるね。CGI内では条件分岐して処理を場合わけする。
htmlのボタンごとにcgiの処理を分岐するには呼び出す時点で条件を指定する。
具体的には環境変数というのを使って引数を持たせる。>>101の方法。
mode=plusという引数を持ってたら追加モードへ..ってやる。
あとは「環境変数」で検索してくれ。
0111nobodyさん
02/04/01 13:55ID:???<input type=hidden name=mode value=plus>
<input type=submit value="追加">
</form>
<form action=test.cgi method=post>
<input type=hidden name=mode value=delete>
<input type=submit value="削除">
</form>
0112108
02/04/01 15:19ID:wV1XGpKY他のサイトのデータを読むにはどうすれば良いんでしょうか?
i-modeでソースを見たいんですけど。。。
0113108
02/04/01 15:38ID:???勉強しなおしてきまふ。
0114nobodyさん
02/04/01 16:46ID:???perlってマインスイーパーとかペイントみたいな
アプリケーションって作れるの?
どうなの?おせーて★
0117nobodyさん
02/04/01 17:05ID:???Perlだから○○はつくれない、ってことはないぞ。
得手不得手はあるにしても。
頑張ればマインスイーパーでもなんでも作れるさ。
0119nobodyさん
02/04/01 17:48ID:???Javaなんて大がかりなもの持ち出すまでもない。
http://turedure.s8.xrea.com/yourmine/index.html
0120nobodyさん
02/04/02 05:14ID:???スマートに処理をするには、どうすればいいのでしょうか?
一応以下のを考えましたが、m// って遅いしメモリ食うんですよね?
local $_ = '';
while (!eof(STDIN)) { $_ .= STDIN }
&func($_);
sub func {
local $_ = shift;
while (m/^(.*?\n)(.*)$/) {
$_ = $2;
print $1; # ここら辺にしたい処理を入れる予定
}
return 1;
}
他には local @_ = split(/\n/, $_); なども考えましたが、
一瞬だけメモリが二倍要りますし・・・。
あ、サブルーチンには @_ では無く $_ で渡したいのです。
0122nobodyさん
02/04/02 07:35ID:???ファイル全部読み込んでメモリも何も無いと思う。
敢えてやるならwhileとm//gかなあ。
$/ = '';
func(<STDIN>);
sub func {
local $_ = shift;
print $1 while /(.*\n)/g;
# ↑処理
}
まあ、ネタなんだろうけど。
0123nobodyさん
02/04/02 10:03ID:???ネタかな?とも思ったが、一応「初心者スレ」なんで...
どうして変数$_ にファイル内容をすべていれた後に改まって1行ずつ処理をするのかわかりませんが、
結局、メモリをくわないようにファイル処理したいのならば以下のように正攻法でいくのがベターかと。
open(READ, 'filepath');
while (<READ>){
やりたい処理 if /pattern/;
}
あと、「m// って遅いしメモリ食うんですよね?」とありますが、そんなことはありません。
特に先頭マッチ(m/^pattern/)や後方マッチ(m/pattern$/)は高速だし、1バイト文字に
マッチさせたいのならindex関数を使うほうが高速です。これは結局、処理内容に応じて
最適の処理を模索していくしかないと思いますが、それでもより高速化をもとめるのならば
C的な言語にシフトせざるを得ません。
0124nobodyさん
02/04/02 13:32ID:YZpqqRq/何回かに一回openに失敗してしまうなんて事はあるのですか?
0125nobodyさん
02/04/02 13:38ID:vQkiGH9yopenとcloseの数は合ってますか?
0126124
02/04/02 13:52ID:PEBO6o/oすいません。open失敗したわけではないのですが
そういう場合てあるのかな〜?と思ったので。
0128124
02/04/02 14:08ID:PEBO6o/o>ファイルハンドルに使われるメモリが足りなくなったときとか。
こういう場合があるんですね。なるほど。
けど、こんなサーバ使ってられん!てレベルの話ですよね?
レスありがとございます。
0129nobodyさん
02/04/02 14:09ID:aIwf9lEFソース中に、
my $ref = {
'a' => 1,
'b' => 2
};
こんな感じで初期できますけど、これを、
ファイルにして、そのファイルから
open ( FILE , "<ファイル" ) ;
my $ref = <FILE> ;
close ( FILE ) ;
こんな感じで取り込みたいんです。
(このソースじゃ駄目でしたけど・・・)
どなたか、ご存知でしたら、ご教授ください。
0130nobodyさん
02/04/02 14:11ID:???require "ファイル";
じゃダメなのか?
0131129
02/04/02 14:24ID:aIwf9lEFなるほど!
盲点でした。
ありがとう御座います。
0132129
02/04/02 14:27ID:aIwf9lEF無名リストのに名前を付けれたと、記憶しているのですが、
その記述方法を忘れてしまいました。
$VAR1 = {
'x' => 1,
'y' => 2
};
dumperの結果ですが、変数が$VAR1になってしまうのですが、
これを変えたいのです。
以上よろしくお願いいたします。
0133nobodyさん
02/04/02 15:26ID:YZpqqRq/print <<"EOF";
〜〜大量〜〜
EOF
で出力すると〜〜大量〜〜の分をまとめてメモリに格納しちゃうんですか?
それとも一行づつ処理して
print "〜〜〜";
print "〜〜〜";
print "〜〜〜";
と同じになるのですか?
0135☆
02/04/02 16:15ID:???テキストに書き出したいんですが、
バナー複数ある場合テキストの中に
$banner, $bannertitle, $url, $hyoujikaisu, $clickkaisu
という風に書き出したいです。
バナー表示回数とクリック回数を
どのように記述すればいいか是非教えて下さい。
0138☆
02/04/02 16:39ID:???表示回数カウントの方法と、
クリック回数カウントの方法です。
0139nobodyさん
02/04/02 17:40ID:BrKRPiRdレスありがとうです。
出力をバッファリングしなくなるのでprint文の
実行と同時に出力してくれるようになる。というやつですね。
これでいちいちメモリに格納しないで直接?出力する。イコール
print <<"EOF";
〜〜大量〜〜
EOF
でも
print "〜〜〜";
print "〜〜〜";
でも同じになるのでしょうか?
0140nobodyさん
02/04/02 18:24ID:???{
my $class = shift ;
my ( $filename ) = @_ ;
print "##### $ARGV[ 0 ]\n" ;
my $self = {} ;
bless $self ;
}
クラスのメソッドから、グローバル?の変数参照すんのどうすんの?
0141nobodyさん
02/04/02 18:25ID:???効率よく入出力するためのバッファリングなので、あまり気にしすぎない方がいいよ。
手元にある環境で試したけど、標準出力に対し、cygwin版Perlは行バッファリングされていたけど、
ActivePerlはバッファリングされていなかった。
いずれにせよ、STDOUTに対しては完全バッファリングはしてないんちゃうかな?
よくわかんらんけど。
0142nobodyさん
02/04/02 18:36ID:???main::でアクセスすれば? 行儀悪いと言われるだろうがね。
0144nobodyさん
02/04/02 18:57ID:???0146129
02/04/02 19:24ID:aIwf9lEF記述例など、頂けると助かります。
よろしくお願いします。
0148129
02/04/02 19:37ID:aIwf9lEFでは、Dumperで、無名リストを表示する場合、
名前を付ける方法ご存知の型は、居られませんでしょうか、
よろしくお願いします。
>>147
レスありがとう御座います。
ただ、申し訳ありませんが、今後、私の発言に干渉なさらないよう、
お願い申し上げます。
0150nobodyさん
02/04/02 19:51ID:???氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
0151147
02/04/02 20:44ID:???的外れで意味不明な質問をしておきながらそのデカい態度。
見上げたもんだな。
その厨っぷりに感心したから教えてやろう。
Data::Dumper->new([ ref-list ], [ name-list ]);
e.g.
print Data::Dumper->Dump([ \%HASH ], [ 'HASH' ]);
print Data::Dumper->Dump([ \%HASH ], [ '*HASH' ]);
0152129
02/04/02 21:19ID:aIwf9lEF>>151
レスありがとう御座います。
ただ、申し訳ありませんが、今後、私の発言に干渉なさらないよう、
お願い申し上げます。
引き続き、ご存知の方宜しくお願いします。
0153nobodyさん
02/04/02 21:56ID:???$Data::Dumper::Varname="manco";
print Dumper($manco) ;
これじゃだめ?
ttp://www.xav.com/perl/lib/Data/Dumper.html
このあたり参考になるかも
0154139
02/04/02 21:58ID:wv3Og9zkご丁寧にどうもありがとです。
けど、なんか混乱状態に陥ってます。。。
>>139の両者ともサーバへの負担はかわらずという事ですかね?
0155nobodyさん
02/04/02 22:20ID:???0156120
02/04/02 22:36ID:???ソース公開したりして無くて・・・というか、ずっと以前に
公開してた事ありましたが、直ぐに中止してよかった (笑
>>121
m// や s/// 等が続いて switch 分作る時に良くやります。
が、玄人さんは使いたがらないらしいですね。
私は初心者ですのであまり理由がわかりませんが。
>>122-123
自分はまだ「どうにかプログラムを書ける」位のレベルですので、
やっと関数・処理の切り分け、流用・設計を考慮し出したトコなのです。
main ではデータの流れだけを担当し、細かい処理は各関数に
任せた結果が例の処理でした。
で、各関数には @ で渡さず $ で統一したかった、という感じ。
やっぱり >>123 のようなのがやり方が一般的ですよね。
そうすると、便利な関数にはなるのですが、酷いと main 一個だけの
プログラムにもなりかねないので・・・もっと精進します。
有難う御座いました。
0157129
02/04/02 23:35ID:???レスありがとう御座います。助かりました。
URLも参考になりました。
とりあえず、このような形で解決できました。
ありがとうございました。
$aa->{ 'aa' } = 'aa' ;
$Data::Dumper::Terse = 1 ;
print '$aaa = ' . Dumper( $aa ) ;
結果:
$aaa = {
aa => "aa"
}
0158nobodyさん
02/04/03 00:09ID:???$manco='manco';
こんなふうにして、staitc?な変数置きたいんだけど、
駄目?
0161158
02/04/03 00:56ID:???package manco ;
my $manco='manco';
だったぁ〜
0162nobodyさん
02/04/03 01:03ID:???package system;
$system::logfile = 'bbs.log';
package main;
my $filename = $system::logfile;
こういう事じゃなくて?
0163nobodyさん
02/04/03 01:23ID:???わざわざそんなことしてなんになるのか?
ただのアホだな! アホのくせに書き込むんじゃねーよ!
0164nobodyさん
02/04/03 02:53ID:Hn4nUBfcそういうのって可能ですか?
例えば、htmlの場合
<html>
<!--#exec cgi="cgi-bin/accesskaiseki/accesskaiseki.cgi"-->
</html>
みたいに記述すればOKですが、同じ文章を
CGIファイルの中に付け足しても無理ですよね。
アホな質問かもしれませんがわかる方いたら教えてください。
0165nobodyさん
02/04/03 02:59ID:???>やっと関数・処理の切り分け、流用・設計を考慮し出したトコなのです。
>main ではデータの流れだけを担当し、細かい処理は各関数に
>任せた結果が例の処理でした。
>で、各関数には @ で渡さず $ で統一したかった、という感じ。
なるほど、意図が判った。
そういうときは、私はファイル名、もしくはファイルハンドルを関数に渡します。
0168nobody
02/04/03 04:15ID:???具体的に何のCGIに入れるのか分からないが、
掲示板みたいのなら上の方の設定部分に
$honyarara='<!--#exec cgi="cgi-bin/accesskaiseki/accesskaiseki.cgi"-->\n';
とやっておいてhtml表示部分に
print "$honyarara";
を足す。多分だけどな。
うまく行ったら私の幸せでも祈ってください。
0170168
02/04/03 04:41ID:???しかも間違えてたよ。
$honyarara='<!--#exec cgi="cgi-bin/accesskaiseki/accesskaiseki.cgi"-->';
print "$honyarara\n";
だよ。(鬱
逝ってきます。
164は166の方法が難しいときはSSIでなくCGIのアクセス解析にしてimgタグを上記方法で埋め込んで下さい。
0171nobodyさん
02/04/03 11:21ID:???こんな感じで、ファイルハンドルをハッシュの中にいれて使おうと思ったんだけど、
うまくいかんかったのだけど、どして?
0172nobodyさん
02/04/03 11:28ID:???そういう奴は、すっこんでろよ。
ここは、【Perl】初心者コーナーだ。
質問する訳でもなく、答える気も無い奴は、
しゃべるなってこった。わかったか?
0173nobodyさん
02/04/03 11:41ID:???初心者に質問の仕方を教えてますがなにか?
まずは質問の仕方を覚えるのが大事。
質問の仕方がわかるようになれば、問題の解決法を調べる方法もわかるようになってくる。
そうすれば他人に聞かずとも自分で調べる事もできるようになるしな。
回答を教えるだけが親切ではない。
0174nobodyさん
02/04/03 12:00ID:???漏れが、いいたいのはさ、
「そんな事もしらねぇ〜書き込むんじゃねぇ〜よ」
みたいな事いってるのよ、
あんたの、その上から人を見るような、口調は、正直気に入らないが、
教えて欲しい人には、利益になるから、いんじゃねか
0175nobodyさん
02/04/03 12:58ID:???129みたいなのに常駐されると特に厄介だし。
「2:それでこんな風にやってみたが・・・ 」を書いてあると、
間違いを指摘するのが容易で答えやすいのではないでしょうか。
なんの努力もなしに、教えてくれと助けを求める人の中には、
初心者というより、ただ単に頭が悪い人という場合があるので、
適当にあしらってしまうのも理解できます。
FAQのような事はgoogleや適当なWebサイトに誘導するのはアリだと思うし、
調べ方を教えるのが、質問者に対してもっとも利益になると思います。
過度の煽りには賛同しかねますが、
Perlに関する初心者向けの本で解決することを質問されていてはきりがないので、
適度に追い返して欲しいというのが本音です。
と172の煽りに乗ってしまう俺がいる。
ほとんどの方は、努力する姿勢をみせている質問者には、
煽らずに答えてあげていると思います。一部の方は・・・(省略)
172さんのような口調の方がおられると余計に荒れてしまうので、
自身も多少の自粛をお願いします。(気持ちは理解してますけど。)
0176春虫
02/04/03 13:18ID:???foreach $i (@args) {
($name, $val) = split(/=/, $i);
#$val =~ tr/+/ /;
#$val =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack('C', hex($1))/eg;
#$cgi{$name} = $val;
if ( $name eq 'data1' ){
$data1 = $val;
} elsif ( $name eq 'data2' ){
$data2 = $val;
}
}
これだとフォームが増えるとif〜のがズラズラ増えちゃうよね?
なんかスマ〜トにやるにはどー書いたらいいでしょか?w
0180179
02/04/03 13:27ID:???0181nobodyさん
02/04/03 13:48ID:???とりあえず、
print $file{ 'fh' } $str ;
を
$fh = $file{ 'fh' } ;
print $fh $str ;
って対処してはいるんだけど、
なんかスマートじゃないなーって思って質問したんやけど、
これで、あってるのかしら?
0182nobodyさん
02/04/03 13:59ID:???use warnings ;
皆さん使ってます?
0183
02/04/03 15:35ID:7cQZbwjHフォームで取得した情報を、テーブル内に表示しようとすると
並び順がめちゃくちゃになってこまっています。これを順番に表示するにはどうしたら
よいでしょうか?
名前 → 本文
メールアドレス → 名前
本文 → メールアドレス
#フォームデータの復元
foreach $pair (split(/&/, $query)) {
($key, $value) = split(/=/, $pair);
# 文字のデコード
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;
$FORM{$key} = $value;
0184nobodyさん
02/04/03 16:05ID:???>>1から引用
> 1:自分はこう言う事がしたい。
> 2:それでこんな風にやってみたが・・・
> 3:それだとこんなエラーが出て上手く行かなかった。
肝心の「何がしたいか」を書かないでまともな返事を期待するなよ。
アンタのやりたいことは多分これだと思うが。
-- begin code --
print { $file{fh} } $str
-- end code --
0185nobodyさん
02/04/03 16:06ID:???Hashってのはそういう仕様なんだよ。
順番に表示したきゃsort keys %hashやTie::IxHash、DB_FileのDB_BTREEでも使えや。
0186183
02/04/03 16:18ID:7cQZbwjHどうも有難うございました。そういう仕様なのですね。納得です。
勉強してまた、出直してきます。
0187nobodyさん
02/04/03 16:29ID:???sortを使ってハッシュの中身を整列してから表示するという手もある。
0188183
02/04/03 16:38ID:???ところで、hash は順番めちゃくちゃに表示っていうのは
毎回ランダムに順番が代わるのでしょうか?それとも何か規則性あるんですか?
0190nobodyさん
02/04/03 16:54ID:???順番は変化します。
基本的には恐らくハッシュ値の順とかだろうけど、同じハッシュ値の場合は
格納した順によって変化するはずなので、同じ順番に並ぶことを
期待しない方がいいと思う。
以上適当な解答なので、どうしても気になるならPerlのソースコードでも
見て確かめてください。
ハッシュについてはC言語のアルゴリズムの本をみればよく分かると思う。
0191nobodyさん
02/04/03 17:09ID:???モジュールで整列できる物がある。
・・・以前JAPUさんに教えてもらったのにログが見つからない。(涙
0193nobodyさん
02/04/03 18:34ID:???<input type=hidden〜〜〜>
で渡す。
0194nobodyさん
02/04/03 18:39ID:???〜〜.cgi?comment=sage
ってするか、フォームボタン作って
<input type="hidden" name="comment" value="sage">
ってする。もしくはjavascript使って併用することもできる。
あとはクッキー使う方法もある。削除パスワードとか。
0195192
02/04/03 18:44ID:???<input type="hidden" 〜
で解決しました。皆様方に感謝です。
0196nobodyさん
02/04/03 21:56ID:???なんですけど
package test ;
sub new {改行多すぎて省略}
sub a
{
my ( $self ) = shift ;
my ( $str ) = @_ ;
print "$self->{test} ### $str\n" ;
}
sub b
{
my ( $self ) = shift ;
my ( $str ) = @_ ;
# a( $str ) ;
a( $self , $str ) ;
#ここの引数の数と
}
package main ;
my $test = new test() ;
$test->a( "call a" ) ;
#ここの引数の数
$test->b( "call b" ) ;
exit ;
メインから呼ぶとき、
$test->a( "call a" ) ;
だけど、メソッドbから、呼ぶときは、
a( $self , "call a" ) ;
と、なっちゃったんだけど、できれば引数の数が変わるのは、避けたいいんだけど、
これは、言語仕様すか?
それとも、記述の仕方間違ってます?
0198nobodyさん
02/04/03 22:16ID:???$self→a("call a");
ってやりなされ。
0200nobodyさん
02/04/04 01:44ID:???漏れは、
$FORM{$key} = $value;
push(@FORM_ORDER,$key);
てな感じでキーの順序を覚えておいて、
foreach(@FORM_ORDER) {...}
で回すだす。
0201nobodyさん
02/04/04 10:04ID:???0202春虫
02/04/04 15:04ID:???print TMP "$no<>$data1<>$data2<>$date\n";
open(DATA,"$file") || &error("$fileが変!");
while (<DATA>) {
print TMP $_;
記事に$noを振りたいんだけど$noを1づつ増やして
いきたいのですが・・・どうも上手くいきません。
Perlの先輩方々よいアドバイスをください・・・
感じとしては$fileの1行目を読み込んで
$noに+1をする感じでいいのでしょうか。。。
0203nobodyさん
02/04/04 15:16ID:???もう少しわかりやすく。
何をやりたいかよくわからない。
0204202
02/04/04 15:22ID:???書き込みにNoをつけたいんです;−;
1番目記事,2番目の記事って感じに。
0206nobodyさん
02/04/04 15:25ID:???ログにナンバーを振るのでなく、表示の際にナンバーを振っていく方がいいと思うが
それじゃダメなのかな?
0207202
02/04/04 15:35ID:???0208誰かもっとスマートな方法教えて
02/04/04 16:00ID:???open(TMP, ">$tmp") || &error("$tmpが変!");
$tmp = <DATA>;
$tmp =~ /^(\d+)<>/;
print TMP ($1+1) . "<>$data1<>$data2<>$date\n$tmp";
while (<DATA>) {
print TMP $_;
0209nobodyさん
02/04/04 16:00ID:???http://www.nn.iij4u.or.jp/~nabe/osietekunn.html
君はなかなかの教えてクンだ。
だが今一歩足りないな。
もっと無意味な情報をこれ見よがしに提示し、
自分の考えを捻じ曲げて喚き散らし、
狂ったように答えを催促すれば誰しも認める第一級教えてクンになれるゾ!
0211fdg
02/04/04 19:45ID:ggon4ynD儲かる出会い系ビジネス
月収100万円オーバー!!
HP作成できない初心者でも安心して運営
出会いサイトシステムをサーバーごとレンタルします
運営者様には無料で宣伝ソフトもお付けします
1.携帯メール自動生成一括送信ソフト
2.高性能メールアドレス収集ソフト
3.サーチエンジン・掲示板一括自動ソフト
http://www.voo.to/2ch/
0212 ◆Ihiuc0j.
02/04/04 23:14ID:zyOMuMfg例えば
--------------------------------------------------------
test(@DATA1,$data,@DATA2);
sub test{
local(@DATA,$data,@DATA2) = @_;
}
--------------------------------------------------------
のようなソースの場合local(@DATA)に全てのデータが入ってしまいます。
色々試行錯誤したのですが、なかなか望む結果は得られませんでした。
で、ポインタ(リファレンス)渡しでやったみたのですが
ポインタ自体は受け渡せたのですが、そこから配列を丸ごと参照する方法がわかりません。
($data->[x]のように一個一個要素を取り出せば上手くいきました)
何かスマートな方法はないでしょうか?
0214nobodyさん
02/04/04 23:19ID:???0215nobodyさん
02/04/04 23:35ID:???0216 ◆Ihiuc0j.
02/04/04 23:37ID:zyOMuMfgうお、あっさり出来たΣ(゜っ゜
サンクス!
0217nobodyさん
02/04/04 23:49ID:???0218nobodyさん
02/04/05 00:24ID:???sub test(\@\$\@);
test(@data, $data, @data2);
sub test(\@\$\@){
local(*ary, *scl, *ary2) = @_;
# ...
}
0219nobodyさん
02/04/05 01:24ID:zs6TJzXIreturnで値を返すときも内部では参照を返しているのでしょうか?
0220nobodyさん
02/04/05 01:30ID:9ypevpefプロトタイプ野郎を見たいので。
0221nobodyさん
02/04/05 01:39ID:???サブルーチン内でmy宣言した変数をreturnできることを考えればわかるだろ!
このうすらハゲが!
0222nobodyさん
02/04/05 01:54ID:???バレタ!?(;゚д゚|||
0223
02/04/05 03:00ID:don7TGy+ヒアドキュメントを含む部分をサブルーチンにしたい場合、どうしてますか?
0224nobodyさん
02/04/05 03:37ID:???意味がよくわからないけど,こういう事?
&foo(<<" HERE-DOC");
here-document
HERE-DOC
インデントに使用した文字(タブとか)も判定に使われる.
perldataのScalar value constructorsを読むと参考になると思う.
0225
02/04/05 04:11ID:don7TGy+英文は読みませんでしたけど、コードの例見たらわかりました。
英文って読む気がしないんですけど、
やっぱり読むほうが普通なんでしょうかね。
0227nobodyさん
02/04/05 04:24ID:???英語が読めると(Perlに限らず)世界は確実に広がる.
読もうとしなければいつまでも読めないまま.
読むスピードはそのうち速くなるから,頑張り過ぎない程度に気軽に読むのが良いかと.
知っている内容が多いperldocは読み易かったよ,おれの場合.
0228nobodyさん
02/04/05 07:21ID:???お前に能書き垂れられる筋合いじゃネーヨ
何様だオマエ???(゚Д゚)
0229Dream ★
02/04/05 07:27ID:???わかっていてもなかなかね。
英語の読解力付けたいんじゃなくて、Perlで目的の
処理が出来たらいいわけなんで、ついつい。。。
0230nobodyさん
02/04/05 07:52ID:???漏れの場合、UNIXのmanを読むうち、いつのまにか
マニュアル英語だけは読めるようになってたよ。
構文が単純だからかねぇ。
もちろん日本語訳があれば、そっちを先に見ます。
0231nobodyさん
02/04/05 08:07ID:???少しは英語に慣れるんじゃない?
たまにRandal L. Schwartzが答えるね。
0232nobodyさん
02/04/05 15:16ID:cQRjW2rJeffective perlはなかなか評判は良いようですが、こちらのほうはどうでしょう?
近くの本屋に売っていないもので、具体的内容が確かめられません。
0233nobodyさん
02/04/05 15:18ID:???0234727
02/04/05 16:11ID:Oqnvheagけっこう高額だそうですね。
0235nobodyさん
02/04/05 16:38ID:7CGZnUtFこのようなログがtail -fで流しているのですが
Apr 5 16:33:08 udp xxx.xxx.xxx.xxx(139) -> xxx.xxx.xxx.xxx(139)
だけ表示させるperlスクリプトを作りたいと思っています。
初めてperlでスクリプトを作るのでヒントいただけたら助かります。
何かヒントになるスクリプトないでしょうか?
拡張としてはxxx.xxx.xxx.xxxのIPアドレスをgethostbyaddrつかって
ホスト名に出来るようにしていきたいと思っています。
0238235
02/04/05 16:53ID:7CGZnUtFwhile(<STDIN>){
print;
}
まずなにからやっていけばいいのかが解ってないレベルです。
もうしわけないです。
配列にデータを入れていかないといけないのか?とか
基本的な所から解ってないです。
発想ができてない状況なのでとりあえずこういうのをやってみろとか
ありましたら是非ともよろしくお願いします。
0239nobodyさん
02/04/05 17:09ID:???#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello world!!";
まずここから。
0240nobodyさん
02/04/05 17:13ID:???なんでCGIになってるんだ?
0241nobodyさん
02/04/05 17:14ID:???0242nobodyさん
02/04/05 17:30ID:???open(TAIL, "tail -f tmp.log |") or die;
while(<TAIL>) {
if (/^(\w+ \d+ \d+:\d+:\d+ ).+(udp )(\d+\.\d+\.\d+\.\d+)(\(\d+\)) -> (\d+\.\d+\.\d+\.\d+)(\(\d+\))/) {
print "$1$2$3@{[host($3)]}$4 -> $5@{[host($5)]}$6\n";
}
else {
print $_;
}
}
sub host {
my $host = gethostbyaddr(pack("C4", split(/\./, $_[0])), 2);
return $host ? "[$host]" : '';
}
0243235
02/04/05 18:11ID:7CGZnUtFありがとうございます。
ゆっくり勉強していくつもりだったんですがいきなり答えが。
でもこのままだと少し問題があったので多少いじりました。
#!/usr/bin/perl
use strict;
open(TAIL, "tail -f /var/log/filter.log |");
while(<TAIL>) {
if (/^(\w+ \d+ \d+:\d+:\d+ ).+(denied )(\w+ )(\d+\.\d+\.\d+\.\d+)(\(\d+\)) -> (\d+\.\d+\.\d+\.\d+)(\(\d+\))/) {
print "$1$2$3$4@{[host($4)]}$5 -> $6@{[host($6)]}$7\n";
# print $3;
}
else {
print $_;
# print $3;
}
}
sub host {
my $host = gethostbyaddr(pack("C4", split(/\./, $_[0])), 2);
return $host ? "[$host]" : '';
}
正直use strict や (pack("C4", split(/\./, $_[0])), 2);のあたりが
まったくわからないのですが勉強させていただきます。
本当にありがとうございました。
0244235
02/04/05 18:15ID:7CGZnUtF0245nobodyさん
02/04/05 20:32ID:???/$keyword/
のようにすると、$keyword の内容が2バイト文字で、その中の一文字に
「\」とか「|」が混じってると普通に検索できません。
なにかいい方法ありませんか?
0246nobodyさん
02/04/05 20:42ID:???アクセスカウンタをDBMつくろうとしているのですが、↓みたいな方法にしたら
うまく表示されませんでした、どの部分に問題があるのかもしわかりましたら
教えて頂けると助かります。宜しくお願いします。
$dat = './dat/dbm_counter';
#ファイルを開いて変数に代入
if (!tie %COUNT, SDBM_File, $COUNT, O_CREAT|O_RDWR, 0666) {&error('File Not Open');}
$COUNT('now') = ++$COUNT('now');
$now = $COUNT('now');
untie %COUNT;
0249nobodyさん
02/04/06 21:30ID:???DBMなんぞよりPerlの勉強をしたほうがいいね。
0250nobodyさん
02/04/06 21:39ID:???-c check syntax only (runs BEGIN and CHECK blocks)
syntax error at - line 5, near "$COUNT("
syntax error at - line 6, near "$COUNT("
- had compilation errors.
0253nobodyさん
02/04/06 21:58ID:???0254248
02/04/06 22:03ID:???if (!tie %COUNT, SDBM_File, $dat ,$COUNT, O_CREAT|O_RDWR, 0666) {&error('File Not Open');}
$COUNT{'now'} = ++$COUNT{'now'};
$now = $COUNT{'now'};
untie %COUNT;
>>250
そのsyntax error っていうのが、今使っているサーバだとでてくれないので
間違いを見つけるのが大変なのですが、何をすれば表示されるのですか?
0255nobodyさん
02/04/06 22:06ID:???use CGI::Carp qw(fatalsToBrowser);
つか、大丈夫ですか、と質問する前に試したらどうだよ。
だがもちろん共用サーバではやるなよ。
0258nobodyさん
02/04/06 22:25ID:???0259nobodyさん
02/04/06 22:45ID:b9SW2YHj----test.txt-----
ABC DEF GHI
ABCDEFGHI JKL
AB CD EF GH
-----------------
だと
3
2
4
と表示したいのです。
私が作ってみたのが
open(IN,"test.txt");
@data = <IN>;
my @kazu = split(/\s/,$_);
print scalar @kazu
close(IN);
なのですが上手く動きません。
上記動作をするにはどうすればよろしいでしょうか?
お教え願えないでしょうか。
0260259
02/04/06 22:46ID:b9SW2YHjprint scalar @kazu;
でした。; が抜けてました。
でも 考えているようには動きません。
0261nobodyさん
02/04/06 22:51ID:???オマエ$_とか<IO>の意味わかってないだろ。
今回は教えてやるから、何か一つマトモな本を読む(そして理解する)ことをおすすめするぞ。
open IN, "test.txt";
print scalar(split), "\n" while <IN>
close IN;
0263259
02/04/06 22:52ID:b9SW2YHj事故レすですみません。
出来てしまいました。
open(IN,"test.txt");
@data = <IN>;
foreach(@data){
my @kazu = split(/\s/,$_);
print scalar @kazu;
}
close(IN);
でしたね。すみません。
0265259
02/04/06 22:54ID:b9SW2YHjありがとうございます。
ただいま勉強中です。
0266nobodyさん
02/04/06 22:56ID:???open(IN,"test.txt");
while(<IN>){
split(/ /,$_);
print "$#_\n";
}
close(IN);
これでどうかしら?
0267266
02/04/06 22:58ID:???0269nobodyさん
02/04/06 23:00ID:???0270259
02/04/06 23:01ID:b9SW2YHj<IO>とは何の事でしょうか?
Input,Outputでしょうか。
$_ は STDINファイルハンドルから読み取ったものを、
変数で指定しなかった場合に、戻り値を自動的に代入する変数という事でOKでしょうか?
良かったらお教え下さい。
0272nobodyさん
02/04/06 23:19ID:???IOがInput/Outputってのはよしだが、
ここでは"IO"ってのは"X"と同じく、「何らかのファイルハンドル」って意味で使った。
で、俺が言いたかったのは<>(ヤマカッコ演算子)のこと。
<IO>でファイルハンドル"IO"から一行または全行読み込み、
whileなどの中ではデフォルトの代入先として$_が使われる、と。
試しに
<IO>;
とだけしても$_にはなにも読み込まれない。
で、$_ってのは幾つかの演算子/関数においてのデフォルトの使用変数。
>>261で示した"scalar(split)"のsplitの第二引数も$_なのでこんなこともできる。
(ちなみにデフォルトの第一引数は' 'だ。)
つーようなことが>>259のコードを見て理解しているとは思えなかったわけだ。
そんだけ。もう寝る。
0273nobodyさん
02/04/06 23:28ID:???今まで、「不等号の記号」とか言ってて、わずらわしかったんだよな・・・
0274nobodyさん
02/04/06 23:30ID:???それくらいなら「小なり大なり」と家YO!
0275259
02/04/06 23:34ID:b9SW2YHjおっしゃるとおりで、理解できていません。
これから勉強します。
丁寧なご説明有り難う御座いました。
0276nobodyさん
02/04/06 23:48ID:cii4pUwI絶対パスで書くとエラーが出ます。
例えば
<!--#exec cgi="../a.cgi"-->
ならOKですけど絶対パスで
<!--#exec cgi="www/usr/a.cgi"-->
だとエラー出ます。(↑の絶対パスは例)
絶対パスは間違ってないはずなんですが。
それとも間違ってるからエラーなんでしょうか。
0278nobodyさん
02/04/06 23:58ID:???$new = time();
($sec, $min, $hour, $day, $mon, $year) = localtime($new);
とした、$monは+1しないといけないのに、
$dayはそのままでもいいんですか。
そういう仕様にした理由ってなんでしょ。
0279nobodyさん
02/04/06 23:58ID:cii4pUwIいや、だから例、って念を押してるじゃん・・
例が思いつかなかったからそう書いたんだけど
/home/aaa/public_html/a.cgi
これって絶対パスですよね?こういう指定をやってもエラー出る。
http://www.aaa.com/a.cgiでもエラー。
0280nobodyさん
02/04/06 23:59ID:rWktCpba相対パス
0282nobodyさん
02/04/07 00:01ID:???0283nobodyさん
02/04/07 00:03ID:???絶対パスは使えないことがある。詳しくはここ参照。
http://tohoho.wakusei.ne.jp/wwwssi.htm
>>277>>280
真性か?
0284nobodyさん
02/04/07 00:04ID:D+FXhcqD0286nobodyさん
02/04/07 00:58ID:???それは日が1から始るなら月も1からにせんかい!
ってことなんだろうけど、月の表記は日本のように数的でなく
Januaryなどのように文字で表すのが一般的だからじゃない?
日は1st, 2ndって数での記述が普通だからそれに合わせたんでしょ、おそらく。
0287nobodyさん
02/04/07 03:14ID:???違う、知ったかカコワルイ
0290nobodyさん
02/04/07 07:03ID:???Perlのモジュールって、ネイティブコードで動くの?
ようするに、早いの?
なんか/usr/lib/perl5/に
ごちゃっといっぱい入ってるんだけど、
皆、?,pmとか、?.plなんだよね、これって普通のソースだよね、
単に、requireでファイルをインクルード
してるのと、変わらないのかしら?
どうなの?
0291k
02/04/07 07:48ID:1Y8RzvgS「返信」とか「次の1件」とかのボタンをボタンじゃなくて
画像にしたい場合はどうすればいいですか?
0292nobodyさん
02/04/07 08:10ID:???第二に、それを知らなくてもできる方法はあるがperlは関係ない。
掲示板の作者に聞くか、ウェブ制作板のjavascript関係のスレで質問しましょう。
0294nobodyさん
02/04/07 10:02ID:l6zqVn0khttp://tohoho.wakusei.ne.jp/html/input.htm
0297292
02/04/07 12:36ID:???再帰ックなレスだな。
なるほど..画像といったらアンカータグかと..。
まあ「ボタンじゃなくて..」っていう>>291は画像貼り付けたボタンもNGかもね。
0298nobodyさん
02/04/07 12:50ID:KHtC3gVA今は正規表現でホストにproxy ns cacheを含むリモートホストを弾くようにしているのですが
他に追加すべき単語はあるでしょうか?
海外の匿名串は弾けなさそう・・・
0300298
02/04/07 13:55ID:KHtC3gVAそれも考えたんだけどポートスキャンしないとダメだから
大掛かりなスクリプトを組まないとだめだろうなぁ。
cookieを併用してみるのも考えてみます。
ありがとうございます。
0301
02/04/07 15:23ID:V4vspG98ある変数のなかのメッセージから改行コードをマッチングさせて
改行が特定の数になったらそれ以降を切り捨てるやりかたをおしえてください
0302nobodyさん
02/04/07 15:53ID:???$message =~ s/\n{$n,}//g;
0303nobodyさん
02/04/07 15:55ID:???改行3個目以降切り捨て。
多分最適化の余地あり。
0304nobodyさん
02/04/07 17:54ID:???$str = ($str =~ /^((?:.*\n){$limit})/ ? $1 : $str);
303氏のよりも少しだけ速い
0305
02/04/07 19:04ID:V4vspG98ありがとうございます
0306nobodyさん
02/04/07 19:08ID:???$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
これだと全部<>になってしまいますよね?
なんかいい方法はないでしょうか?
具体的には <<<<>><を <<<<>>< みたいな感じにしたいのですけれど。。
いろいろ探したのですが見つかりませんでした。。
0307nobodyさん
02/04/07 19:20ID:???&は&と書くか全角で&と書くかしてくれ
0308nobodyさん
02/04/07 19:53ID:???Cのlimit.hの
$_ = INT_MAX - 1 ;
みたいな事したいのだ!
0309nobodyさん
02/04/07 20:46ID:???0310
02/04/07 20:59ID:V4vspG98>>304の方のほうがうまくいきません。
私のせいかもしれませんがどこがわるいのかわからないです・・・
0311nobodyさん
02/04/07 21:00ID:mbQ4bo4Fデータファイル内のあるデータと一致する行だけを消す方法で
定番のやり方はあるのでしょうか?
ファイルを全部読み込んで、リストにして一致する行以外を
別のリストに作成して、書き込む方法では力づくっぽい気がしまして・・
ご教授よろしくお願いします。
0312nobodyさん
02/04/07 21:18ID:???改行数の設定はちゃんとしてる?
my $limit = 3;
0313nobodyさん
02/04/07 21:39ID:???ファイルを1行ずつ読み、あるデータと一致しない行を
適当なファイルに書き出していく。
そのファイルを元ファイルと置き換える。
ってのが定番でないかな。最適かどうかは知らんけど。
0314
02/04/07 21:42ID:V4vspG98はい、というか直接数字いれました・・・
0315nobodyさん
02/04/07 22:04ID:???じゃあヽ( ´ー`)ノワガンネース。漏れのところではきっちり動くんだけどなあ。
perl -w とか use strict; とかしたらエラーは出る?
0316やさしいお兄さん
02/04/07 22:53ID:???どうやらこの板は初心者ばかりのようだからわたしがこたえておきましょう。
一応、複数環境(OS)対応版をつくってみました。まちがってたらツッコメや!
my( $nl )= "\x0d?\x0a|\x0d"; # 複数環境用改行パターンテンプレート
my( @lim )= (0, 3); # 繰り返し回数設定
my( $set ); # 取り出し文字列セット用
;# パターンをセットする
($set)= /^((?:(?:(?!$nl).)*(?:$nl)?){$lim[$[],$lim[$[+1]})/o;
0317やさしいお兄さん
02/04/07 23:06ID:???痛々しくてみてなれないネー!
なぜハッシュをつかわないのか? こういうときのためのハッシュだと必ず本には書いてある
はずだが、まだ理解できてないようだな!
0318nobodyさん
02/04/07 23:09ID:???一応煽ってあげよう。
この板は初心者ばかりとか言っておきながら間違ってたらツッコメってどーゆーことだ。
この板の連中よりも上級者なら自分で考えろ。
で、 >>314は303方式で出来てるならそれでいいmでは?
304の方が確かにちょっと速いだろうけど、316は303よりも遅そうだし。
こんなところで引っかかるよりも、作りたいものを完成させるのが先だと思う。
0322nobodyさん
02/04/07 23:41ID:???0323やさしいお兄さん
02/04/07 23:49ID:???わたしが書いたほうが、約1.5倍速でした。318君は、目測でわたしが書いたほうが遅そうだと
書きましたが、どう見てもわたしが書いたほうがはやそうだったからベンチとってやったよ!
わたしが書いたほうは先頭からのマッチ部分までのみの取り出しなのに対し、303君のは先頭から
末尾までのパターンを確認する処理と括弧内にマッチした部分への置換というまわりくどい処理を
していることから考えて、どう見てもわたしが書いたほうが速いし、それに付け加えて複数OSにも
対応しているということだ。
Benchmark: timing 10000 iterations of 303, 316...
303: 0 wallclock secs ( 0.66 usr + 0.00 sys = 0.66 CPU)
316: 1 wallclock secs ( 0.38 usr + 0.00 sys = 0.38 CPU)
0324nobodyさん
02/04/07 23:49ID:???perlのスカラーはintじゃないという罠を踏まえたうえで、
とりあえず概算でいいなら、こんなんで。
$i = 1;
print $i*=10,"\n" while $i ne Inf;
0325(・∀・)イイ!
02/04/07 23:49ID:???とかく月曜日は閑散となりがちなので、明日も気合いを入れてがんがろう!
0326nobodyさん
02/04/08 01:20ID:6SHXOq5Lたまに
Benchmark: timing 10000 iterations of 303, 316...
303: 0 wallclock secs ( 0.66 usr + 0.00 sys = 0.66 CPU)
316: 1 wallclock secs ( 0.38 usr + 0.00 sys = 0.38 CPU)
って見るんだけど、これってどうやって取るの?
方法知りたいです。
0328nobodyさん
02/04/08 01:49ID:???あ、文字列の最後が改行じゃなかった場合にマッチしなかったのね。これでいいかな?
($str) = $str =~ /^((?:.*(?:\n|\z)){0,$limit})/;
Perl神の>>316氏にもプレゼント。
($str) = $str =~ /^((?:[^\x0D\x0A]*(?:\x0D\x0A|[\x0D\x0A]|\z)){0,$limit})/;
Benchmark: timing 100000 iterations of 316, ore...
316: 3 wallclock secs ( 3.96 usr + 0.00 sys = 3.96 CPU) @ 25278.06/s (n=100000)
ore: 2 wallclock secs ( 1.65 usr + 0.00 sys = 1.65 CPU) @ 60532.69/s (n=100000)
>326
ストップウォッチ
0329nobodyさん
02/04/08 01:50ID:???http://www.perldoc.com/perl5.6.1/lib/Benchmark.html
0330
02/04/08 15:23ID:cplvHQS4ありがとうございます。
もう正規表現わけわからんので正規表現だけの本購入しました。
PERLリファレンス系だと細かく書いてないので
正規表現奥が深いですね
0331nobodyさん
02/04/08 18:22ID:???人が書いた正規表現は、まさに「魔法の呪文」みたいなもんで、
使ってみれば確かに効果は出るんだけど、それがどういう理屈で
そうなるのか解読するのは骨が折れるんだよね。
0332nobodyさん
02/04/08 21:40ID:dY0mSfL0阪神は本来、神のチーム。
これくらいのゲームができて当たり前。
1938年に開幕7連勝した時に阪神は優勝した。
今年も9割方優勝する。
阪神電鉄の株価もウナギ昇りだ。
優勝すれば経済効果も核爆弾級だろう。
現在、阪神ファンの脳内モルヒネ分泌量は最高だ。
仕事にも遊びにもハリが出る。
阪神ファンが勝ち味に飢えていたが故に。
カーネル・サンダースは俺たち阪神ファンに17年間の試練を与えた。
今はそのことに感謝したい。
昼食時には是非ともKFCを利用したいと思っている。
0333nobodyさん
02/04/08 23:00ID:9Gr66QZ9表を細く平面的にしたいんですけど、
(こんな感じ→ttp://www2.pure.cc/~cle/yy-bbs/yybbs.cgi)
どこをどういじれば良いかさっぱりです。
誰かお願い。
0335nobodyさん
02/04/09 00:44ID:???Web製作板でスタイルシートのスレ探しに行け。
0338306
02/04/09 06:08ID:???すいません。えっと、
< < < > > < を < < < > > <
みたいに<>←→<>の相互変換をしたいのです。。
0339nobodyさん
02/04/09 06:49ID:N8wWg1s7@list = (A,B,C,D,E,F);
ってのがあって
EとFだけ取り出して別の配列に入れたい
場合ってのはどうやってやればいいんでしょうか
0340やさしいお兄さん
02/04/09 06:50ID:???これでどう?
%conv= ('<' => '<',
'>' => '>',
'<' => '<',
'>' => '>');
$_= '< < < > > <';
s/<|>|&(?:l|g)t;/$conv{$&}/g;
print;
0342やさしいお兄さん
02/04/09 06:58ID:???これでどう?
@list= qw(A B C D E F);
push(@new, splice(@list, $#list- 1, 2));
0343やさしいお兄さん
02/04/09 07:16ID:???やっぱりすなおに以下のようにしたほうが速いかな?
s/<|>|&[lg]t;/$conv{$&}/g;
0345nobodyさん
02/04/09 07:34ID:???$&は危険
s/([<>]|&[lg]t;)/$conv{$1}/g;
>342
負数のほうが簡潔
push @new, splice(@list, -2, 2);
0346やさしいお兄さん
02/04/09 07:37ID:???できるだけループ数を多くして3回とってみたらいずれも340のほうが速かったです。
つまり、[lg] よりも (?:l|g) のほうが速いという結果でした。
Benchmark: timing 100000 iterations of 340, 343...
340: 12 wallclock secs (11.21 usr + 0.00 sys = 11.21 CPU)
343: 12 wallclock secs (11.43 usr + 0.00 sys = 11.43 CPU)
0347nobodyさん
02/04/09 07:48ID:???まだ間に合うから、修行しなさい。
0349やさしいお兄さん
02/04/09 08:10ID:???でも以外でしょ?
0350nobodyさん
02/04/09 09:46ID:???@new = @list[ 4, 5 ];
0351nobodyさん
02/04/09 10:34ID:???0352nobodyさん
02/04/09 10:44ID:???Perlソースのテンプレートが欲しいのです。
ラマとラクダがまだ家に来てくれないので欲しいのです。
第一引数でフォルダを指定して、
そのフォルダ下にある全ファイルを読み込んで処理する
テンプレが欲しいのです。
ファイル処理をする関数名はdo_file
で、そこは私が作るんで。テンプレおねがいします。
0353☆
02/04/09 10:51ID:???そのバナーのカウントが1プラスされるようにしたいんですが、うまくいきません。
以下の構文でどこか間違っている個所があれば教えて頂きたいのですが、、
ちなみにQUERY_STRINGと$read_data[1]はリンク先URLです。
#バナーをクリックした時
if($ENV{'QUERY_STRING'} eq "$read_data[1]")
{
open (DATA,$datatext);
@data = undef;
@read_data =();
@data = <DATA>;
close DATA;
for($i = 0;$data[$i];$i++)
{
@read_data = split(/\t/,$data[$i]);
$read_data[4]++; #4列目はリンクカウント数
$lastdata[$i] = "$read_data[0]"."\t"."$read_data[1]"."\t"."$read_data[2]"."\n";
}
open(WRITE,">$datatext");
print WRITE "@lastdata";
close WRITE;
print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=$ENV{'QUERY_STRING'}\">\n";
exit;
}
0354nobodyさん
02/04/09 10:52ID:???キミは最初に質問と言っておきながら、いつの間にかクレクレ君に大変身ですか?
0355☆
02/04/09 10:56ID:???あ、すいません。構文間違えました
#4列目はリンクカウント数とかかれている部分、
$read_data[2]++;
で、2列目の間違いです。
0356352
02/04/09 11:07ID:???<>とか、きっとそういうのを使うとは思うんですが…
どうかおねがいします。教えてください。
ペコリm(_ _)m o0(いつのまにか…というより、もとよりそのつもりでしたが何か?
)
0357やさしいお兄さん
02/04/09 11:19ID:???これでどうでしょうか?動作確認はしておりませんが...
if ( $ENV{'QUERY_STRING'} eq $read_data[1] ){
open(DATA, $datatext);
while (<DATA>){
@read_data = split(/\t/);
$read_data[2]++;
push(@lastdata, join("\t", @read_data)."\n");
}
close DATA;
open(WRITE,">$datatext");
print WRITE @lastdata;
close WRITE;
print qq(<META HTTP-EQUIV="Refresh" CONTENT="0;URL=$ENV{'QUERY_STRING'}">\n);
exit;
}
0358nobodyさん
02/04/09 11:27ID:???最初に質問というのなら、具体的にどこの記述でいきづまっているのか、
具体的なコードを明示すべきだろ。
それもしないでおきながら調子のいいこと言って自分を正当化すんじゃねーよ!
0359☆
02/04/09 11:30ID:???どうもです。
でもそれで実行して再読み込みすると、データテキストに無限に数字が書き込まれてるんですが・・
それ以前の部分の処理が悪いんでしょうか?
0361nobodyさん
02/04/09 12:06ID:???>いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
>
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
>
>1と3が無いと誰も答えられないよ、良い回答は良い質問から。
>一緒に勉強しましょう。
0362やさしいお兄さん
02/04/09 12:09ID:???そうですよね。処理の内容を考えずに書いてしまいました。チョット
データファイル内容がよくわからないのですが、リンク先URLはあらかじめ
データファイルに設定されているということならば以下のような感じかなと。
open(DATA, $datatext);
while (<DATA>){
chop;
@read_data= split("\t");
$read_data++ if $ENV{'QUERY_STRING'} eq $read_data[1];
push(@last_data, @read_data);
}
close(DATA);
open(WRITE,">$datatext");
for ( @last_data ){
print WRITE $_,"\n";
}
close WRITE;
print qq(<META HTTP-EQUIV="Refresh" CONTENT="0;URL=$ENV{'QUERY_STRING'}">\n);
exit;
0363やさしいお兄さん
02/04/09 12:20ID:???まちがってしまいました。ごめっ。
$read_data[2]++ if $ENV{'QUERY_STRING'} eq $read_data[1];
0364やさしいお兄さん
02/04/09 12:31ID:???またまちがってた。頭冷やしてきまーす。
push(@last_data, join("\t", @read_data));
0365☆
02/04/09 12:42ID:???ありがとうございます。
アクセス数の書き込みはうまく行きました。
でも今度はCGIにアクセスすると自動的に何度も何度もリロードされます。
0366やさしいお兄さん
02/04/09 12:54ID:???より速く処理をするために以下の書き方もアリだと思います。
常に以下のメタタグを返す処理ならば何度もリロードになるでしょう。
最終的にどうしたいの?
open(DATA, $datatext);
while (<DATA>){
@read_data= split("\t");
$ENV{'QUERY_STRING'} eq $read_data[1] ? ($read_data[2]++,push(@last_data, join("\t", @read_data)."\n")) : push(@last_data, $_);
}
close(DATA);
open(WRITE,">$datatext");
print WRITE @last_data;
close WRITE;
print qq(<META HTTP-EQUIV="Refresh" CONTENT="0;URL=$ENV{'QUERY_STRING'}">\n);
exit;
0368やさしいお兄さん
02/04/09 13:01ID:???$ENV{'QUERY_STRING'} にこのCGI自身がしていされていれば、
何度もこれを繰り返すの間違いでした。
0369☆
02/04/09 13:09ID:???<a href="banner.cgi?http://www.yahoo.co.jp/"><IMG SRC="banner.gif"></a>
のようになっていて、
バナーをクリックした時にこのサブルーチンが動くようにしたいんです。
すなわちbanner.cgiに直接アクセスした時には
バナー一覧だけが表示される、という形です。
0370nobodyさん
02/04/09 13:11ID:B5CaElBBmy @setting = <SET>
と書いたんですが、@settingには何も入ってないみたいなんです。
open (SET,"$PATH");
my @setting = <SET>
close (SET);
open (SET,">$PATH");
ならできるんですが、、、
0371やさしいお兄さん
02/04/09 13:12ID:???以下のようにして、メタタグをコメントにしてみては?
URL一覧かバナー画像かどちらか必要ないほうもコメントで。
while (<DATA>){
@read_data= split("\t");
print qq(<A href="$read_data[1]">$read_data[1]</A>\n); # URL一覧なら
print qq(<img src="$read_data[0]"><BR clear=all>\n); # バナー画像なら
$ENV{'QUERY_STRING'} eq $read_data[1] ? ($read_data[2]++,push(@last_data, join("\t", @read_data)."\n")) : push(@last_data, $_);
}
0372やさしいお兄さん
02/04/09 13:17ID:???@read_data= split("\t");の直後に以下を書くということかな?
print qq(<a href="banner.cgi?$read_data[1]"><IMG SRC="$read_data[0]" border=0></a><BR>\n);
0373☆
02/04/09 13:23ID:???いやいやいや、バナー表示のHTMLは別の所にあるんです。
このクリック数カウントの部分だけをsub countというサブルーチンで
呼び出したいんです。
クリック数を得るためリンクが「banner.cgi?〜」となっているんですが、
バナーをクリックするとbanner.cgiに飛んでしまう。
だからbanner.cgi?〜
↑ここの値、すなわち$ENV{'QUERY_STRING'}が存在する時、
このサブルーチン&count; を起動させたいわけです。
0374やさしいお兄さん
02/04/09 13:27ID:???+> だと、いきなりファイルが空になってしまいます。
open (SET,"+<$PATH");
my @setting= <SET>;
0375やさしいお兄さん
02/04/09 13:33ID:???なんとなくわかってきました。以前の処理を以下のブロックに入れるということかな?
勿論、メタタグは無しということで。スクリプトの最初のほうがいいかな。
if ( $ENV{'QUERY_STRING'}=~ /http:/ ){
exit;
}
0376nobodyさん
02/04/09 13:34ID:B5CaElBBどうもです。
読み込みはできましたが、書き込みが追加になってしまうのを上書きにしたいんですけど、
読み込み&上書きは一度にできないんでしょうか?
0377やさしいお兄さん
02/04/09 13:35ID:???チョットまずいかな、いかのようにしたほうがよかった
if ( $ENV{'QUERY_STRING'}=~ /^http:\/\// ){
exit;
}
0378やさしいお兄さん
02/04/09 13:37ID:???seek(SET, 0, 0); # これではじめのほうに巻き戻すナリ!
0379やさしいお兄さん
02/04/09 13:39ID:???truncate(SET, 0); # これも必要だね。
0380nobodyさん
02/04/09 13:42ID:B5CaElBBできました!
お付き合いどうもありがとうございました。
0381☆
02/04/09 13:44ID:???ありがとうございます!!
これでとりあえずバナーをクリックした時にURLにジャンプするようになりました。
しかしbanner.cgi自体をリロードすると、
datatextの中のデータとかバナーの数がどんどん増えていってしまいます。
0382やさしいお兄さん
02/04/09 13:58ID:???たしか、サブルーチンにして呼び出すということなので、
@last_data をさいしょのほうで初期化するのをわすれていました。
1どの処理でこのルーチンを複数回呼び出すとどんどん増えていきますね。
@last_data= ();
または
@last_data= -1;
または
@last_data= undef;
または
undef @last_data;
0383やさしいお兄さん
02/04/09 14:12ID:???うそを書いてしまいました。
@last_data= ();
または
$#last_data= -1;
または
undef @last_data;
0386邪魔
02/04/09 15:17ID:???自分で努力しろよ。
0387やさしいお兄さん
02/04/09 15:33ID:???うーん。いまひとつ全体がぼやけてしまったので。できればどこかにテキスト
ファイルとしてアップしてURLを書いてもらえれば、全体の動きがつかめやすい
のですが、そのCGIではバナーの表示やカウントアップ、そのほかどんな処理を
しているのか?? チョット混乱してきました。
0388306
02/04/09 15:34ID:???うまくできました。ありがとう御座いました。
0390nobodyさん
02/04/09 16:22ID:???0391
02/04/09 17:41ID:h5pnnRRdパッケージについてお聞きします
いままでサブルーチンしかつかったことがないのですが
パッケージのほうがよい処理がありましてパッケージにサブルーチンを移そうとしてるんです
でもそのまんまコピペだとうまく動いてくれません。
本とか見ても最初の宣言の仕方だけで
やってはいけないこととかでてなくて困っています。
特にお聞きしたいのはパッケージ中でjcode.plなどを呼び出していいのか
変数の定義をパッケージ内でしていいのか、ファイル読み込んでいいのかなどです。
もしかしてそういうことするためにパッケージってあるんじゃないのかもしれませんが
教えてください。
本には
package PacTest ;
use Exporter ;
@P_TEST::ISA = ('Exporter');
@P_TEST::EXPORT = ('subtest');
sub subtest(){}
1;
ここまでしかでてなくて・・・
0392nobodyさん
02/04/09 18:01ID:???ok
>変数の定義をパッケージ内でしていいのか
ok
>ファイル読み込んでいいのか
ok
他に何か。
0393
02/04/09 18:10ID:h5pnnRRdありがとうございます。
う〜む、そしたらなぜコピペで動いてくれないんだろう・・・
パッケージを使うときのタブーみたいなものありますか?
0394nobodyさん
02/04/09 18:18ID:???@ISA = ('Exporter');
@EXPORT = ('subtest');
0395
02/04/09 19:17ID:h5pnnRRdここに書くためにかきなおしたんですがそのまちがいです
0396nobodyさん
02/04/09 19:54ID:???タブーがないのがPerlって気もするが…
「コピペで動いてくれない」ってコピペしたコードがuse PacTest;でエラーが出るって事か?
ところで話はずれるが@ISAとかにパッケージ名書くより
use vars qw(@ISA @EXPORT);
@ISA = qw(Exporter);
@EXPORT = qw(subtest);
の方が一般的な気がする。ourとuse baseでもいいけど。
0397
02/04/09 20:00ID:h5pnnRRd本にでてたやり方なんですけどね
秀和だめですね
0398396
02/04/09 21:03ID:???それより俺が聞きたいのはどうやったらエラーが出たのかという状況説明なんだが
0399
02/04/09 21:31ID:h5pnnRRdウェブマスターに聞けエラーです
0400nobodyさん
02/04/09 21:45ID:???0402
02/04/09 22:42ID:h5pnnRRd技術評論社は(゚∀゚)イイ
ソフトバンクは(´・ω・`)ショボーン
0403貴様ら教えて下さい
02/04/09 22:45ID:sR6b9WNM最終的には数万人規模のものにするらしいんです。(無理くせーけど。
普通にsendmailで送るのは無理っぽいですし、
どうしていいものかサッパリわかりません。
皆様ならどうやるでしょう?
0405nobodyさん
02/04/09 23:56ID:???0406貴様ら教えて下さい
02/04/10 00:47ID:RNZ++qE3あ、それともBccで数万件指定するのか?
いけるのか?
どうなのか?
>>405
お、使えるかも。
ちょっと見てみる。
0407nobodyさん
02/04/10 00:54ID:???0408nobodyさん
02/04/11 02:06ID:8LiumuzI単純にファイルから数字を読んで、1足して書き込むようなプログラム
(アクセスカウンタみたいな感じ)を作りたいのですがうまくいきません。
どうやら読み書き両用オープンがうまくいってないみたいなんです。
open(FILE,"+> data.txt");
$x=<FILE>;
print $x;
exit;
試しに上のようにすると、なぜか何も標準出力に出力されません。
open(FILE,"data.txt");
$x=<FILE>;
print $x;
exit;
これだと、ちゃんとファイルの中身が標準出力に出力されます。
どうしてなんでしょう?
環境は WINDOWS XP + Active Perl です。
よろしくお願いしますm(_ _)m
0410nobodyさん
02/04/11 02:49ID:???この前もまったく同じ質問があったが、過去レスとか見てる?
+> だといきなりファイルが空になるゾ!
+< で読み込んで
seek(FILE, 0, 0); で巻き戻して
truncate(FILE, 0); でファイルを空にした上で書きこむ
0412nobodyさん
02/04/11 08:32ID:8LiumuzI本などで「+>」は「読み書き両用オープン」って説明されていますが
実際には「書き」しかできないってことですか?(オープンした瞬間データ消えるから)
0414nobodyさん
02/04/11 11:06ID:QakPtgEu0415nobodyさん
02/04/11 12:56ID:???実際には「書き」しかできないってことですか?
これ前から気になってた。
413の答えで納得した。
でも「書いた直後に読みたい」なんて思った事ないな、、
0417nobodyさん
02/04/12 01:00ID:???使用したいのですが、STDIN が思うように動きません。
STDOUT は >>171, >>181, >>184 を参考にしてできたのですが、
<> を使う時はルールが違うのですかね。
わかる方教えて頂けませんでしょうか?
#!/usr/local/bin/perl -w
my %hash = ( in => \*STDIN, out => \*STDOUT );
while (< {$hash{in}} >) { # <= ココが STDIN の置き換えにならない
print {$hash{out}} $_;
}
exit 1;
出力結果は GLOB(0x8103460) のみです。
0418nobodyさん
02/04/12 02:10ID:???グローバルなものをなぜハッシュに入れるのかは敢えて聞かないとして・・・
$tmp = $hash{in};
<$tmp>
とスカラーに格納すれば大丈夫みたい。
ハッシュや配列の形ではだめだった。
$tmpは間接ファイルハンドルと解釈するが、$hash{in}はファイル名グロブに
解釈される仕様のようです。試しに次のような使い方は正常に機能した。
$t{a} = "*.txt";
@txt = <$t{a}>;
ということで、スカラー変数を使いましょう。
0419417
02/04/12 02:54ID:???わざわざ試して頂いて有難う御座います。
実はサブルーチンへ値を渡すのにハッシュを使っていたのですよ。
個人的に STDIN と STDOUT は同じルールで使って行きたい
ですので、実際にはこういう感じで使いましょうかねぇ。
#!/usr/local/bin/perl -w
package main;
exit &main;
sub main {
$ARGV[0] && open(STDIN, $ARGV[0]);
$ARGV[1] && open(STDOUT, "> $ARGV[1]");
return &func(in=>\*STDIN, out=>\*STDOUT);
}
sub func {
my %init = (in => \*STDIN, out => \*STDOUT, @_);
my ($in, $out) = ($init{in}, $init{out}); # <= ●
while (<$in>) { print $out $_; }
return 1;
}
貰った値の正当性を、関数側でチェックしてから使うルールなら
そんなに無駄な処理でもない・・・あ、でも結局ファイルハンドルか。
0420nobodyさん
02/04/12 03:07ID:???0421417
02/04/12 03:47ID:???unix の ping コマンドとかは正常終了が 0 ですよね。
他のも一律で 0 に決まってるモンなんでしょうか。
web で 1 を見かけたので真似しだしたんですよ。最近。
スレ違いすみません。
0422stdlib.h
02/04/12 04:20ID:???#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
0423417
02/04/12 04:44ID:???ありがとうございます。そうか、ライブラリのヘッダか (汗
まだ、解らない事があっても、それを調べる方法さえ解らない
程度の知識ですので、つい真似というか見習ってしまうのですよ。
反省。ちなみに ping の戻り値も知ったのは jman からですしねぇ。
0424nobodyさん
02/04/12 05:01ID:???perldocの使い方・読み方覚えるがキチ。
0425417
02/04/12 06:30ID:???情報有難う御座います。早速やってみました。
% perldoc perlfaq | less
> perlfaq 砌requently asked questions about Perl ($Date:
> 1999/05/23 20:38:02 $)
> Very general, high碎evel information about Perl.
> 瞰hat is Perl?
なんかウチの環境だと文字化けする上、表示に 22sec もかかる・・。
あ、perldoc -f use とかなら化けない。
しかし英語ばかりで頭痛いですねぇ。
Perlドキュメントの読み方
http://member.nifty.ne.jp/hippo2000/perltips/podread.htm
perldoc
http://yuri.sakura.ne.jp/~propella/tips/perldoc.html
今までリスト化されて読みやすい下記サイトを聖書と崇めてましたが
http://www.namazu.org/~tsuchiya/perl/info/perl-ja_toc.html
最新版には perlpod なんて項目があったのですね。
http://www.kt.rim.or.jp/~kbk/perl5.005/index.html
.pm の中身とかを見て、ずっと頭を悩ましていましたよ。
0426nobodyさん
02/04/12 07:09ID:???0428nobodyさん
02/04/12 09:06ID:???readline($h{in)
0429nobodyさん
02/04/12 15:57ID:XFr3wilJ0430417
02/04/12 19:35ID:???ホントだ、できましたよ。有難う御座います。
しかし perldoc では説明でましたが、web 上に散乱するサイトの
日本語マニュアルには全然載っていない関数みたいですね。なんでだろ。
0431nobodyさん
02/04/12 20:10ID:???ダウンロード用のCGIを作っているのですが、ログ形式が
日付<>ファイル名<>総DL数<>LZHのDL数<>ZIPのDL数
となっているログのファイル名が同じの総DL数、LZHのDL数、ZIPのDL数
をそれぞれ足したものを表示されるにはどうすればよいのでしょうか。
総DL数だけならハッシュ使えば出来ると思うのですが。
具体的には
20020423<>test<>5<>2<>3
20020423<>test1<>5<>2<>3
20020424<>test<>6<>3<>3
20020424<>test1<>8<>5<>3
を
test,11,5,6
test1,13,7,6
みたいな感じで出力したいのですが。
0432nobodyさん
02/04/12 21:00ID:???my %count;
while (<DATA>) {
chomp;
my ($date,$name,$all,$lzh,$zip) = split /<>/;
$count{$name}{all} += $all;
$count{$name}{lzh} += $lzh;
$count{$name}{zip} += $zip;
}
foreach (keys %count) {
print join ',',$_,$count{$_}{all},$count{$_}{lzh},$count{$_}{zip},"\n"
}
<>;
__END__
20020423<>test<>5<>2<>3
20020423<>test1<>5<>2<>3
20020424<>test<>6<>3<>3
20020424<>test1<>8<>5<>3
0433nobodyさん
02/04/12 21:02ID:???},"\n"
↓
} ."\n"
0434nobodyさん
02/04/12 21:46ID:4zjuzdoC特定の位置だけを表示したい場合のスマートな方法ってどんなですか?
自分の場合は
単純に1行目から順に読み出して行って、指定行になったらループを抜ける
もしくは、配列に全部読み込んでから指定範囲だけ取り出す
ってやりかたしてるんですが、いまいちよろしくないです。
ファイルサイズによりますがカナリきついです。
また新着ログはファイルの先頭行に挿入したいのですが、この場合は
いったん全部読み込んで、先頭行にログ追加して、全行書き出す
するしかないのでしょか、、、、
0435nobodyさん
02/04/12 21:54ID:???他のファイルを追記で書き込んでリネーム
0436nobodyさん
02/04/12 22:31ID:4zjuzdoCほうほう、その方法でためしてみます
やはり最終的には全行を書き出す事になるんですね、がくり。
挿入とかできたら便利なのになぁとか思った
0437nobodyさん
02/04/12 22:51ID:???それは太古の昔から無理。
なので、ログは先頭に追加せず、おけつに追加していき、
表示する時とかに逆順にしたほうが吉。
もしくは、先頭に追加できるファイルシステムを考案しる。
0438nobodyさん
02/04/13 00:09ID:???0439nobodyさん
02/04/13 06:55ID:???以下の2次元配列において、列部分($data[行][列])の最大インデックスを求める
効率的な方法を何卒、ご教授ください。よろしくお願いします。
一応、以下のようにループで回して比較する方法を考えましたがもっとスマートな
やりかたがありそうな気がしていますがどうしても思いつきません。
$MAX= $#{$data[$_]}> $MAX ? $#{$data[$_]} : $MAX for ($[ .. $#data);
0440nobodyさん
02/04/13 08:50ID:???ありがとうごさいました。うまくできました。
0441ゲーム房
02/04/13 10:19ID:jvfE2/Ztでも、「ゲームCGIは禁止」って書いてるんですが・・・。
0442nobodyさん
02/04/13 10:28ID:???誤爆だろうけどスレ違い。
0445nobodyさん
02/04/13 13:07ID:VMPYMAwGが、できません。
1週間、ずーといろいろやったのですが、
どうしても、うまく行きません。
cgi-lib.plというのが悪いような気がするのですが…。
これって、定番のライブラリですが、
うまく日本語化する方法はないのでしょうか?
0446nobodyさん
02/04/13 13:28ID:sQBkSIs9うるせえんだよボケが!!!!!!!!!!!
0447nobodyさん
02/04/13 13:28ID:sQBkSIs9意味不明 氏ね!!!!
0449nobodyさん
02/04/13 13:35ID:PKxqXxULボタンをひとつだけ押して、複数のスクリプトにデータを渡すことは可能ですか?
ひとつはメールでもらって、その中のmailアドレスから自動でメルマガに登録させたい。
検索しようにもどんな語句で調べたらよいかわかりません。一応いろいろ検索したんですけど。
0450nobodyさん
02/04/13 14:06ID:VMPYMAwGフォームで入力された日本語が、
ちゃんと表示されないので、
それをちゃんと表示されるようにしたい。
jcode.plをreqireして、
&jcode…でコンバートしようとしても
うまくいかないのですが。
0451nobodyさん
02/04/13 14:20ID:???こっちでソース晒せよ。
http://pc.2ch.net/test/read.cgi/php/1012839651/l50
0452nobodyさん
02/04/13 16:24ID:x6G/BIRo$moto = 'a1b2c3d4e5';
$kekka = $moto ;
$kekka =~ s/[\d]//g ;
これ面倒なので、
$kekka = $motoの[\d]を削除した結果
みたいに1行で書けると嬉しいんですが。
0453nobodyさん
02/04/13 16:37ID:???($kekka)= $moto=~ /\d/;
0455nobodyさん
02/04/13 17:44ID:PKxqXxULメルマガ登録スクリプトにアドレスを渡したいんです。
どうせならアドレス一回入力で、「登録しますか」の是非をチェックしてもらい、そのアドレスを渡せたらいいなと思って。
引数にアドレスも付けてをつけてポップウィンドウを開くってのもありかなあ?
でもjsにたよらないとならなそうだし。
0457454
02/04/13 17:55ID:???メールを受け取ったら、自動でスクリプトを起動するってのはだめ?
メールを受ける鯖の/etc/aliasesに
melmaga-touroku: "| /path/to/script/regist.pl"
って書いて newaliases ってコマンド実行しておけば、
メールが来た時に、スクリプト起動できるので、
漏れいつもそうやってる。
0460nobodyさん
02/04/14 03:22ID:???これ、はやってんだ、漏れも使お、
へへへ、まんこ
0461nobodyさん
02/04/14 10:17ID:V1/8ijC1さっそく質問なのですが、
スカラーに入れた(入った)文字列をスカラー名にする方法ってあるのでしょうか?
$a = "test";
$b = "value";
として
$test = "value";
というようなことなのですが
よろしくお願いいたします。
0463nobodyさん
02/04/14 10:40ID:V1/8ijC10464461
02/04/14 10:42ID:V1/8ijC1ありがとうございました。
0465TOM ◆98SA9XcM
02/04/14 12:23ID:Gksq2mQe@mona1 = <LOAD>;
close(LOAD);
foreach (@mona1) {
($yakin,$hiroyuki) = split(/<>/);
if($yakin eq $FORM{'yakin'}) {
(?)
next;
}
}
え〜と、(?)の部分で、現在処理中の配列を、削除したいわけです。
ようは、配列をforeachで読んでいって、$yakinと、
送信されてきた(フォームから投稿されてきた)
$FORM{'yakin'}が一致した場合、現在処理している配列を削除したいわけです。
(?)の部分に、なんと入れたらいいのか、よろしくです
0467nobodyさん
02/04/14 12:45ID:???($yakin,$hiroyuki) = split(/<>/);
if($yakin eq $FORM{'yakin'}) {
$_ = '';
next;
}
}
@mona1 = grep /\S/, @mona1;
でいいかな? なんか無駄が多そうだが。
0468TOM ◆98SA9XcM
02/04/14 12:53ID:Gksq2mQeこれで、海へ行けるぞー!
0469nobodyさん
02/04/14 12:55ID:???サブルーチンはどのように書けばいいのでしょうか?
0470初心者
02/04/14 12:58ID:GNKyG6NlApacheっていうソフトを入れて、Webサーバっつーの立てて
そこでPerlをデバッグしてみてるんですが、簡単なSSIのアクセスカウンタが動いてくれません。
HTMLで「あなたは人目のお客様です」とだけ表示されます。
エラーログには何も書いてないし、DOSプロンプトでチェックしてもSyntax OKって出るだけっす。
カウンタの数字を保存するファイルのパーミッションの問題なのかな〜とか思ってるのですが、
Apache上のファイルのパーミッションを変える方法がわからんです。
昨日はじめたばっかしなので質問の意味がさっぱりかもしれませんが、よろしくです。
0473470
02/04/14 13:32ID:S6NECtrZc:\public_htmlにファイルを置いてやっているのですが、
いろいろ調べてみてもFTP転送時のパーミッション変更方法しか載ってなかったです。
格納ファイルのプロパティでアーカイブやら読み取り専用やら(Win98SE)、いろいろ変えてみたんですが
結果は変わらず。自分のPCなのにFTP転送とか出来るんでしょうか?
説明下手でごめんなさい。
0474TOM ◆98SA9XcM
02/04/14 13:45ID:Gt4aB1lkKEN○さんのページでわかりやすく解説載ってたし。
ttp://www.kent-web.com
0475_gunzip
02/04/14 13:47ID:???#!/usr/bin/perl -w
use strict;
our($a, $b);
sub mapup (& \@ \@)
#(code_ref $code, array_ref $_a, array_ref $_b)
{
my($code, $_a, $_b) = @_;
my @retval;
my $max_index = (@$_a < @$_b) ? @$_a : @$_b;
for (my $i = 0; $i < $max_index; $i++) {
local($a, $b) = ($_a->[$i], $_b->[$i]);
push @retval, $code->();
}
return @retval;
}
my @a = (1, 2, 3);
my @b = (0, 8, 7);
my @c = qw[ G C A T ];
my @d = qw[ C G T A ];
my @sum = mapup { $a + $b } @a, @b; # (1, 10, 10)
my @pro = mapup { $a * $b } @a, @b; # (0, 16, 21)
my @bigger = mapup { $a > $b ? $a : $b } @a, @b; # (1, 8, 7)
my @concat = mapup { $a . "-" . $b } @c, @d; # (G-C,C-G,A-T,T-A)
0476nobodyさん
02/04/14 13:53ID:IPbdNQdj丸見えなんですが。
0477nobodyさん
02/04/14 14:06ID:???> いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
>
> 1:自分はこう言う事がしたい。
> 2:それでこんな風にやってみたが・・・
> 3:それだとこんなエラーが出て上手く行かなかった。
>
> 1と3が無いと誰も答えられないよ、良い回答は良い質問から。
> 一緒に勉強しましょう。
0478nobodyさん
02/04/14 14:07ID:???で、ここ。
スクリプト改造工房 Part4
http://pc.2ch.net/test/read.cgi/php/1012839651/
0479472
02/04/14 14:11ID:???あぁぁ、Windowsならパーミッションは関係なさそう。
SSIの場合は、
1.apacheの設定ファイル(httpd.conf)でSSI(Server-parsed HTML)が
有効になってるか確認。
AddType text/html .shtml
AddHandler server-parsed .shtml
こんなかんじ。
2.SSIを使うhtmlファイルの拡張子が .shtml になってるか確認。
あとは、>>474に従うのもありかと。
0480470
02/04/14 14:13ID:S6NECtrZありがとうございました。本を買って入ってたのがApacheだったので、それを使ってました。
さっそくAnHTTPdを入れて勉強してみようと思います。
0481470
02/04/14 14:15ID:7rjAl4Ry丁寧にありがとうございます!
shtmlにはしてあるんですが、httpd.confをも一回チェックしてきます。
みなさん、親切で泣けてきました。(今回2Ch初書きこみ)
0482470
02/04/14 17:23ID:???カウンタが動作しました。HTTPdソフトのせいじゃなかったみたいです。
いろいろありがとうございました。
0483nobodyさん
02/04/14 18:32ID:lEj2Ud3E$line =~ s/椎名林檎/林 檎/g;
$line =~ s/志村けん/バカ殿/g;
上のようなのをハッシュにしてまとめて処理させることできませんか?
%xx = ( "田中雅夫", "田中さん", "椎名林檎", "林 檎" ,"志村けん", "バカ殿");
$nkeys = keys %xx;
$value = values %xx;
$line =~ s/$nkeys/$value/g;
自分ではこんな感じかな?とか思ったんですが…無理でした。
ご教授お願いします。。既出だったらすいません(^^;
0484nobodyさん
02/04/14 18:48ID:???$nkeysと$valueをprintしてみてなにが入ってるか見てみるとダメな理由はわかると思う。
どうするのが正しいのか俺にはわからないけど。
$line =~ s/(.+)/$xx{"$_"}/g;だとkeysの一致がされないしなぁ・・・。
0485nobodyさん
02/04/14 19:02ID:???$line =~ s/($hoge)/$xx{$1}/g;
こんなんでいいか?
0486nobodyさん
02/04/14 19:36ID:???_gunzipタンひさしぶり〜
0489nobodyさん
02/04/14 20:01ID:???ネタじゃないと思うよ。
理解できない負け惜しみ厨だとおもう。
そういう漏れも全然理解できてないので逝ってくる...
0490469
02/04/14 20:04ID:???0491nobodyさん
02/04/14 20:06ID:???while($line = <IN>) {
chomp($line);
%xx = ( "田中雅夫", "田中さん", "椎名林檎", "林 檎" ,"志村けん", "バカ殿");
#$nkeys = keys %xx;
#$value = values %xx;
#$line =~ s/$nkeys/$value/g;
$hoge = join "|", keys %xx;
$line =~ s/($hoge)/$xx{$1}/g;
print <<EOL;
$line
EOL
}
これで試してみたんですが無理でした(^^;
0492nobodyさん
02/04/14 20:32ID:???俺のところではそれでいけるけど、datafileの中身はどうなってるの?
あとPerlのバージョンは?
0493TOM ◆98SA9XcM
02/04/14 20:36ID:CWCI/F1H変数$nanashiに、
あ<>い<>う<>え<>お<>
と入ってるのですが、
この$nanashiを、
@giko = ("あ","い","う","え","お");
のように、配列に出来ますか?
0494nobodyさん
02/04/14 20:39ID:???0495TOM ◆98SA9XcM
02/04/14 20:44ID:CWCI/F1Hありがとん
0497nobodyさん
02/04/14 20:46ID:???<table>
<tr>
<td>田中雅夫</td>
<td>田中さん</td>
</tr>
<tr>
<td>椎名林檎</td>
<td>林 檎</td>
</tr>
<tr>
<td>志村けん</td>
<td>バカ殿</td>
</tr>
</table>
環境はWINにactiveperl522e入れてます。
flockとか使うとエラー出たりするし、
そういう違いなんかなぁ…
0498469
02/04/14 20:50ID:???決定!ばーか
0499nobodyさん
02/04/14 20:52ID:???0500nobodyさん
02/04/14 20:52ID:???やっぱり俺のところでは普通に変換される。
Win2kにanhttpd+ActivePerl-5.6.0.616。
flockはWin95やWin98じゃ使えないんじゃなかったっけ?
0501nobodyさん
02/04/14 20:59ID:???630あたり入れない?
0502497
02/04/14 21:02ID:???はい、そうみたいです。
他の違いとかは全く分からない状態で…
勉強不足ですいません(^^;
ActivePerlもけっこう前に入れたものだし、
新しいのinstallしてみよっかな。
とりあえず、ありがとうございました〜
0503nobodyさん
02/04/14 21:06ID:???両方EUCで書くこと。
0504497
02/04/14 21:08ID:???きちんと実行しました!!
申し訳ない…鬱だ。。
ほんとにありがとう…4日くらいハマってました(汁
0505497
02/04/14 21:17ID:???ハッシュの中に
"太宰啓介", "太 宰"
を入れてて、
これを抜いたら動きました。。
0506nobodyさん
02/04/14 22:07ID:???$hoge = "\Q". join("\E|\Q", keys %xx) . "\E";
0507nobodyさん
02/04/14 22:15ID:???の方が見栄えは良いな。
いや、>>506の方が多分効率良いけど。
0510rain
02/04/14 22:37ID:sltXes8xPERLのCGIを実行させようとすると何故かダウンロードを始めてしまいます。
どうなってるのでしょう?
0511nobodyさん
02/04/14 22:40ID:???99% Content-typeの問題。
0512rain
02/04/14 22:46ID:sltXes8xに何か問題があるのでしょうか?
0513497
02/04/14 22:49ID:???おー!動いた!ありがと〜
>啓の2バイト目が“[”だから動かない。
ふむふむ…もうついていけないレベルです(^^;
$hoge = "\Q". join("\E|\Q", keys %xx) . "\E";
$hoge = join "|", map{ quotemeta } keys %fuga;
これがどんなことしてるのか、
じっくり勉強してみます。
0514nobodyさん
02/04/14 22:57ID:???1:\nを\r\nにしてみる。
2:それをスクリプトの3行目に置いてみる。
0515rain
02/04/14 23:00ID:sltXes8xやっぱり変わらずダウンロードを開始します・・・。
何が原因なんでしょう?
0516nobodyさん
02/04/14 23:02ID:???環境を明記した上でスクリプトの拡張子を.txtにしてアプして。
0517rain
02/04/14 23:06ID:sltXes8x環境はapacheの1.3です。他に必要な環境情報ありますか?
------
#!D:/program/perl/bin/perl
print "Content-type: text/plain\r\n\n";
print "Hello Perl !";
------
0518nobodyさん
02/04/14 23:10ID:???httpdがApacheなら、httpd.confに
AddHandler cgi-script .cgi .pl
って書いてあるかどうかかくに〜ん。
0519rain
02/04/14 23:15ID:sltXes8x0520nobodyさん
02/04/14 23:19ID:???\r\n\nとはどういう了見だ?
0521rain
02/04/14 23:23ID:sltXes8x0522nobodyさん
02/04/14 23:25ID:???\n\n
だね。
0523rain
02/04/14 23:26ID:sltXes8xはぁ・・今日は諦めようかな・・・。
0524nobodyさん
02/04/14 23:26ID:???それと、Apacheって適当に入れただけだとExecCGIが効いてなかったような。
0525rain
02/04/14 23:30ID:sltXes8xそれと、ExecCGIもちゃんと修正しました。
0527nobodyさん
02/04/14 23:32ID:???0528rain
02/04/14 23:34ID:sltXes8x0529nobodyさん
02/04/14 23:34ID:???ちなみに、ダウンロードされるファイルの中身は、どんなんなの?
Hello Perl!
だけが書いてあるのなら、httpdはOKで、Contenet-type があやしい。
cgiスクリプトがまるまる入っているのなら、httpdの設定があやしい。
0530nobodyさん
02/04/14 23:35ID:rKBAHNDF123456byteをメガ単位にするときって
何で割るの?1000?・・・
0533nobodyさん
02/04/14 23:37ID:???0534nobodyさん
02/04/14 23:41ID:???1026
>
0535nobodyさん
02/04/14 23:47ID:rKBAHNDFスマソ。
0537nobodyさん
02/04/14 23:54ID:???>514を見て「片方だけ変えればいい」という発想できるのは驚き。
その発想力は俺の予想を越えてた。
0538nobodyさん
02/04/14 23:57ID:???UnixかWinか。
あと>529の問いにも答えれ。
0539rain
02/04/15 00:09ID:8o4u1f330541536
02/04/15 00:17ID:???0542nobodyさん
02/04/15 00:18ID:???0543nobodyさん
02/04/15 00:19ID:???悪いがここはPerlの初心者スレなんだ。
人生の初心者は幼稚園にでも行ってくれ。
0544nobodyさん
02/04/15 00:22ID:???「ほーい。WINで、CGIスクリプトがそのままダウンロードされます。」
ね。
つーことは、httpd が、そのスクリプトをCGIだと思ってないのよ。
httpdを再起動してだめなら、apache板へ行ったほうがいいかも。
Apacheの設定を教えてください
http://pc.2ch.net/test/read.cgi/php/1003772635/
もちろん、あちらのスレのログをまず見てガイシュツじゃないか確認しよう。
0545469
02/04/15 00:32ID:???0546nobodyさん
02/04/15 00:42ID:???0547nobodyさん
02/04/15 00:52ID:???それって自分が厨房以下って言ってるのと同じだと思うんだがなぁ。
次回は是非もう少し頭のよさそうな煽りをお願いいたします。
0548469
02/04/15 01:06ID:???0549nobodyさん
02/04/15 01:15ID:???2次元配列で、列の最大インデックス値を求める効率的な方法がわかりません。
自分でなんとか書いてみて、もっとよい方法がありそうな気がしていますが
どうしても思いつきません。よろしくお願いします。
;# $data[行][列] の例
for ($[ .. $#data){
$#{$data[$_]}> $MAX_COL and $MAX_COL= $#{$data[$_]};
}
0551nobodyさん
02/04/15 01:38ID:???>>476の何が不満なんだ?
#our($a, $b);
てして、最後のほうに
print join(",",@sum),"\n";
とか書けば、動くと思うけど。
0553549
02/04/15 01:53ID:???了解しまっ!
0554469
02/04/15 02:03ID:???0555nobodyさん
02/04/15 02:07ID:???理解したいなら他人に聞いてもしょうがない。
自分で勉強するしか。
>2-4のサイトの中には親切に色々教えてくれる所もあるだろう。
理解するよりも利用したいなら>475のソースをそのまま使えばいい。
0556549
02/04/15 02:13ID:???確かに、プロトタイプや複数処理に対応しているところは一見、知ってそうだが
効率の悪い書き方が目立つね。でも、これを理解できないの? どこがわからないの?
0558549
02/04/15 02:30ID:???ループカウンタ $i なんか使う必要ないし、return も遅くなるし、
ループ内で local 宣言を逐一行なってるようなとこかな?
0560nobodyさん
02/04/15 04:37ID:???とかかかな?
0561ほほ
02/04/15 09:08ID:lbZrq7VBこのcgiに
http://yassu.no-ip.com/haikyo/cgi-bin/log.cgi?room=001
のようにURL指定すると画像張り付くようなことがしたいです。
どのようなソースをどこに付け足せばよいですか教えてください。
0562nobodyさん
02/04/15 09:29ID:???それなら$iを使った方がいい。
その手法だと一度$max_index個の配列を一時的に作ることになってメモリを喰う。
0563nobodyさん
02/04/15 09:30ID:???スクリプト改造工房 Part4
ttp://pc.2ch.net/test/read.cgi/php/1012839651/
0564ほほ
02/04/15 09:52ID:7Ngfgl5Fそちらの方が適切でしたか、誘導ありがとうございます。
0565nobodyさん
02/04/15 12:22ID:???書き込む前にベンチマークはしたのかと問いたい。問い詰めたい。小一時間問い詰めたい。
お前等、そんなものは今や時代遅れとちゃうんかと。
俺が見たところ、>>475での問題点は
・ループ内でlocalを使っている
・$a$bはパッケージ変数なので違うパッケージの時動かない
くらいなもんだ。
0566nobodyさん
02/04/15 12:25ID:???参考:http://pc.2ch.net/test/read.cgi/php/1018303030/
0567nobodyさん
02/04/15 13:36ID:???0569nobodyさん
02/04/15 13:48ID:waGQdYYq>>457
遅レスですがありがとうございました。参考になりました。
とりあえずjsのwindow.open()で?にて渡すことにしました。
Locationの使い方がサッパリ。
0571nobodyさん
02/04/15 14:51ID:WmWR88F9<FORM name="form1" action="form.cgi" method="POST" enctype="text/plain">
<INPUT type="hidden" name="c_copy" value="on" checked>
<INPUT type="hidden" name="no_check" value="off">
<INPUT type="hidden" name="subject" value="問い合わせ">
<TABLE border=0 >
<TR>
<TD>*お名前:</TD>
<TD><INPUT name="お名前" size="16" type="text"></TD>
</TR>
<TR>
<TD>*e-mail:</TD>
<TD><INPUT name="email" size="40" type="text"></TD>
</TR>
</TABLE>
<INPUT type="submit" value=" 送信 " style="HEIGHT: 24px; WIDTH: 70px">
<INPUT name=reset1 type=reset value="クリア" style="HEIGHT: 24px; WIDTH: 70px">
</></FORM>
全ての項目に入力した上で送信ボタンを押すと、次の画面で
−−−−−−−−−−−−−−−−−−−−−
内容確認
項目 内容
c_copy on
no_check
メールアドレスを入力しないと送信できません
−−−−−−−−−−−−−−−−−−−−−
とメッセージが表示されてしまいます。
何が悪いのか教えていただけませんでしょうか。
よろしくお願いします。
0572nobodyさん
02/04/15 15:00ID:???どこがPerlのコーディングの話なんだ?
Perlのコーディングの話をするスレだから、Perlのコードを出してくれ。
0573nobodyさん
02/04/15 15:01ID:???そのHTMLソースもグチャグチャじゃないか。
0575nobodyさん
02/04/15 15:18ID:WmWR88F9前任者が作成したソースをメンテナンスする事になり、苦労している次第です。
抜粋してPerlのコードを載せます。
#■内容確認
print "Content-type: text/html\n\n";
print "<html><head><title>$title</title></head>\n";
print "$body\n";
print "<h1>内容確認</h1>\n";
print "<form method=\"post\" action=\"form.cgi\">\n";
print "<blockquote><table border=1 cellpadding=3 cellspacing=3>\n";
print "<tr><td bgcolor=\"#ffcccc\"><b><font size=+1>項目</font></b></td><td bgcolor=\"#ffcccc\"><b><font size=+1>内容</font></b></td></tr>\n";
print "<tr><td></td><td></td></tr>\n";
$count = @DATA_NS;
foreach (0..$count-1) {
print "<input type=hidden name=\"$DATA_NS[($_)]\" value=\"$DATA_VS[($_)]\">\n";
print "<tr><td bgcolor=\"#ffeedd\">$DATA_NS[($_)] <br></td>";
if ($DATA_VS[($_)] =~ /\n/) { print "<td bgcolor=\"#ffffff\"><pre>$DATA_VS[($_)]</pre></td></tr>\n"; }
else { print "<td bgcolor=\"#ffffff\">$DATA_VS[($_)]</td></tr>\n"; }
print "</td></tr>\n";
}
print "</table></blockquote><p>\n";
0576nobodyさん
02/04/15 15:18ID:WmWR88F9print "<input type=hidden name=\"mailto\" value=\"$mailto\">\n";
print "<input type=hidden name=\"no_check\" value=\"on\">\n";
print "<input type=hidden name=\"ref_page\" value=\"$ref\">\n";
if ($receipt eq "on") { print "<input type=hidden name=\"receipt\" value=\"on\">\n"; }
if ($cc eq "on") { print "<input type=hidden name=\"c_copy\" value=\"on\">\n"; }
if ($ref_url ne "") { print "<input type=hidden name=\"ref_url\" value=\"$ref_url\">\n"; }
if ($ref_name ne "") { print "<input type=hidden name=\"ref_name\" value=\"$ref_name\">\n"; }
if ($subject ne "") { print "<input type=hidden name=\"subject\" value=\"$subject\">\n"; }
if ($password ne "") { print "<input type=hidden name=\"password\" value=\"$password\">\n"; }
if ($email eq '' || !($email =~ /(.*)\@(.*)\.(.*)/)) { print "<font size=+2><b>メールアドレスを入力しないと送信できません</b></font><p>\n"; }
else { print "<input type=submit value=\" 送信(submit) \"><p>\n"; }
print "</form><p><hr>\n";
以上、よろしくお願いします。
0577nobodyさん
02/04/15 15:50ID:???なんともまぁ酷いコードだな・・・。
ともあれ>571のエラーが出るならメールアドレスが入力されてないんだよ。
hoge@hage.huguって入力して試してみ。
@と.が入ってないとエラーを吐くだけだから。
つーか、前任者には聞けないのか?
0579nobodyさん
02/04/15 16:07ID:WmWR88F9考えています。
>577さん、それがメールアドレスを入力しているのに関わらず、エラーが
出ているから困っています。
ちなみに「hoge」「hoge@hage」「hoge@hage.hugu」の何れを入力しても
同一のエラーが出ます。
>578さん、泣き付ける上司がいればいいのですが、あいにくおりません。
0580nobodyさん
02/04/15 16:31ID:YGeSanjU>>578はいいこと言ったよ?
0581577
02/04/15 16:55ID:???俺も>580に同意。
前任者がPerlもHTMLもロクに理解していない。
後任のあんたも全然理解していない。
そのスクリプトがエラーになる原因が「思い当たりすぎて」どうしようもない。
そしてアンタ自身にそれを試験しその経過を正確に報告するスキルが無い。
そんな状態でここから指示を出してたら1ヶ月経っても2ヶ月経っても無理だ。
はっきり言って、ケントでもレスキューでも行って多少でもまともなCGIを
拾ってきた方がよっぽどいいと思うぞ。
はっきり言う。
無理だ。
正直、俺から見ると、そのスクリプトを修正するより、自分で1から
作った方が楽にすら思える。
0582580
02/04/15 17:22ID:YGeSanjUどっかで似たもののCGI探して、
そのCGIとにらめっこして、原因を追究すべし。
2ちゃん寝るの上級者が答えてくれればいいってもんだけど、正直、わかり難い。
0584nobodyさん
02/04/15 18:00ID:???0585nobodyさん
02/04/15 18:05ID:8YI2JjdJこれってどうしてちゃんとコード変換しないのでしょう?
ヒアがいけないような気もするのですが...
みなさんはメールのフォーマットってどうやっていますか?
$hoge = "こんにちは";
&jcode'convert(*hoge,'sjis');
$mail_tex = <<HERE;
フォームの内容は$hogeです。
フォームの内容は$hogeです。
フォームの内容は$hogeです。
HERE
&jcode'convert(*mail_tex,'jis');
print $mail_tex;
ちなみにこれはEUCで書いたソースだとします。
sjis変換はログ保存用だと思ってください。
どうかよろしくお願いします。
0586469
02/04/15 18:25ID:???意味不明コード厨房に知ったか厨房かよ
ぼけ
0587585
02/04/15 18:56ID:8YI2JjdJ自分でもなにをしてるのか分からなくなってきています。
ちなみに、sjisの所をeucにしても一緒でした。
そろそろ動けばいいって作り方から卒業したいです。(泣
0589nobodyさん
02/04/15 20:09ID:???デバッグの基本はプリントだ!
$emailをチェックしている行の直前に、
print "[$email]<BR>";
って入れて、確認しよう。
0590nobodyさん
02/04/15 20:33ID:???&jcode'convert(*hoge, 'sjis')
これを
&jcode::convert(\$hoge, 'sjis');
にしておけ。
0591nobodyさん
02/04/15 20:38ID:YGeSanjU&jcode'convert(*hoge, 'sjis')
これを
exit;
にしておけ。
0593nobodyさん
02/04/15 22:38ID:???掲示板とチャットの違いってスクリプト的に
どのあたりで線引きされるもんですかね?
これとこれみたいな事ができればチャット、もしくは掲示板みたいな
定義があれば教えてください。
0594nobodyさん
02/04/15 22:52ID:G09favcm>582さん、これを作った人とはもう連絡が取れない状況で自営業をしている
友人が困って私に調べて欲しいと依頼が来た次第です。(なので、仕事とは
全く無関係です)
指摘される通り、私にはあまり知識はありません。
別のCGIを拾ってきて、一から作ってみたいと思います。
>582さん、他の似たようなCGIと比較して原因を調査してみます。
ありがとうございました!!
0595nobodyさん
02/04/15 22:53ID:???・リロードの回数が多い(リアルタイムで返事がくる)
・コメント欄がおそらく一行
・「入室」する
0597589だけど誤爆じゃないよ
02/04/15 23:12ID:???デバッグプリントも試してみてくれーーー
0598nobodyさん
02/04/15 23:30ID:???0599nobodyさん
02/04/15 23:39ID:???自動リロードがあったら間違いなくチャットだな。
>593
一部勘違いされがちだが、無料鯖で禁止されるのは「チャット」じゃなくて
「チャットのような負荷の高いCGI」だからな。
「HTML吐出しなどで負荷の少ないチャット」よりも「リロードを繰り返されるBBS」
の方がよっぽど厄介だ。
そういう意図で聞いたんじゃなかったらすまない。
0601nobodyさん
02/04/16 00:04ID:3Tlg2ssNこういうところから画像を一気に拾う方法ってperlだと
間単にできるんですか?
0602nobodyさん
02/04/16 00:11ID:???LWPを使えば結構簡単にできるが、Web上に置くのは勧められないな。
0604nobodyさん
02/04/16 00:24ID:???チャットに限らず、HTML保存させればCGIの呼び出し回数が減るから、相対的に負荷は減る。
0605nobodyさん
02/04/16 00:27ID:???むしろ、共用メモリを使って全てメモリ上でやるのが吉と見た。
0606nobodyさん
02/04/16 00:33ID:???確かにチャットはHTMLでやってもあんまり意味無いよね。
その他にもHTML吐き出しだと運営上デメリットが多すぎる。
0608nobodyさん
02/04/16 01:07ID:???保存したログ読んでそっから別のHTMLに書きだすって真似やってたら
HTML吐き出しの方がきついんじゃない。
チャットってリロード以前にその性質上ROMより
書き込むことのほうが多いから。
0609nobodyさん
02/04/16 01:11ID:???リロード時の話じゃないけれど。HTML化すると投稿時の動作が
「データをPOST → レスポンス取得」から
「データをPOST → 302 Found取得 → ブラウザがhtmlをリクエスト → 結果取得」
になるので、投稿時の体感速度は確実に遅くなる。低速回線だと少し厳しい。
それにHTML化は参加者:ROMの比がROMに偏っていない限り余り意味が無いと思われ。
0610604
02/04/16 01:17ID:???それは確かにその通りだ。
ごもっとも。
オートリロード先をHTMLにしておけば多少は軽減になるかな?
メタタグとかでnocacheにしておいて。
0612nobodyさん
02/04/16 03:38ID:Z11bRvgCいるLightChat のログを表示するためのCGIの一部です。
#管理人の私がコソーリROMるため(w
1. foreach $chatlog (@chatlog) {
2. ($name,$dmy1,$dmy2,$mail,$actime,$cont,$ip1,$ip2) = split(/<>/,$chatlog);
3. if ($cont =~/<b>\[/i){
4. $cont =~ s/<b>\[/<>/g;
5. $cont =~ s/]<\/b>/<>/g;
6. ($dmy,$personal,$cont2) = split(/<>/,$cont);
7. $name = "$personal";
8. }
9. print "<a href=\"$mail\">$name</a>> $cont2($actime)<br>\n";
10. # print "<a href=\"$mail\">$name</a>> $cont($actime)<br>\n";
11. print "<hr>\n";
12. }
これで、チャットのログを表示しようと思ったのですが、9行目の $cont2 に他の行
の内容が入ってしまうようです。 なお、3〜8行目を削除して10行目を生かすと
この障害は無くなります。
なにとぞ、よろしくお願いしますm(_ _)m
0613612 補足
02/04/16 03:43ID:???ログの形式は上記の通りです。
0614nobodyさん
02/04/16 04:07ID:???ログ中に <b>[ っつー文字列が無い行では3行目から8行目までの処理がすっ飛ばされて
前に読み込んであった$cont2が表示されているだけじゃないの?
と適当に答えてみるテスト。
0617nobodyさん
02/04/16 13:00ID:???0618612
02/04/16 13:59ID:???あ、本当だ(汗) こんな単純なことに気が付かない私が愚かでした。
鬱だ、書き直そう…
>614-615サンクスコ
06191622
02/04/16 16:52ID:Q1JSTWAi<form action="http://127.0.0.1/cgi-bin/input/input2.cgi" method="GET">
<input type="text" name="name">
<input type="submit" value="実行">
<input type="reset" value="クリア">
</form>
上記のHTMLフォームからデータを入力して、受け取ったデータをファイルに書きこむ処理をしたいのですがうまくいきません。
$query = $ENV{ 'QUERY_STRING' };
open IN, "$send";
@all = <IN>;
close IN;
@all = $query;
open OUT,">$send";
foreach (@all){
print OUT $_;
}
close OUT;
これではエラーが出ます。教えてください。
0620名無しさん@edlin
02/04/16 17:30ID:???なんていうエラーがでるんだね?
とりあえず、ぱっと見、あやしそうなところとして、
@all = $query;
を
push(@all,$query);
に直そう。
06211622
02/04/16 17:58ID:UyNwZUnG$query = $ENV{ 'QUERY_STRING' };
open IN, "$send";
@all = <IN>;
close IN;
push(@all,$query);
open OUT,">$send";
foreach (@all){
print OUT $_;
}
close OUT;
この方法以外でもいいので、教えてください。
バイナリファイルを作成したいのですが上手くいきません。
動作イメージとしては
テキストで「31323334」とあったら、これを変換し、バイナリダンプしたときに、
「31323334」となるようにしたいのです(この例だとテキスト表示すると1234になります)。
試行錯誤しながら、以下のように作成したのですが、
テキストに「0A」があった場合に、その部分が「0D0A」になってしまうようです。
改行コードだと思うのですが、どのように対処すればいいでしょうか?
while ($_ =<F1>) {
$_ =~ s/ //g; #スペース削除
chop; #行末改行削除
$bin = pack("H*", $_);
print OUTPUT $bin;
}
使用しているのは、jperlのWIN32版です。
jperl5.005_03-990403
0627nobodyさん
02/04/16 19:27ID:r+rfWQLJスクリプトのあるフォルダのパスを得るにはどうすればいいのでしょうか。
open OUT, '>./hoge';
などというようにすると、現在の作業フォルダにhogeが作成されて、
必ずしもスクリプトのあるフォルダには作成されません。
そこで、必ずスクリプトのあるフォルダにhogeが作成されるように、
スクリプトのあるフォルダのパスを得たいんです。
0628627
02/04/16 19:36ID:???この変数の値を元に取り出すことにします。
0629hanamogera ◆kkkKkkko
02/04/16 19:44ID:QVh0tmfSとしたとき、@hageの要素数は2ですか?
つまり、$#hageは1になるんですか?
0631nobodyさん
02/04/16 19:59ID:???やってみりゃわかると思うけど2だ。perlfuncのsplitを読むべし。
splitはデフォルトで末尾の空文字列を省略する。
3にしたい場合は
@hage = split /<>/, "hoge<>hogehoge<>", -1;
0632nobodyさん
02/04/16 20:13ID:???0633nobodyさん
02/04/16 20:23ID:???タグの<>を$amp;lt;>に変換すると絶対に文中に<>が出てくることはないから、
CGIでは使い勝手ががいい。
0634nobodyさん
02/04/16 20:24ID:???タイプミススマソ。
&と$を打ち間違える漏れって一体…(鬱
0635627
02/04/16 21:39ID:???map使ってて気づいたんですが、
map { "$_", } (0..5);
を実行すると
syntax error at D:\プログ~1\hoge.pl line 1, near "} ("
Execution of D:\プログ~1\hoge.pl aborted due to compilation errors.
と言われます。
map { "$_" } (0..5);
map { $_, } (0..5);
では問題ありません。
syntax errorになる理由は何なんでしょうか。
0637nobodyさん
02/04/16 22:21ID:???なんで最後に , を付けたいの?
0639635
02/04/16 22:38ID:???map { $_, } (0..5);ではエラーでないのに、
$_を"$_"に書き換えるとエラーになるのが納得いかないんです。
最後に,をつけてるのは
use Getopt::Long;
our %config = (base_uri => 'http://www.2ch.net');
GetOptions map { "$_:s" => \$config{$_} } keys %config;
print $config{base_uri};
みたいに使いたいからです。
今はmap { "$_:s" => ...をmap { $_ . ":s" => ...にして逃げています。
0640635
02/04/16 22:42ID:???同じようにエラーになります。
0641637
02/04/16 22:59ID:???とりあえず動くだけなら
GetOptions map { ("$_:s" => \$config{$_}) } keys %config;
にしたら動いたけど・・・・・・演算順序の関係かな?
0642nobodyさん
02/04/16 22:59ID:???perldoc -f map
0643635
02/04/16 23:15ID:???いえ、読みにくい文書ですみませんでした。
perldocによると、
%hash = map { "\L$_", 1 } @array # perl guesses EXPR. wrong
%hash = map { +"\L$_", 1 } @array # perl guesses BLOCK. right
%hash = map { ("\L$_", 1) } @array # this also works
とのことです。
>>641さんの解決策は三番目にある方法ですね。
有り難うございました。
>>642さん、有り難うございました。
perldoc読むの忘れてました。申し訳ないです。
06441622
02/04/17 14:48ID:v8Tp5NVP$query = $ENV{ 'QUERY_STRING' };
open IN, "$send";
@all = <IN>;
close IN;
push(@all,$query);
open OUT,">$send";
foreach (@all){
print OUT $_;
}
close OUT;
この方法以外でもいいので、教えてください。
エラーログにPremature end of script headersと出ています。どうしたらいいのですか?
0645nobodyさん
02/04/17 15:29ID:79RKjLpbgoogleでいろいろ調べましたけどありませんでした。
0647Dream 黒星
02/04/17 16:01ID:???CGI の質問ならスレ違いだろ! って、そのエラーログ見て解決できんのか!
>645
以下にアクセスしろ!
ttp://perldoc/-m/Benchmark/
0649Dream 黒星
02/04/17 16:46ID:???なんで回線切ってなんだ?
自サーバでCGIやってるかもわからんだろうに。オマエは頭の弱いヤツだろ!
0650645
02/04/17 16:48ID:PRS3jaLVJperlを入れるとドキュメントも日本語になるんでしょうか?
0651645
02/04/17 16:51ID:???鬱だ詩嚢。
0652nobodyさん
02/04/17 17:00ID:???スクリプト1行目のperlパスが間違ってるとか
0653645
02/04/17 17:09ID:PRS3jaLVよく見てみたらあまりにも馬鹿な質問してる。
逝ってくる。
0655hanamogera ◆kkkKkkko
02/04/17 17:23ID:7mM3jrq9ありがとございやした。
0657Dream 黒星
02/04/17 17:57ID:???0658632
02/04/17 18:59ID:???1.まず、そのスクリプトをCGI経由じゃなく、単体で起動したときに、
syntax error等くだらないエラーがでて無いか確認。
2.スクリプト自体がOKなら、スクリプトの最初に
print "Content-type: text/html\n\n";
と入れる。
これでOK。
Premature end of script headers
てーのは、必要なヘッダ(Content-type)が書き込まれてないってエラー。
0659Dream 黒星
02/04/17 19:37ID:???2chで書きこんだマシンとCGIやってるマシンが同一である根拠はまだ
どこにもしめされてないだろ! 決め付けでしか考えられないオマエは
もう、ダメポだな!
0660Dream 黒星
02/04/17 19:50ID:???2chに書き込んだマシンとCGIやってるマシンが同一だという根拠は?
決め付けで判断するようじゃ、オマエはもうダメポだな!
はなしにならんな、このうすらハゲがっ!
0661nobodyさん
02/04/17 20:01ID:???やるかっ このっっっ!!!!
0662nobodyさん
02/04/17 20:01ID:???0665nobodyさん
02/04/17 20:12ID:???0666nobodyさん
02/04/17 21:40ID:???0667ADSLにしたんですが
02/04/17 21:44ID:BaxakOe1[症状]
ログインはできてファイル受信状態でフリーズまたはタイムアウト。。
なんでしょうかね?
0670nobodyさん
02/04/17 21:59ID:???−操作説明−
_
_|\\_ 。 【 死 】
|\_ _\→ (>>669)_ | ̄ ̄ ̄|
\| \ \__| 三 (*゜▽゜) | |
 ̄\| ̄| 三 (∪∪) | |
 ̄ ∪∪ | |
※右キー以外は使用しません。
0672ADSLにしたんですが逝きました!
02/04/17 22:04ID:BaxakOe10673Dream 黒星
02/04/18 00:38ID:???なんで 469 のような無知な野郎といっしょにするのか、オマエの推論の
のまずさは後々ダメポに匹敵するほどのミスをやらかしそうで心配なのは
わたしだけならいいのだが...
0674nobodyさん
02/04/18 12:08ID:CQh2avKk$dic{"apple"} = "りんご";
としたときに、valueである"りんご"からkey"apple"を検索するには
どうすればいいんでしょか?
0676nobodyさん
02/04/18 12:56ID:???foreach $keys (keys(%dic)){
if($dic{$keys} eq 'りんご'){ print "ハッケソ $keys\n"; last; }
}
とか。
0678nobodyさん
02/04/18 14:32ID:???%rh = reverse %h;
ってのも使える。
0679674
02/04/18 17:19ID:pC0blCKC>>678 の reverse が一番近いかも。どうもでした。
0680nobodyさん
02/04/18 19:13ID:BWtEryOiとなっている$textの中身を、
"URLは、<a href="http://www.hogehoge.com">http://www.hogehoge.com</a> です。"
という風に、書き換えるにはどうすればいいのでしょうか?
0681nobodyさん
02/04/18 19:24ID:???正規表現を使う。
0682nobodyさん
02/04/18 20:14ID:???$text = "URLは、http://www.hogehoge.com です。";
$text =~ s{URLは、http://www.hogehoge.com です。}{URLは、<a href="http://www.hogehoge.com">http://www.hogehoge.com</a> です。"};
これが不満なら日本語を勉強してから質問しろ。
0683nobodyさん
02/04/18 21:10ID:???もちっとスマートにするなら、
$text = "URLは、http://www.hogehoge.com です。";
$text =~ s{URLは、(.+) です。}{URLは、<a href="$1">$1</a> です。"};
かな。
0689nobodyさん
02/04/19 01:19ID:qPOTdo2b$d = "aaabbb";
$d =~ s/$a/b/;
とやったら、
s/a\(\.\*\)a/b/;
か、
s/a(.*?)a/b/;
のどちらになるんでしょうか?
0690Dream 黒星
02/04/19 01:30ID:???使い方はわかるがもっとよりよい記述法なりがあるということだろ。
そのよりよい(使い勝手のよい)のを教えてくれよ。
0691nobodyさん
02/04/19 01:47ID:Z7cLdJRBうるさいっ!ばか!
sでいいじゃないかっ!
0694Dream 黒星
02/04/19 02:19ID:???688が、先のことを言った本人だという根拠は?
わたしには685および688のIDが???である以上、両者が同一人物である
という根拠のない決め付けはできないのだが、オマエは決め付けで判断する
ダメポにも匹敵するダメダメプログラマーだろ!
0695nobodyさん
02/04/19 02:34ID:???0696Dream 黒星
02/04/19 02:52ID:???金融機関コードの違いさえも認識できずにろくなテストデータも作れずに
金融不安を巻き起こすナンチャッテプログラマー集団のことだ!
0697nobodyさん
02/04/19 03:06ID:???0698nobodyさん
02/04/19 03:14ID:???(゚Д゚)ハァ?
おれは 黒 星 先 生 に訊いたんだよ。なんでお前が答えるんだよ。
おれはいつかお前がDream 黒星と 黒 星 先 生 とを妄想気味に同一人物と取り違えて
ダメポにも匹敵する根拠の無い思い上がりをやらかすんじゃないかと心配だったのだが
まさかこうも簡単に事が運ぶとは・・・(w
0699黒 星 先 生
02/04/19 03:35ID:???s/ダメポ/Dream 黒星/g;
Dream 黒星に関する話題は関連スレで。
http://pc.2ch.net/test/read.cgi/php/991102630/
0700Dream 黒星
02/04/19 03:45ID:???寂しいんだね。こっちは見てて寒かったよ。今夜はあったまって寝るよ。
0701nobodyさん
02/04/19 05:14ID:???0702nobodyさん
02/04/19 05:57ID:???0704nobodyさん
02/04/19 07:14ID:???0706687
02/04/19 08:09ID:???ごめん。
きみのカキコは冗長ではなく、適切、いや言葉が足りないくらいだった。
>>690には
「正規表現の[tr]って使いにくいと思った初心者でした。 」
という表現でさえ、初心者であることが伝わらなかったのだから・・・
0707nobody
02/04/19 09:23ID:???展開はまず"..."で囲った時に一回起こる => "a(.*?)a"
これは普通の文字列展開ね。だからみてわかるように何も展開
するところがないのでそのまんま。
次に正規表現として使用した時に おこる => s/$a/b/;
この場合$aを展開してるわけで、$aの中身は関係ない。すなわち s/a(.*?)a/b/;となる。
というわけでもしマッチしたらそのマッチした文字列が$1に入る事になる。
0708nobodyさん
02/04/19 11:32ID:???はじめのほうから読ませてもらったけど、論理的にはキミの負けだと思う。
朝早くから...よほど悔しかったんだね。
ダメポって、ツボにはまりそー。
0709nobodyさん
02/04/19 11:43ID:???0711nobodyさん
02/04/19 11:48ID:???0712nobodyさん
02/04/19 13:12ID:???ログインページはGETもPOSTも使えるため、
・・・index.asp?name=AAA&pass=BBB
でログインできました。
検索結果のページもGETもPOSTも使えるため、
一度ログインしていれば、・・・result.asp?word=XXXXX
を開けばページ内容が保存されます。
これをperlでやろうとしました。
use LWP::Simple
$x = get("・・・index.asp?name=AAA&pass=BBB");
print $x;
$y = get("・・・result.asp?word=XXXXX");
print $y;
ところがこれだと、$xはログイン後のページが正しく表示されるのですが、
$yは、ログインしていないとみなされて、ログインページに飛ばされた内容が
表示されてしまいます。
解決策のヒントをよろしくお願いします。
0713nobodyさん
02/04/19 13:12ID:1w9waxQZhttp://choco.2ch.net/test/read.cgi/news/1019188835/
0714nobodyさん
02/04/19 14:18ID:???何故一度ログインすればその後はName/Pass無しでもログインしているとみなされるのか。
それを考えろ。
まぁHTTP-Headersでも見てみなさいってこった。
0718712
02/04/19 19:52ID:???HTTP::Headersというやつでしょうか?
なんとなく調べるべきことがわかりました。
ありがとうございます!
ところで・・・
調べるのは調べるんですが、そもそも私が
やろうとしてることは可能なことなんですかね?(汗
0719nobodyさん
02/04/19 20:05ID:sPCEXxH7さて、今回はCGI RESCUEにてダウンロードした「マルチパート対応
フォームメール」(form2mail.cgi)を使っています。
その中の機能でファイルをアップロードしてメールに添付する事が
できるのですが、画像ファイルを添付した所、メールで受信して
画像を見ると画像が一部壊れてしまっています。(上部は大丈夫
だけど、下部にいくにつれて緑色になってたりノイズが入ったり
して化けてしまいます)
どうしたら、画像が壊れずに送れるのでしょうか?
0720nobodyさん
02/04/19 20:08ID:???HTTPのヘッダが関係あるかどうかは分からんよ。
>何故一度ログインすればその後はName/Pass無しでもログインしているとみなされるのか。
察するに、これがCookieで実現されている可能性があると俺は考えたわけだ。
これが正解なら、取得したヘッダを調べりゃ分かる。
0724712
02/04/20 00:02ID:???なるほど。
たしかにヘッダ(これがヘッダなのかな、と自分が想像するもの)
の一番下の行に、クッキーな文字列がありました。
数字の羅列ではありましたが。
0725nobodyさん
02/04/20 00:08ID:???その数字の羅列を解析する必要はない。少なくとも、自ら解析コードを書く必要は無い。
要は自作のUserAgentが「Cookieを理解するUserAgentが行って然るべき返信」をすればいいのだから。
0726nobodyさん
02/04/20 01:42ID:gkcEnfWM0727nobodyさん
02/04/20 01:47ID:???0729nobodyさん
02/04/20 05:25ID:???何か不具合でもあるのでしょうか?
古い方がバイト数少ないので
その分サーバ負荷が軽減されるのでは?と思い
質問しました。
0730nobodyさん
02/04/20 05:35ID:???バージョンアップというのは機能を追加、強化したりバグを修正したりするものだから
最新バージョンのほうがよいと思う。
そっちのほうで負荷軽減するならスクリプトのほうで軽減する努力した方がいいとおもう
0731nobodyさん
02/04/20 05:41ID:???使ってるのか?それならPerlが起動しただけでヤバイな。
C言語の経験がないような人ってのは、変な事に気を遣うね。
そんなこと気にする暇があったら自分のコードを見直した方がいいと思うよ。
0733nobodyさん
02/04/20 07:28ID:???cgi-lib.plやjcode.plって使う必要無いような気がするんだが
SEX
0734nobodyさん
02/04/20 07:39ID:???可能ですか?
可能であればどうやればいいですか?
0735nobodyさん
02/04/20 07:56ID:???time()って秒数を返してくるんだから秒の部分を出力しないって
なんのこっちゃ・・・
それともこういうこと?
use Time::Local;
## 本当の時間が12時0分52秒だったら12時0分0秒に変換
my $secs = timelocal( 0, (localtime( time() )[1..5] );
0738734
02/04/20 11:22ID:???ネタニ マジレス オバカサン
0740nobodyさん719
02/04/20 11:44ID:f9E3OCx3はい。binmodeを3ヶ所に入れてみたのですが変りませんでした。
---------------------1
sub sendmail {
if (!open(OUT,"| $nkf -j | $sendmail -t")) { &error('Error'); }
#ADD--->start
binmode(BIN);
#ADD--->end
$host = $ENV{'REMOTE_HOST'};
---------------------2
sub send_mix {
・
・
if (open(UU,"$UUENCODE $tmp$filenum $filename |")) {
#ADD--->start
binmode(BIN);
#ADD--->end
@UUFILE = <UU>;
---------------------3
sub writebin {
・
・
if (!open(BIN,"> $tmp$filenum")) { &error('Error','アップロードファイルの一時ファイルが作成できません.<br>','テンポラリーフォルダのパーミッションを確認してください.'); }
#ADD--->start
binmode(BIN);
#ADD--->end
print BIN $FILEDATA[$file];
---------------------
0741nobodyさん719
02/04/20 11:45ID:f9E3OCx3残すようにしてその画像を確認した所、
---------------------1
sub send_mix {
・
・
print OUT @UUFILE;
}
#DEL--->start
#if (-e "$tmp$filenum") { unlink("$tmp$filenum"); }
#DEL--->end
}
print OUT "--$bound\-\-\n";
---------------------
サーバーにアップされた時点では画像は崩れていませんでした。
なので、メール送信した時に崩れてしまっているのかな?と
考えています。
※ちなみに、サーバーOSはUNIXです。
0744nobodyさん
02/04/20 12:22ID:???0745preference
02/04/20 13:10ID:???原因わかる?
Unrecognized character \202 at ./fmail.cgi line 7. Content-type:text/html Unrecognized character \202 at ./fmail.cgi line 7. Content-type:text/html Unrecognized character \202 at ./fmail.cgi line 7.
0746nobodyさん
02/04/20 13:19ID:???ナンデスカコレハ
0748preference
02/04/20 13:35ID:???sub obtiby{local($mailhost,$mailhostip);&sbfzwj(0);if(&mxomee == 1){&hzyfwg('SEND MAIL',<<_F);<p>すでに指定したメールアドレスにメールを送っています。</p>
<p>メールの中に書いてある確認キーを入力してから、もう一度送信してください。</p>
<p>誤って紛失してしまった場合は次の日まで待っていただき、もう一度再発行を受けて下さい。
$fd
_F
exit(0);}
eval{$SIG{ALRM}=sub{die"(Time Out)\n"};alarm 20 if($^O!~/Win/i);&tpkfcs($mail, $sysopmail);alarm 0 if($^O!~/Win/i);};
if($@ ne '' || $?){&hzyfwg('SEND MAIL',"<p>メールサーバエラー $@</p>");}else{&hzyfwg('SEND MAIL',<<_F);<p>確認キー発行申\請を受け付けました。</p>
0749nobodyさん
02/04/20 13:49ID:???原因はエラー表示そのままで、
「fmail.cgiの7行目にへんな文字(8進で202=16進で82)が混じってる」
からなんだけど、fmail.cgiの1〜7行めまでを見せてくれないとわからない。
>>748の一行目って、fmail.cgiの1行目なの?
0750nobodyさん
02/04/20 13:50ID:???すげーソースだな。正直、こんなに電波がゆんゆん逝ってるソースは久しぶりに見た。
0751nobodyさん
02/04/20 13:50ID:???7行目に日本語混ざってんだろ、どうせ。ヴォケ。糞。
0752712
02/04/20 14:38ID:???わかったような、わからないような・・・・・です。
「LWP::UserAgentを使えばよい」ということですね。やってみます!
>その数字の羅列を解析する必要はない。
>少なくとも、自ら解析コードを書く必要は無い。
>要は自作のUserAgentが
>「Cookieを理解するUserAgentが行って然るべき返信」をすればいいのだから。
0753nobodyさん
02/04/20 14:51ID:???電波の擬音語って「ゆんゆん」なのか。
いやどーでも良いんだけど
0754nobodyさん
02/04/20 14:54ID:???綴り変
0755nobodyさん
02/04/20 14:54ID:FTp8XsfB漏れはActive Perl をWindows2000にインストールして、メモ帳とかの普通のテキストエディタでソース書いて、a.plとかで保存して、DOSプロンプト立ち上げて
perl a.pl
とかやってますけど、CPad みたいに効率のいい勉強環境ないですか?
0756nobodyさん
02/04/20 15:16ID:???漏れはmuleをパッケージでFreeBSDに入れて、mule -nwで起動してから
セーブ、サスペンド、.M-p[RET],fg
ってやってる。
0757nobodyさん
02/04/20 15:32ID:???こういう人は、何を与えても効率よく使えない人。
0758nobodyさん
02/04/20 16:23ID:???漏れはCPadてものを知らないのだが
MacPerl(自前コンソールとエディタ内蔵
winならCopal
簡単な構文チェックにいいよ
0759nobodyさん
02/04/20 16:26ID:sMz1eiXo@array1 = qw[2 2 2];
@array2 = qw[3 3 3];
出力
1 2 3
1 2 3
1 2 3
の様に各配列の要素を順番に一つずつ表示させる上手い方法は無いでしょうか?
0761nobodyさん
02/04/20 16:37ID:???0762nobodyさん
02/04/20 16:40ID:FTp8XsfBすごくいいです。ありがとうございます。
0763nobodyさん
02/04/20 18:03ID:sMz1eiXoforeach(a..c){
print $_;
}
}
この場合1度目の0..3は2度目のforeach文中では何て言う変数に
格納されてるんですか?
0764nobodyさん
02/04/20 18:47ID:???print 'LOOP1 = ' . $_ . "\n";
for(a..c){
print 'LOOP2 = ' . $_ . "\n";
}
print 'LOOP1 = ' . $_ . " (゚Д゚;)\n\n";
}
0766nobodyさん
02/04/20 19:21ID:FTp8XsfBchopにmが増えただけなの?
なんでmが付け加えられたの?
0767nobodyさん
02/04/20 19:34ID:???0768nobodyさん
02/04/20 19:41ID:FTp8XsfB0769nobodyさん
02/04/20 19:47ID:???0770nobodyさん
02/04/20 20:02ID:???0772nobodyさん
02/04/20 20:19ID:???\nのnだとか言ったらアホとしか思えない。
0774nobodyさん
02/04/20 21:04ID:FTp8XsfBおお、ようやく理解できました。
0775nobodyさん719
02/04/21 00:56ID:86gzo8Agバイナリモードにしてみると良いというのを見かけましたので、これを
追加してみたのですが上手くいきませんでした。
>746さん、もしかして「binmode(BIN)」のパラメータの指定が間違って
いますか?ネットで調べて「binmode(STDOUT)」や「binmode($filenum)」
に変更してみたのですが状況は変りませんでした。
しかもよく調べてみると、binmodeはサーバーOSがWindows系の場合の
対応でUNIXでは必要ないとの事らしいので、この対応は意味が無いのかな?
と考えています。
そこで、はじめは自分のHTMLに組み込んで使っていたので、サンプルの
HTMLとCGIをほぼそのまま(変更したのは、環境パスと送信先メールアドレス
と戻り先URLぐらい)の状態でサーバーにアップロードしてから実行しても
あいかわらず画像が崩れてしまい、状況は変りませんでした。
何か他に疑う所はありますでしょうか?
0776nobodyさん
02/04/21 00:58ID:???まずbinmode()についての理解を深めなさい。
動作の解らない関数をコードに入れるなんてナンセンス。
予備知識としてUNIXとDOSのテキストファイル形式の違いも勉強するとなお良し。
0777キリ番厨
02/04/21 02:06ID:???0779nobodyさん
02/04/21 02:27ID:???おせっかい野郎登場ってか?
0782nobodyさん
02/04/21 04:34ID:5EokjXuO煽りにマジフォローしなくても…。
0784nobodyさん
02/04/21 08:39ID:1/Tdsylw配列@a=("hoge1","hoge2","hoge3"〜)で@aの要素として存在する文字列に関して
連想配列%flagを$flag{'hoge1'}=1
というふうにしたいのです。
foreach $_ (@a) {$flag[$_] = 1;}
とするとflagは全部1になってしまいます。
どのようにすればうまく行きますか?
0785nobodyさん
02/04/21 09:02ID:zdYHTsmZちょっと変えて
$n=1;
for ( @a ) { $flag[$_] = $n; $n++; }
とかどうでしょう。
0787nobodyさん
02/04/21 10:00ID:???おまえがどうしたいのかわからないよ。
hoge2の時は?hoge3の時は?
0789784
02/04/21 10:19ID:???hoge2がなければ$flag['hoge2']が1になって欲しくないんです。
よろしくお願いします。
0790784
02/04/21 10:20ID:???@aが可変なんです。
0791nobodyさん
02/04/21 10:33ID:???for (@a) {$flag[$_] = 1;}
こうしたいのか? これじゃ無ければ手に負えん、後は任せたぞ>>793。
0792nobodyさん
02/04/21 10:38ID:???あるかないかは、if defined $flag{...} でわかると思うけど...。
# 何故、連想配列なのに $flag['hoge2'] とか書くの ?
0793nobodyさん
02/04/21 10:39ID:???存在するかを調べればいいことだろ。
で、おまえがなぜこの程度のことを出来ないのかがわからない。
0794784
02/04/21 11:18ID:???[]としていたせいだったっぽいです。792さんに指摘されて気づきました。
大変お騒がせしました。
ところでみなさんforeachって書かないんですね。
0795nobodyさん
02/04/21 13:11ID:???人の自由さ。foreachとforはほぼ同じだし
0796nobodyさん
02/04/21 13:20ID:???0797やさしいお兄さん
02/04/21 13:58ID:???こういうことでは?
@a=("hoge1","hoge2","hoge3");
@flag{@a}= (1) x @a;
for ( keys %flag ){
print $_,": ",$flag{$_},"\n";
}
0798nobodyさん
02/04/21 16:03ID:???0799nobodyさん
02/04/21 16:05ID:???激しく同意
0800nobodyさん
02/04/21 16:05ID:???0801nobodyさん
02/04/21 16:12ID:???前のページでテキストボックスから送られてきたデータの中に、 " が入ってると
処理がうまくいかないです。んで、置換しようと思ったのですが
$test =~ /"/\"/g;
とかやっても置換してくれません。お助けくだされ。
0802nobodyさん
02/04/21 16:14ID:???具体的に問題となった処理を提示してください。
0803nobodyさん
02/04/21 16:21ID:???何がどううまくいかないのか、さっぱりわかりません。
ついでに、
$test =~ /"/\"/g;
これはコンパイルエラーになります。
0804名無しさん@edlin
02/04/21 16:27ID:???$test =~ s/"/\\"/g;
でしょ?
0805nobodyさん
02/04/21 16:30ID:???0806nobodyさん
02/04/21 16:35ID:???0807nobodyさん
02/04/21 16:41ID:???.
0808定型文
02/04/21 16:41ID:???0810nobodyさん
02/04/21 16:45ID:???------------------仕切りなおして再開-----------------
0811コレが真実だ!
02/04/21 16:47ID:???0812nobodyさん
02/04/21 16:48ID:???0813nobodyさん
02/04/21 17:01ID:???0815nobodyさん
02/04/21 17:31ID:???0816nobodyさん
02/04/21 17:37ID:???0817nobodyさん
02/04/21 17:40ID:???0818nobodyさん
02/04/21 17:48ID:???認めろよ(藁)
0819nobodyさん
02/04/21 18:06ID:???等はこう書きたかったと思われ。
_gunzip=神 >>>>>> japu=上級者 >>>>>> やさしいお兄さん=中級者 >>>> 初心者 >>>>>>> Dream★=異常性愛車 > 弐編=厨房
Dream★は自覚してるんだねw
0820nobodyさん
02/04/21 18:10ID:???0821469
02/04/21 18:13ID:???これだけは認めろよな。
0822nobodyさん
02/04/21 18:17ID:???仮にそれを認めたとしたって
_gunzip氏>>>(以下略)821
こうなるのは明白。
0828nobodyさん
02/04/21 18:47ID:???http://jarl.sourceforge.net/
まぁ825が一番バカなわけだが。
0829469
02/04/21 18:48ID:???0830469
02/04/21 18:49ID:???0831nobodyさん
02/04/21 19:20ID:???1. if ($string eq "hoge") {
2. if($string eq "hoge"){
3. if ( $string eq "hoge" ) {
4. if( $string eq "hoge" ){
どれが好きですか?細かいけど
0832_gunzip
02/04/21 20:05ID:???いろいろ指摘ありがとうございます。
素直に$_[0], $_[1]を利用して
--------------------------
#!/usr/bin/perl -w
use strict;
sub mapup (& \@ \@)
#(code_ref $code, array_ref $_a, array_ref $_b)
{
my($code, $_a, $_b) = @_;
my @retval;
my $max_index = (@$_a < @$_b) ? @$_a : @$_b;
for my $i (0 .. $max_index - 1) {
push @retval, $code->($_a->[$i], $_b->[$i]);
}
return @retval;
}
my @a = (1, 2, 3);
my @b = (0, 8, 7);
my @c = qw[ G C A T ];
my @d = qw[ C G T A ];
my @sum = mapup { $_[0] + $_[1] } @a, @b; # (1, 10, 10)
my @pro = mapup { $_[0] * $_[1] } @a, @b; # (0, 16, 21)
my @bigger = mapup { $_[0] > $_[1] ? $_[0] : $_[1] } @a, @b; # (1, 8, 7)
my @concat = mapup { $_[0] . "-" . $_[1] } @c, @d; # (G-C,C-G,A-T,T-A)
-----------------
とした方が良かったですね。
(わざわざsortに似せて$a, $bを使おうとして、かえって不便に)
0833名無しさん@edlin
02/04/21 20:25ID:???もちろん1
0835nobodyさん
02/04/21 21:44ID:???細かいが
if ($string eq 'hoge') {
「"」より「'」の方が変数置換無い分だけ早そうな気がするが、嘘かも。
0836nobodyさん
02/04/21 22:29ID:???0837nobodyさん
02/04/21 22:51ID:???0838nobodyさん
02/04/21 23:35ID:IQt5PbmuCGI 用にコンパイル無し、インタプリタとして動かしてるなら効果ある?
0839名無しさん@edlin
02/04/21 23:47ID:???それはちょっと勘違いしている。
通常のインタプリタとして実行する時も、中間コードにコンパイル
され、実行されるんだけど、その「コンパイル」を指してるんだよ。
0842nobodyさん
02/04/22 04:49ID:5JDbu1pPどのようにすればいいのでしょう。
sprintf(); で簡単に記述できたと思ったのですが
どうしても見つかりません。
ご存じの方いましたら教えてください。
0843nobodyさん
02/04/22 06:05ID:???sprintfを使った方法が見つからないのでごめんなさい。
0844nobodyさん
02/04/22 06:44ID:???0845nobodyさん
02/04/22 09:02ID:???$_ = reverse join ',', grep !/^$/, split /(\d\d\d)/, reverse $_;
0846nobodyさん
02/04/22 09:40ID:???クライアント様のご要望で、どこかにsprintfを噛まさないといけないようです。
$d = reverse sprintf "%s", join ',', reverse($d) =~ /\d{1,3}/g;
つーかメモ。
0847nobodyさん
02/04/22 11:39ID:???perldoc perlop によると、
# put commas in the right places in an integer
1 while s/(.*\d)(\d\d\d)/$1,$2/g; # perl4
1 while s/(\d)(\d\d\d)(?!\d)/$1,$2/g; # perl5
だそうです。
ちなみに、オレ自身、コレがどういう理屈(仕組み)でうまくいくのか
理解してません。でも、ちゃんと動いてる。うーむ。
0848712
02/04/22 21:42ID:bQF56S81以下の方法でなんとか形にはなりました。
use LWP::UserAgent;
use HTTP::Cookies;
$ua = LWP::UserAgent->new;
$ua->cookie_jar(HTTP::Cookies->new("",autosave => 1));
$request = HTTP::Request->new('GET', "http://XXX.com/YY.asp?ID=ID&PASS=PASS");
$response = $ua->request($request)->as_string;
$request = HTTP::Request->new('GET', "http://XXX.com/ZZZ.asp?・・・・");
$response = $ua->request($request)->as_string;
print $response;
0849nobodyさん
02/04/22 22:37ID:???これをPerlでやる方法はどうすればよいのでしょうか?
ルートのところがよくわからん・・・。
0851nobodyさん
02/04/22 22:44ID:???0852nobodyさん
02/04/22 23:39ID:NaATCEmQこの質問、FAQだと思うんですが、FAQをまとめた所が無いし
過去スレにも載ってないようなので、質問しました。
0853Dream 黒星
02/04/23 00:36ID:???g オプションは意味がないから外せ!
でも、もっと速い方法があるが... オマエ等にはそれで十分だ。
0854nobodyさん
02/04/23 02:52ID:???if(coreファイルがあるか?){
unlink(coreファイル);
}
0855847
02/04/23 03:35ID:???オレに言わないでくれ・・・
「/gだけじゃうまくいかないこともあるんだよ」っつー例として
に載ってたので、仕方なくついてんだろうよ。
あんたが本当にもっと速い方法を知ってるのかどうかわからんが、
もうこのスレでオナニーカキコはやめてくれ。頼むよ。
0856842
02/04/23 04:34ID:???勉強になりました。ありがとうございます。
0857nobodyさん
02/04/23 15:37ID:???/☆" ̄ ゙̄ヽ/
__ Y´ノノノ"ヽヽヽ / ̄ ̄ ̄ ̄
. ヾcヽ.l(| ∩ ∩|)| < Dream は天然ばか♪
\ \、 ▽ ノjl| |
`く ヾ=oノ_ブ゙i \___
i (;) ,___|
|___| .|
| i| (,,ノ
| 7 ノ
|_l\ノ,>
. | | |_ノ
. (_)
0858nobodyさん
02/04/23 17:35ID:???は分かるんですが、
1 while
はどういう意味なんでしょうか?
低レベルな質問ですいません。
0859nobodyさん
02/04/23 20:13ID:???f() while expr;
if(expr){ f() }
f() if expr;
foreach (expr){ f() }
f() foreach expr;
0860nobodyさん
02/04/23 20:21ID:???0861nobodyさん
02/04/23 20:39ID:???マッチングのチェックをするポイントが移動するから。
gオプションは「何度も繰り返す」じゃなくて「最初の一回で終了をしない」というものだから。
0862nobodyさん
02/04/23 22:03ID:trg6QFfS$temp{aaa}[1] = 'bbb';
foreach(0..1){
print;
}
↑の変数は何なのですか?
@temp{aaa} = ('aaa','bbb');
だとダメだし。。。
0864nobodyさん
02/04/23 23:11ID:???ハッシュに配列リファレンスが入ってるのではないでしょうか。
0865(´-`).。oO(もれそう…)
02/04/23 23:15ID:???print "$temp{aaa}[$_]\n" foreach (0..$#{$temp{aaa}});
0866nobodyさん
02/04/23 23:51ID:???こんなの出来ないのか?と思ってやったらずばりできたので
質問させてもらいました。
ありがとうございました。
>>865
(・∀・)<バカっていったやつが〜〜の起源はこんな感じか?
まさに何をしたいわけでも無いです。
反射的にバカバカいう、かつ自分も〜な人に教えを請うつもりはありません。
0867nobodyさん
02/04/23 23:54ID:???とりあえずレス番間違いを修正しとけ。
そんな間違いして気付かずに入るとバカと言われても否定できなくなるぞ。
0868nobodyさん
02/04/23 23:55ID:???漏れがバカでした、逝ってきます。
0871nobodyさん
02/04/24 03:02ID:???やだやだ
0872nobodyさん
02/04/24 07:22ID:???やだやだ
0873nobodyさん
02/04/24 17:40ID:QCOQFZwwwindows2000にてAn httpd(1.39f)を使ってCGIの動作実験を行っているのですが、
Cookieを受け入れてもらうためにPerlで
print "Set-Cookie: data=Yes; expires=Sat,05-Mar-2005 00:00:00 GMT\n";
print "Content-type:text/html\n\n";
(以下html文書が続く)
のように記述したのですが、IE5.0、IE5.5に無視されてしまいます。
(NC6.xでは問題なく受信してくれます)
原因のわかる方はいらっしゃいますでしょうか?
0874nobodyさん
02/04/24 17:46ID:???CGIだけど、なんか質問ある? part 6
http://pc.2ch.net/test/read.cgi/php/1019561283/
0875反抗期
02/04/24 18:40ID:/vYDcPy6$backupFile = ">C:\\Inetpub\\wwwroot\\backup\\backup.txt";
sub backupmake {
(open OUT,$backupFile);
print OUT "$nowtime $name $email \n";
close( OUT );
}
このように記述すると
backup.txtにデータ自体はきちんとが入るのですが
前のデータが消えてしまいます。
上書きせずにデータを入れて行くにはどうすれば良いですか?
ちなみに
sub backupmake {
(open OUT,">>$backupFile");
print OUT "$nowtime $name $email \n";
close( OUT );
}
とやってみたのですが、これではbackup.txtに記述されませんでした
0876nobodyさん
02/04/24 18:47ID:???おしいね。追記したいなら
open(OUT,">$backupFile");
じゃない?($backupFileの1文字目が「>」なので)
0877反抗期
02/04/24 18:52ID:/vYDcPy6>>876
お母さんありがとう!
0878
02/04/24 18:54ID:ST7JH4TO質問させてください。
よく、掲示板の機能で、出身地をリストから選んで
入力できたり、アイコンをリストから選んで入力できたり
するけど、ああいうのをカスタマイズ(例えば、
出身地じゃなくて、血液型を入力できたり)
したいのですがそういう説明のあるサイトとかありますか?
それとも簡単なことですか?
0880nobodyさん
02/04/24 19:27ID:???<option>出身地B</option>
・
・
↓
<option>A型</option>
<option>B型</option>
・
・
0881878
02/04/24 19:29ID:ST7JH4TOもし、あなたに頼むならいくらでやってくれますか?
一箇所だけです。
出身地を血液型に入れ替えるだけです。
0882873です。
02/04/24 19:50ID:47ftV//x0883nobodyさん
02/04/24 21:20ID:???スクリプト改造工房
http://pc.2ch.net/test/read.cgi/php/1012839651/
既存のスクリプトの改造してほしいんだったらこのスレにどーぞ
改造依頼するときは 1 の注意書きよく読んでね
0886nobodyさん
02/04/25 17:07ID:eszjGBC/0887nobodyさん
02/04/25 18:46ID:???0888pear ◆PeArra/s
02/04/25 19:54ID:Va/Pba3y症状は、最初の画面は出るんですけど、
ローカルでテスト書き込みをすると、500エラーを吐いてしまいます。
ソースは↓にアップしました。
http://www.geocities.co.jp/Playtown-Knight/7767/petit.txt
よいアドバイスお待ちしています、よろしくお願いします。
0889nobodyさん
02/04/25 20:03ID:???なにをどう改造したか説明しる。
そして>883に逝く。
0891nobodyさん
02/04/25 20:05ID:UbehO4w6HPの掲示板が荒らされまくって困っています。
書き込んでいる人間のIPアドレスを知る方法がわかる方がいらっしゃったら
教えていただけないでしょうか?
もしくは書き込み不能にできる手段はありますでしょうか?
されるがままで困ってます。
よろしくお願いします。
0892nobodyさん
02/04/25 20:40ID:???明らかにスレ違いだが。
IPを取るのは簡単。
書き込み不能にするのも簡単。
だがしかしIPアドレスなんてのはいくらでも変えられるからあまり意味がない可能性が高い。
その掲示板は閉鎖して、身内にはメールを送り隠れ掲示板を置くのが建設的。
0893rootvg
02/04/25 22:13ID:J89k1oOV送信ログを抜きたいのですが。。。。。。。
0894nobodyさん
02/04/25 22:15ID:???0895891
02/04/25 22:28ID:UbehO4w6御親切な書き込みありがとうございました。
当方、本当に初心者で別の板でこちらを紹介していただいたのですが、
ここもスレ違いだったんですね、すいません。
>IPを取るのは簡単。
>書き込み不能にするのも簡単。
もし、お手間でなければ教えていただけないでしょうか?
もしくは詳しいサイト(板?)を教えていただけると助かります。
よろしくお願いいたします。
0896nobodyさん
02/04/25 22:59ID:???$remote_ip = $ENV{'REMOTE_ADDR'};
$remote_hostname = $ENV{'REMOTE_HOST'}
if ($remote_ip =~ /^10\.1/ || $remote_hostname =~ /hoge\.com$/) {
print "Fuck So Reena!<BR>\n";
exit;
}
0897nobodyさん
02/04/25 23:02ID:T2XLP+gT先日、CGI検索エンジン(ヤフーのようなタイプで管理者のみ登録可能)と、一般的にごくごく普通の掲示板の制作を依頼しようとしたら、合わせて20万円と見積もりがきました。
条件としては、「著作権表示なし」ということで、この値段はどうなのでしょうか?
みなさんのご意見をお聞かせください。
また、上記のような物であれば、いくら位が妥当なのでしょうか?
宜しくお願いします。
0900nobodyさん
02/04/26 00:40ID:???CGIProxy(ttp://business.millto.net/~quadrant/)を使いたいのですが、どうも動きません。
use Socket; を入れてみても動かないのですが、ソケットを使うには如何すればいいのでしょうか?
どなたかご教授お願いします・・・
0901900
02/04/26 01:04ID:???0903nobodyさん
02/04/26 05:34ID:Q56RTaUTいけそうなのはわかったのんですが、どうにもうまく動きません。
/usr/local/bin/gpg -ea -r D44EC5AA aaaa -o bbbb
telnetでログインし、上記コマンドを打って、
bbbbファイルが暗号化されるのは確認しました。
単にこのコマンドをperlスクリプトから打ちたいだけなのですが、
これをsystem関数でやるには、どのような書き方をすればいいのでしょうか?
初歩的な事ですみません、検索してもよくわからなかったのでお願いいたします。
0904pear ◆PeArra/s
02/04/26 07:00ID:???ごめんなさい、改造中に誤って1行消してしまったみたいで…
今は正常に動作しています、迷惑かけてしまってすいません。
>>897
業者に依頼するなら妥当だと思う
0905アリソン
02/04/26 08:13ID:???削除したいんですが例えば
april1.html
april2.html
april3.html
april4.html
と言うファイルがある場合
aprilの後3以下の数字ならそのhtmlファイルを削除する場合
ってのはどうすればよろしいんでしょうか?検索してもわかりませんでした。
教えてください。
0906nobodyさん
02/04/26 08:26ID:???使用する前にまずunlinkをコメントアウトしてprint文で正しい
ファイルが選ばれてるかどうかテストしておいたほうがよろしいかと。
use IO::Dir;
my $dh = IO::Dir->new( "/path/to/dir" ) || die $!;
while( $dh->read ) {
next if !/^april(\d+)\.html$/;
next if $1 >= 3;
## print "deleting $_\n";
unlink($_);
}
0908nobodyさん
02/04/26 10:42ID:???unlink('april2.html');
unlink('april3.html');
0909nobodyさん
02/04/26 10:53ID:qDk2ux2I0910nobodyさん
02/04/26 11:04ID:???それだとapril4.htmlまで消さないか?
0911nobodyさん
02/04/26 12:13ID:???サーバ側でこの標準モジュールが許可されているか確認する為に
管理者へ連絡する以外に、perlを利用して確認する方法は存在しませんでしょうか?
0912nobodyさん
02/04/26 12:50ID:???0913nobodyさん
02/04/26 12:52ID:???telnetとかできるんだったら
/path/to/perl -MFile::Copy -e 'print "yes\n"'
でエラーが出なければOK。
0914911
02/04/26 13:40ID:???因みに、Web 用の CGI として試行錯誤しております
>>912
実際試してみたところ、ブラウザにてエラーが発生しました
しかし、文法チェックを行っても OK で戻ってきているので
考えられる原因が、モジュールが未組み込みの為に発生しているのかと
疑問に思った次第なのです。
利用すれば判明すると言う事は
ブラウザ上のエラーメッセージにて
何らかの確認が行えると言うことでしょうか?
>>913
どうもありがとうございます!
しかしながら、当方一般のユーザ扱いになりますので
サーバへ telnet する事ができません...
スカポンタンなお話で恐縮なのですが
port 21 へ telnet する権限しかない場合でも
先のコマンドを実行することは可能なのでしょうか?
0918nobodyさん
02/04/26 17:05ID:TLJObIwRというふうにアクセスすると、
$FORM{'keyword'}に、nobodyが格納されるようにする方法がわかりません。
教えてください
0920pear ◆PeArra/s
02/04/26 17:56ID:???cgi-lib.pl を使えば実現出来ると思います。
次のような感じでスクリプトに書き込めばいいかな?
もしかしたら違うかも…(汗
require './cgi-lib.pl';
&ReadParse(*FORM);
■ The cgi-lib.pl Home Page
http://cgi-lib.berkeley.edu/
0921912
02/04/26 18:13ID:???500吐いて確認出来ないんなら、シンプルにモジュールだけincludeして
それで判断する位が一番簡単じゃ無いの?
後はtelnet.cgiとか拾って来て、サーチパス(@INCだっけ)見てみるとか
それかshで簡単なスクリプト書いて、エラーをファイルにでもリダイレクト
して(>&2だったか)ログ取るか。
つーかCopyってカレントに突っ込めば動くんじゃネーノ?
最近全然コード書いてないんでね すまんね
0922ななしさん
02/04/26 18:22ID:???氏にます。
0924GEN ◆O4y3A80k
02/04/26 18:53ID:wC8cY983922はただの嘆きでしょう。
0925nobodyさん
02/04/26 19:02ID:???一つ言っとくと、モジュールがインストールされていなければsyntax checkも失敗するから。
以下のコード試して見れ。
#!/usr/bin/perl -w
print "Content-Type: text/plain\n\n";
print eval{ require File::Copy; } ? "ok" : $@;
0926ななしさん
02/04/26 19:10ID:???"└"と"│"と"├"を組み合わせてツリー表示したいのですが、
上手く表示されません。
1: 直面する危機[cccc] 04/18 17:10
|
| 日本企業が直面している、新事業開発と新市場創造の壁とは何か。
|
├2:Re直面する危機 [つんく] 04/19 10:07
│
│ つんくつんく大儲け
│
│├3:Re直面する危機 [いいいい] 04/21 15:43
││
││ いいいい
││
│└4:Re直面する危機 [うううう] 04/21 15:44
│ │
│ │ うううう
│ │
└5:Re直面する危機 [おおおお] 04/21 15:42
│
│ おおおお
│
ここまで
みたいになってしまい、きれいに表示されないんです..
0927nobodyさん
02/04/26 19:27ID:???0929File::Copyで困ってるやつ
02/04/26 19:47ID:???"ok" が表示されました...、ということはモジュールは導入
されているという事で良いでしょうか?
であれば、エラーの原因は自分のコードミスにある模様ですので
激しく逝ってきます!
0930926
02/04/26 19:48ID:???$c .= $n eq "└" ? " " : "│" if($n);
while(@{$restree{$log}}){
@data=split(/\t/,$list{$log == 0 ? shift(@{$restree{$log}}) : pop(@{$restree{$log}})});
if($data[1] != 0){$n= @{$restree{$log}} ? "├" : "└";}
if($n eq "├"){$o = $data[1] == $log ? "│" : "";}
elsif($n eq "└"){$o = $data[1] == $log ? " │" : " ";}
print "$data[0]:$data[3] [$data[4]] $data[6]";
if($data[1] == "0" && $data[1] != $log){$sen = "<br>| ";}
else{$sen = "<br>$c$o"." ";}
print"$sen$sen";
$data[7] =~ s/<br>/$sen/g;
print "$sen<nobr>$data[7]</nobr>$sen";
&treelist($data[0],$c,$n,$o,$size - 2);
}
}
へぼなコードでほんとにすいません。おねがいします。
0932nobodyさん
02/04/26 20:41ID:???0934nobodyさん
02/04/26 21:25ID:???人に理解してもらおうという気がないようだと思っただけだよ。
@{$restree{$log}}が何かも書かずにさ。
0935903
02/04/26 23:24ID:???system("/usr/local/bin/gpg -r D44EC5AA -o bbbb -ea aaaa");
とやると、エラーはでてきませんが、bbbbファイルが作成されません、
GnuPGはサーバーの/usr/local/bin/gpgにインストールされてますので、
telnet上の操作では、暗号化ファイルbbbbは問題なく作成されます。
問題は違うとこにあるのでしょうか?
元々やりたかったことは、フォームメールに入力されたデータを
暗号化されたメールとして受け取りたいということです。
解説ページなんてたくさんあるだろうと思って、暗号、PGP、GPG、GnuPG、フォーム、
他にもいろいろ検索ワードを試しましたが、それらしいページが見つかりません。
ひとつだけみつけましたがPHPでした。
http://www.hotwired.co.jp/webmonkey/2000/20/index3a.html
もし対処法や解説ページがありましたら、よろしくお願いいたします。
0936nobodyさん
02/04/27 00:25ID:???@{$restree{$log}}がなんだかはシランが、ツリー掲示板なら
ログがあるはずだから、そのログを精査して子記事のあるものに
フラッグつけろ。
で、whileかかってる記事番号の処理の中でフラッグがあれば
そいつの下に線をたらせばいんじゃないかい?
0939nobodyさん
02/04/27 01:15ID:pZywQtFXともかく分からないので、質問自体が間違ってるかもしれませんが。
0940nobodyさん
02/04/27 01:23ID:???ともかく分からないので、質問自体が間違ってるかもしれませんが。
0942nobodyさん
02/04/27 02:03ID:???XML::DOM、XML::LibXML、XML::GDOMEなどなど。XML関係は腐るほどあるけど。
思うに一般のプロバイダーのサーバーではインストールされていないかと。
>>940
おもろい。
0943903
02/04/27 02:09ID:???$?の中は512となってますが。
できあいのCGIを設置したり、ちょびっと変えるぐらいしか
やったことない身には、さっぱりわかんないです。
0946nobodyさん
02/04/27 02:53ID:???モジュールも鯖にあげてパス通す、というのは出来ない?知らんけど。
#/usr/bin/perl -I~/cgi-bin/
みたいのを1行目にするとか。
0947903
02/04/27 02:59ID:???パーミッションは問題ないはずなんですが、、、
全開放で試してもダメでした。
海外のページを探してみたら、GPG対応のフォームメールが
いくつか見つかりました。これを改造して使えないかなと中を見てるとこです。
日本語の解説ページもたくさんありそうなもんですがねぇ、
関連ワードで国内を検索しても、ショッピングサイトしかでてこないです。
0948944
02/04/27 03:22ID:???スクリプトが、そのsystem()の行まで辿りつく前にエラーになってる可能性は
ないかな?
実行パーミッションがついてないとか、perlのpathが間違ってるとか。
あと、telnetでログインしたときと、CGIで叩いた時の $PATH が
違うという可能性か、入力ファイルが実は無かったとか。うーむ。
推測だらけですまん。
0949903
02/04/27 03:43ID:???親切なレスありがとうございます。
pathは間違ってないですねぇ、、、ファイルも存在してます。
実行パーミッションもついてます。う〜ん??
簡単なテストで、こんなのやってみました。
#!/usr/local/bin/perl
system("/usr/local/bin/gpg -r D44ECAAA -o bbbb -ea aaaa");
print "Content-type: text/html\n\n";
print "<HTML><BODY>\n";
print "暗号化終了<BR>";
print "</BODY></HTML>\n";
exit;
エラーはでないですが、bbbbファイルが作られません、
絶対パスでファイルを指定してもダメ。
すごい初歩的な思い違いをしてるような気もしますが、、、。
0950944
02/04/27 03:59ID:???つーことは、なんとなーくgpgの実行時にエラーが出てる予感。
print "Content-type: text/html\n\n";
print `/usr/local/bin/gpg -r D44ECAAA -o bbbb -ea aaaa`;
てな感じで、エラー表示されないかなぁ
0951903
02/04/27 04:39ID:???こんな時間までお付き合いいただいて恐縮です。
やってみましたが空白ページでした、は〜ぁ。
試しに自分のPCにGPG、AN HTTP、ActivePerlを入れてテストしたら
無事に暗号化ファイルが作られました。
う〜ん、何なんでしょ?
関係のあるファイル、ディレクトリを
777にしちゃいましたが動かないし。
0952nobodyさん
02/04/27 04:40ID:???でもXML::DOMもXML::LibXMLもXML::GDOMEもCライブラリが必要でしょ
(expat,libxml2)?なんかそこまでするのもなぁ、と。できないことは
なかろうが。
0953nobodyさん
02/04/27 04:48ID:o5qoi2dCこの少数点以下を切り捨てにしたい場合はどうすればいいんでしょうか?
0954nobodyさん
02/04/27 04:52ID:???perldoc -f sprintf
my $foo = sprintf( '%d', 5 * 1.3 );
0956903
02/04/27 08:02ID:???問題はGPGの環境変数の設定にあったようです、
$ENVで設定すればOKでした。
お付き合いいただいて、本当にありがとうございました。
0957Atsuhi ◆UvChluUE
02/04/27 10:08ID:vZVa5O3I<input type=text name=2ch></form>
GETorPOSTフォームから送信された内容を、CGI側の変数$in{'2ch'}に格納するにはどうしたらいいんでしょう。
0959Atsuhi
02/04/27 15:38ID:2uDiaJDyその方法試しましたが、
なぜか、フォームから送信された内容を処理できません。
cgi-lib.plも使いたくないです
0961nobodyさん
02/04/27 16:06ID:???tr/+/ /;
s/%(..)/pack"H2",$1/eg;
s/</</g;
s/>/>/g;
s/"/"/g;
$_
} split/[&=]/, do{
uc $ENV{REQUEST_METHOD} eq 'POST'
? do{ read STDIN, $_, $ENV{CONTENT_LENGTH}; $_}
: $ENV{QUERY_STRING};
0963nobodyさん
02/04/27 16:23ID:AgrfpFbJその際にrefererを空にしたいと考えてます。なぜだか。
何かよい方法ありませんか?
0965nobodyさん
02/04/27 16:38ID:AgrfpFbJすみません。反省します。
0966nobodyさん
02/04/27 19:52ID:???0967nobodyさん
02/04/27 21:53ID:sDcizlcBどーやりますか?
0969nobodyさん
02/04/27 22:22ID:sDcizlcBマジカヨ!!ソケットって何??逝ってきます
0970nobodyさん
02/04/27 22:28ID:???0971nobodyさん
02/04/27 22:40ID:sDcizlcB???
0972nobodyさん
02/04/27 22:47ID:???0973nobodyさん
02/04/27 22:50ID:sDcizlcBすこし分かりました。
できそうです。
0974nobodyさん
02/04/27 22:56ID:???#/usr/bin/perl
use LWP::Simple;
$url='www.somewhere.com/index.html'
$file='local.html'
LWP::Simple::mirror( $url, $file );
0975nobodyさん
02/04/27 23:04ID:M0a39fTIあの事でお聞きしたい事があるんですが、このスレで聞いても良いんでしょうか?
htmlだけじゃなく、cgiなどの方も関係してるのでこのスレが妥当だと思うんですが、
一応確認したくて。
0978nobodyさん
02/04/27 23:09ID:???0979975
02/04/27 23:17ID:M0a39fTIすみません、無駄にしてしまいました。
どうせなので、私が次スレ立てさせて頂きますね。
0981nobodyさん
02/04/27 23:18ID:???http://pc.2ch.net/test/read.cgi/php/1019917048/
0982nobodyさん
02/04/27 23:19ID:???【Perl】初心者コーナー Part12
http://pc.2ch.net/test/read.cgi/php/1019917048/
0983975
02/04/27 23:21ID:M0a39fTI0984975
02/04/27 23:22ID:???レス数が950を超えています。1000を超えると書き込みができなくなります。