【Perl 】初心者コーナーPart7
レス数が1000を超えています。これ以上書き込みはできません。
0001名無しさん@お腹いっぱい
01/09/12 13:04ID:???1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。
参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://corn.2ch.net/test/read.cgi?bbs=php&key=988809842&ls=50
CGIの質問はこちら【CGIだけど、なんか質問ある?part3】
http://corn.2ch.net/test/read.cgi?bbs=php&key=988727833&ls=50
過去ログ、その他の役立ち情報は>>2-5を見よう。
0002名無しさん@お腹いっぱい
01/09/12 13:04ID:???Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156
Part5 http://corn.2ch.net/test/read.cgi?bbs=php&key=988728069
Part6 http://corn.2ch.net/test/read.cgi?bbs=php&key=996075607
[ひまぢん氏のミラー]
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
0003名無しさん@お腹いっぱい
01/09/12 13:05ID:???・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
・Perl for Newbie: http://www.harukaze.net/~mishima/perl/index.html
・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
・Perlfect Solutions: http://perlfect.com/
・The Perl Archive : http://www.perlarchive.com/
0004名無しさん@お腹いっぱい
01/09/12 13:05ID:???・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
・CGI and Security http://www.japu.org/cgi/security/
・Perl security和訳:http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlsec.html
・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
0005名無しさん@お腹いっぱい
01/09/12 13:09ID:???0006名無しさん@お腹いっぱい。
01/09/12 13:26ID:qAAI57Mk・Linuxの日本語マニュアル
http://www.linux.or.jp/JM/
sendmailとかgzipとかのマニュアルも読める。
0007名無しさん@お腹いっぱい。
01/09/12 14:10ID:???ゴクロウサマ
・FreeBSDの日本語マニュアル
http://www.jp.freebsd.org/man-jp/
0008ひきこもりたいっ
01/09/12 14:26ID:???931さん932さんどうもです。
取り合えず連装配列が簡単そうなので、これでやってみる事に
しました。
パッケージも使ってみようと思います、ありがとう
0009名無しさん@お腹いっぱい。
01/09/12 16:35ID:KyL5/mNUTwnLounge Faith editionというスクリプトにクッキーを発行させたくて
悪戦苦闘しています。KENTさんのスクリプトのクッキー発行・取得の部分をとってやって見たのですが
うまくいきません。どなたか教えていただけるとありがたいです。
http://www.hpfree.com/giants/lng.txt
↑実際使っているサーバーはCGI可です。
GETできてません。
SETはできてるのかわかりません・・・
よろしくお願いします。
0010名無しさん@お腹いっぱい。
01/09/12 17:15ID:???こういう事言われるとどこから説明していいか解らんのだが。。
良く見てないが、%in はクライアントのクッキーの値でわ
それをSetしても初回訪問者の %in は常に空だから永遠に発行出来ないと
セットするのは %FORM では無いのか
何故、printの手前で手動で値を代入したりしないのか
もしperlはどうでも良いからクッキーだけ喰わせたいと言うなら
改造スレッドの方が答えが得られると思うがどうか
0012名無しさん@お腹いっぱい。
01/09/12 18:27ID:???フォームの受け取りは %FORM だろ?1083行辺りのサブルーチンreadParamを見れ。
$in{...}を全部$FORM{...}に。
1192行からの
$c_name = $ck{'NAME'};
$c_email = $ck{'EMAIL'};
$c_hpage = $ck{'HPAGE'};
でクッキーをセットした時のキーを使ってない。
name\:$FORM{'NAME'}\,email\:$FORM{'EMAIL'}\,url\:$FORM{'HPAGE'}
でやったんだから nameとemailとurlだろ。
あとURLの入力フォームはデフォルトでhttp://が入ってるから、
クッキーをセットする前に$FORM{"HPAGE"}からhttp://を取れ。
set_cookieサブルーチン内で
$FORM{"HPAGE"} =~s/http:\/\///;
何も考えんでコピーしても動くはず無いし、進歩もしないぞ。
つかKENTのスクリプトってcookieのエンコードしてねぇの?
ダメダメじゃん。
0013名無しさん@お腹いっぱい。
01/09/12 18:35ID:fdeTSY12言葉が理解できません・・・
簡単に言うとどういうことですか?
未熟者で本当にすいません。
0014つーか
01/09/12 18:50ID:???デリミタがGETとSETで違う
getとsetで使ってる名前が違う
全体に変数名が無茶苦茶
: 使いたいならエスケープすれ
getとset違うスクリプトから持ってきてんのか?
もう何が何か解らん
上手く行ってもこのままじゃ日本語は使えない
0015名無しさん@お腹いっぱい。
01/09/12 19:18ID:???簡単に言う。
コピペで済まそうとするな。少しは勉強しろ。
0016名無しさん@お腹いっぱい。
01/09/12 21:19ID:???0017名無しさん@お腹いっぱい。
01/09/12 21:49ID:SnaNq2/ghttp://www.hpfree.com/giants/lng.txt
> getとset違うスクリプトから持ってきてんのか?
同じスクリプトからですけど・・・
> コピペで済まそうとするな。少しは勉強しろ。
ごもっともだと思います。
今回の事が解決すれば改めて勉強をしようと思いますのでよろしくお願いします。
0018名無しさん@お腹いっぱい。
01/09/12 22:03ID:???>http://www.hpfree.com/giants/lng.txt
やってねーじゃねーか。
|1192行からの
|
|$c_name = $ck{'NAME'};
|$c_email = $ck{'EMAIL'};
|$c_hpage = $ck{'HPAGE'};
|
|でクッキーをセットした時のキーを使ってない。
|
|name\:$FORM{'NAME'}\,email\:$FORM{'EMAIL'}\,url\:$FORM{'HPAGE'}
|
|でやったんだから nameとemailとurlだろ。
は無視かえ?
ノーミソ使えんなら改造なんかするな。
0019名無しさん@お腹いっぱい。
01/09/12 22:11ID:SnaNq2/g大文字じゃないと駄目ですか?
0020名無しさん@お腹いっぱい。
01/09/13 03:30ID:???> KENTさんのスクリプトのクッキー発行・取得の部分をとってやって見たのですが
自体がいいアプローチなのか?
0021名無しさん@お腹いっぱい。
01/09/13 09:16ID:???;とか入るとおかしくなる。
1つのクッキーに , 区切りでセットしてキーと値を : のに
, と : が値に入る可能性を考慮していないのも駄目。
IEからJScriptで取る場合は日本語がエンコードされてると
正常に取れないけど。(IE 5で検証)
だから2ちゃんはエンコードしてない。
そういう事情は無いのにエンコードしない。
阿呆としか思えない屑スクリプト。
002221
01/09/13 09:20ID:???>1つのクッキーに , 区切りでセットしてキーと値を : のに
>, と : が値に入る可能性を考慮していないのも駄目。
キーと値を : で区切り、それを , で連結しているのに、
, と : が値に入る可能性を考慮していないのも駄目。
に訂正。
0023名無しさん@お腹いっぱい。
01/09/13 16:27ID:558g6.Ucどこで配布されているCGIのものが移しやすいのでしょうか?
もしくわ打開策を教えていただけるとうれしいのですが・・・
0024名無しさん@いつも空腹
01/09/13 16:39ID:qZrCzOSM【ソース】
------------------------------------------------------------
#ファイル読み込み
open(IN,"$datafile");
@lines = <IN>;
close(IN);
#ソートしてから重複データを削除する
@lines = sort { $a cmp $b } grep ( !$count{$_}++, @lines );
#書き込み更新
open(OUT,">$datafile");
print OUT @lines;
close(OUT);
------------------------------------------------------------
データ形式は
63,父A,30,母A,27,息子A,5,娘A,1
158,父B,55,母B,52,息子B,27,娘B,24
:
:
[家族の合計年齢],[名前],[年齢]・・・・
というcsvファイルなのですが昇順ソートすると
158→63の順になってしまい私の希望するソートができません
3桁の数字[158]よりも2桁の数字[63]を先に並べるにはどうしたらよいでしょうか?
0025名無しさん@お腹いっぱい。
01/09/13 17:01ID:???↓
$a <=> $b
0026名無しさん@お腹いっぱい。
01/09/13 18:27ID:???どうすればよいのでしょうか?
ちなみにデータファイル形式は、こんな感じです。
1,5,3,8,4,6
1,6,4,9,7,8
1,3,2,4,6,8
ヒントでも良いのでお願いします。
002719
01/09/13 18:40ID:558g6.Ucみなさんありがとうございました。
0028名無しさん@お腹いっぱい。
01/09/13 18:47ID:SoliGA0Mハッシュ、ソート使う
0029名無しさん@お腹いっぱい。
01/09/13 18:54ID:???$n=5として、
9, 8, 8, 8, 7 か
9, 8, 7, 6, 5 のどっち?
0030名無しさん@いつも空腹(24)
01/09/13 19:34ID:???なるほど、解決しました
ありがとう
0032聖可
01/09/13 21:22ID:t/B28ZsY0033名無しさん@お腹いっぱい。
01/09/13 23:06ID:???こんな感じ?
my $N = 5; #表示する最大数設定
#カウントする
my %count;
while(<DATA>){
foreach my $number(split /,/){
$number += 0;#数値化
$count{ $number}++;
}
}
#値でキーをソート
my @keys = keys %count;
@keys = sort {$count{$b} <=> $count {$a}} @keys;
#表示
my $junni = 1;
printf "%7s %7s\n",'number', 'count';
printf "%s\n", '='x20;
foreach (@keys){
printf "%7s %7s\n",$_, $count{$_};
$junni++;
$junni > $N and last;
}
__DATA__
1,5,3,8,4,6
1,6,4,9,7,8
1,3,2,4,6,8
0034名無しさん@お腹いっぱい。
01/09/13 23:47ID:???undef $/;
my %tmp;
my @big_n = (sort { $b <=> $a } grep { ! $tmp{$_}++ } split /[,\n\s]+/, <DATA> )[0..$n-1];
print join ', ',@big_n;
003534
01/09/13 23:49ID:???003634
01/09/13 23:58ID:???my $n = 5;
my %tmp;
print map { "$_ => $tmp{$_} times\n" } (sort { $tmp{$b} <=> $tmp{$a} } grep { ! $tmp{$_}++ } split /[,\n\s]+/, <DATA> )[0..$n-1];
0037名無しさん@お腹いっぱい。
01/09/14 01:38ID:AP7G9ZdU<xxx attribute="value">
というタグを
$tag->{xxx}->{attribute} = value;
という感じに変えたいと思っています。
$text = q|<img src="../pen.gif" alt="This is a pen." width=10 height=20><br>
<font size=3 color=#ff0000 face="Arial" style="text-decoration: overline underline;">あああ</font>|;
@tags = map{ m/<(.+?)>/g } $text;
for(@tags) {
@array = split / /;
$xxx = shift @array;
for (@array) {
/([^=]+?)=["']?([^"']*)["']?/i;
$tag->{$xxx}->{$1} = $2
}
}
print <<"_EOF_";
$tag->{img}->{src} (実際の出力結果:../pen.gif)
$tag->{img}->{alt} (This)←ここで値が切れてる
$tag->{img}->{width} (10)
$tag->{img}->{height} (20)
$tag->{font}->{size} (3)
$tag->{font}->{color} (#ff0000)
$tag->{font}->{face} (Arial)
$tag->{font}->{style} (text-decoration:)←ここで値が切れてる
_EOF_
これだと、"This is a pen."など半角スペースを含んだ時に期待通りに動いてくれません。
何か上手い方法はないでしょうか?
0038名無しさん@お腹いっぱい。
01/09/14 20:58ID:???$_ = q<font size=3 color=#ff0000 face="Arial" style="text-decoration: overline underline>;
s/"//g;
s/(.*?)([\w\d-]+)=/$1,$2,/g;
my @str = split /,/;
#前後の空白削除
foreach(@str){
s/^\s+//;
s/\s+$//;
}
#display
print shift @str;
while(@str){
my $attribute = shift @str;
my $value = shift @str;
printf " %-15s: %s\n",$attribute,$value;
}
0039名無しさん@お腹いっぱい。
01/09/14 23:06ID:???ユーザから任意の値を受け取って 666 なら
$mode = sprintf ("%04d",$mode);
chmod ("$mode","$file");
というようにしてるのですが、時々謎の(110とか)値になってしまうのですが。。
chmod (0777,"./foo/boo"); なら大丈夫なんです
手前で適当にprintしてみても 、$mode 0777 、 $file ./foo/boo
みたいにちゃんと値は設定されてるんです
evalとか使わないと駄目なんでしょか?
chmod (eval($mode),"$file"); じゃ駄目ですし
0040名無しさん@お腹いっぱい。
01/09/14 23:28ID:???777で411になります -_-..
004137
01/09/15 00:35ID:VWrSopAUありがとうございました!
空白の扱いが非常に参考になります。
とても助かりました。
0042名無しさん@お腹いっぱい。
01/09/15 00:48ID:???umask(000);
0043名無しさん@お腹いっぱい。
01/09/15 01:01ID:???ありがとう、でもこの場合どういう風に使えばよいのでしょうか?
どうも$modeの中の値が10進表記と解釈されて0777(DEC)=>1411(OCT)
で411になっている様です
sprintf とか oct を使えば良いのでしょうか
0044名無しさん@お腹いっぱい。
01/09/15 01:16ID:???$mode = "777";
$mode = sprintf ("%04d",$mode);
$modeoct = oct($mode);
chmod ("$modeoct","$file");
でも何故かが解らないです。。
8進数の10進表記??? 謎。。。
0045名無しさん@お腹いっぱい。
01/09/15 01:48ID:???まんま、
perldoc -f chmod
0046名無しさん@お腹いっぱい。
01/09/15 01:59ID:???ありがとう、
$mode = '0644'; chmod oct($mode), 'foo';
だと文字になっちゃうからヤバイよと言う事かな。。
"'0644'"は駄目なんですね、難しいです。。
perldoc知らなかったです、勉強になります、ありがとうです>>45
0047名無しさん@お腹いっぱい。
01/09/15 11:59ID:X3yJVM3Y自分でも頑張って探してみますが、質問します。
他のコンポーネントを使わずに、メールサーバを割り出す方法はどうすればいいのでしょうか?
例えば、hoge@hoge.comの場合、メールサーバはhoge.comだったり、mail.hoge.comだったり、
MXによって変わってきますよね?その場合はどう処理すればよいのでしょうか?
0048名無しさん@お腹いっぱい。
01/09/15 13:09ID:???tu-kahokanokonnpo-nenntottenani
0049名無しさん@お腹いっぱい。
01/09/15 13:10ID:???0050名無しさん@お腹いっぱい。
01/09/15 13:49ID:X3yJVM3Y>他のコンポーネントを使わずに、メールサーバを割り出す方法はどうすればいいのでしょうか?
なので、Net::DNSは使えないです、他の方法は無いでしょうか?
0051名無しさん@お腹いっぱい。
01/09/15 13:50ID:???ソースみれ。
0052名無しさん@お腹いっぱい。
01/09/15 14:02ID:???わかりました、そーします
0053JAPU@会社作ったにょ
01/09/15 15:29ID:???#! /usr/local/bin/perl -wT
$addr = shift || 'hoge@fbi.gov';
$addr =~ /@([a-zA-Z0-9.-]*)/;
$domain = $1;
$ENV{PATH} = "/bin:/sbin:/usr/bin:/usr/sbin";
print "MX for $domain:\n";
@mx = (sort { $a->[1] <=> $b->[1] }
map { /preference = (\d+), mail exchanger = (.*)/; [$2, $1] }
grep /mail exchanger =/, `nslookup -type=MX $domain`);
print "$_->[0] (preference $_->[1])\n" foreach @mx;
__END__
0054名無しさん@お腹いっぱい。
01/09/15 16:15ID:???nslookupを呼び出すのは禁止なんですよね。
困った困った。
0055名無しさん@お腹いっぱい。
01/09/16 04:15ID:D8MO0CAo0056名無しさん@お腹いっぱい。
01/09/16 04:24ID:D8MO0CAoHTTPD立ち上げてブラウザからhttp://127.0.0.1/で掲示板とか作ってるんですが・・。
各所で-wT使え strict使えとか言われてるのに使えなくて困っております。
0057名無しさん@お腹いっぱい。
01/09/16 05:14ID:???0058あぼーん
NGNG多分、-wT は
#!/usr/bin/perl -wT
がやりたいんだと思われ。
で、use strict の使い方と意味知ってますか。
0060名無しさん@お腹いっぱい。
01/09/16 13:02ID:???というわけで、perldoc strict かな。
>>59
良いトリップですな。
0061名無しさん@お腹いっぱい。
01/09/16 14:08ID:VeBCjLxg取り込むプログラムがありますが、同じようにWebベースの
メールをローカルスプールに取り込むperlスクリプトを作りたい
のですが、それを書くのに便利なモジュールとCGIとの会話に
必要な知識が載っている資料(RFCかweb)を知っていたら
教えていただけませんか。
0062名無しさん@お腹いっぱい。
01/09/16 15:24ID:???そんな都合の良いもんねーよ。
もっと基本からはじめろ。
0063名無しさん@お腹いっぱい。
01/09/16 16:15ID:HiUGkhywそうでしたか。結構CPANとかには「そんな都合のいいもの」って
思うようなものもあるので、誰かが作っているかもって思ったの
です。LWPとか使って書くしかないってことですか。
>もっと基本からはじめろ。
車輪の再発明を避けようと、似たようなモジュールがないか探した
だけで、基本に戻れってことですか?
0064名無しさん@お腹いっぱい。
01/09/16 16:21ID:???LWP以上の何を求めてるのかが解りませんが
hotmail.pmみたいなのを探してるのか。。。
0065名無しさん@お腹いっぱい。
01/09/16 17:06ID:yvDq7DHwたしかに違いますが、大手のinfoseek, exciteくらいなら使っている
人も多いし、webメールが面倒って思って作っているひとがいるかも
って思ったので^
>LWP以上の何を求めてるのかが解りませんが
各WEBの違いを吸収してくれるモジュールがあれば…ってことです。
>hotmail.pmみたいなのを探してるのか。。。
それってあるのですか? CPANとgoogleで検索かけても見つけ
られませんでした。
0066名無しさん@お腹いっぱい。
01/09/16 17:40ID:???そもそも世界中に一体何千のサービスがあって(以下略
0067名無しさん@お腹いっぱい。
01/09/16 17:45ID:MGixgscI了解。
0068名無しさん@お腹いっぱい。
01/09/16 18:46ID:9Q.bsKq2ttp://www4.tkcity.net/~elmo/accessory/wforum.htmlを設置しようと思い、
「#!/usr/local/bin/perl」のパスを「#!/usr/bin/perl」に変更し
cgi-binとbbsディレクトリのパーミッションは755に変更。
後は以下のように変更しました。
wforum.cgi(755)
wforum.log(644)
wf_admin.cgi(755)
index.cgi(755)
1.html(644)
pastno.dat(644)
index.html(644)
title.gif(644)
jcode.pl(644)
fold.pl(644)
accesslog.log(644)
code.log(644)
ですが、どうしても「500 Internal Server Error」と出てしまい動きません。
たぶんパーミッションが間違ってるのかな?と思いますが
どう変えれば良いのかがわかりません。
誰か教えて下さい、お願いします。
ちなみにFTPソフトは「Fetch3.0.3J2」を使ってます。
0069名無しさん@お腹いっぱい。
01/09/16 18:56ID:???頑張ってください、と言いたい所だが。
スレ違いです。
CGIだけど、なんか質問ある?part3
http://corn.2ch.net/test/read.cgi?bbs=php&key=988727833&ls=50
つーか、 use CGI::Carp してみたら助かること多いのにね。
0071名無しさん@お腹いっぱい。
01/09/16 20:31ID:???KCatch.pm使ってエラーメッセージ表示できる。
続きはCGIスレでやってね。
0072名無しさん@お腹いっぱい。
01/09/16 20:33ID:???007368
01/09/16 20:53ID:gRdNqaZI0074名無しさん@お腹いっぱい。
01/09/16 21:17ID:iOe1OIlA参考になるルーチンなどありますでしょうか。
0075名無しさん@お腹いっぱい。
01/09/16 21:25ID:???0076名無しさん@お腹いっぱい。
01/09/16 22:30ID:???0077名無しさん@お腹いっぱい。
01/09/16 22:44ID:???確かに。
私はKCatchじゃなくてCGI::Carp派です。
書いとくか…
BEGIN {
use CGI::Carp qw(carpout);
open FH, ">> ./error.txt";
carpout(*FH);
}
0078名無しさん@お腹いっぱい。
01/09/17 00:52ID:???クッキー切られてたら意味ない気がしたのだが
0079あぼーん
NGNG0080名無しさん@お腹いっぱい。
01/09/17 00:59ID:???0081名無しさん
01/09/17 22:02ID:vlnxJJbsunmatched [] in regexp at ファイル名が表示されるんですけど
エラーをなくすにはどうしたらよいですか?
0082名無しさん
01/09/17 22:06ID:???0083名無しさん@お腹いっぱい。
01/09/17 22:14ID:???\Q \E
quotemeta
0084名無しさん@お腹いっぱい
01/09/17 22:34ID:???$a : 移動前のファイル名
$b : 移動先のディレクトリ名
この場合、どんな風に書けばいいのか教えてください
0085名無しさん@お腹いっぱい。
01/09/17 22:57ID:???$c : 移動前のディレクトリ名
rename("$c/$a","$b/$a");
0086名無しさん@お腹いっぱい。
01/09/17 23:49ID:IPBfuQwsmove($a,$b);
0087名無しさん@お腹いっぱい。
01/09/18 05:01ID:???蛇足ながら。
$a,$bはsort用の特殊変数なので
普通の用途では使わないほうがいい(かもしれない)
008884
01/09/18 07:57ID:???0089名無しさん@お腹いっぱい。
01/09/18 21:30ID:???どうやってやるんでしょうか?
0090名無しさん@お腹いっぱい。
01/09/18 22:23ID:???use Cwd;
$dir = cwd();
0091名無しさん@お腹いっぱい。
01/09/18 23:07ID:???わ。そんな簡単な方法があったのですか。
ありがとうございます。感涙です。
0092名無しさん@お腹いっぱい。
01/09/18 23:27ID:s6QOmheA(分割結果を個別で携帯メールに送る)
日本語文字列の分割はどうすればいいのでしょう?
substr使って以下のようにすると、1byteコードが入ったところで化けます。
$max_byte = 80;
$offset = 0;
for($i=0;;$i++){
@mailbody[$i] = substr($mailbody,$offset,$max_byte);
$offset +=length(@mailbody[$i]);
if(@mailbody[$i] eq ""){
last;
}
}
よろしくお願いします。
0093名無しさん@お腹いっぱい。
01/09/19 00:24ID:R7HmAIag正規表現を使う
あと、@じゃなくて$な
0094名無しさん@お腹いっぱい。
01/09/19 02:33ID:???つーか、日本語は2byte(または3byte)って事知ってるか?
@と$間違うレベルじゃ多分無理だろうな。
0095名無しさん@お腹いっぱい。
01/09/19 02:47ID:qAnhwpTs逆に間違う古参が出てくるだろうが。
0096あぼーん
NGNG0097名無しさん@お腹いっぱい。
01/09/19 05:36ID:xKEtyMaE93と94の言ってることがわからなければ、たとえばこのへんを参考に。
http://www.din.or.jp/~ohzaki/perl.htm#JP_Split
そのあと>>2-3のリンク先も全部読んでおくといいかも。
2ヶ月もがんばれば全部読めるっすよ。
0098名無しさん@お腹いっぱい。
01/09/19 06:33ID:???タイムアウトしてサーバーがみつからんです。っていいます。
なんとかしてください。
0099名無しさん@お腹いっぱい。
01/09/19 06:42ID:???ローカルで?サーバーで、の間違いでしょ?
forkして子プロセスにやらせるとか
やること記述したファイル生成して、cronに拾わせるとか
0100名無しさん@お腹いっぱい。
01/09/19 07:02ID:???良く聞いてみたらなが〜いのはもちろんhelloperlも動かない
つーかHTMLも表示出来ん、Pingも飛ばねえってオチ これ基本ね
0101名無しさん@お腹いっぱい。
01/09/19 07:18ID:???ブラウザ表示がタイムアウトになっても処理は続いてる。
画面に表示されないだけ。
表示内容を見たいだけならスクリプトの最後に表示させたい内容を
外部保存するように書き換えて、あとからそのHTMLだけ開けばいい。
0102名無しさん@お腹いっぱい。
01/09/19 07:22ID:???なが〜いスクリプトってのはただ単に
入れ子になってるだけなんですけど
httpdがずっと通信してますよー。ってなってて
もうやめた。って感じで止まり、鯖見つからんかった事にしといてー。
ってなるんです。
0103じゃ・・
01/09/19 07:24ID:AuWg3XVU0104名無しさん@お腹ごろごろ
01/09/19 14:53ID:ZyNXuusgPerlスクリプトの設置場所とカレントディレクトリを「c:\temp」にした状態で
「c\temp\sample.txt」を「c:\temp\old\sample.txt」に移動するにはどうすれば良いでしょうか
0105名無しさん@お腹いっぱい。
01/09/19 14:56ID:???ログ見ろ!
>84-86
0106名無しさん@お腹ごろごろ
01/09/19 15:06ID:???[[解決]]
0107コアだんぷ
01/09/19 15:35ID:hUyzFQTQ例えば簡単な掲示板作れるくらいのレベルに達するのにどれくらい
かかった?
先日友人に1ヶ月くらいやってやっと簡単な掲示板作れるレベルになった
といわれてビクーリした。そいつは仕事から帰ってずっとPerlやってたみたいなんだけど
そんなにかかるの?
ちなみに俺は簡単な掲示板作れるようなレベルになるまで1週間かからなかった記憶があります。
個人差もあると思いますがだいたいどれくらいでいけるもんなのですか?
0108P
01/09/19 16:05ID:???やりたいことができれば習熟度や経歴なんて関係ないよ〜
私は掲示板のアレンジは即日可能でしたが
特に目的がなかったのでその後は進歩していません
0109名無しさん@お腹いっぱい。
01/09/19 16:06ID:???Perl以外のプログラムを組んだ事あるかないかによる。
組んだ事がなくてもその知識があるかないかによる。
文系か理系かにもよる。
漏れは改造から入ったから、簡単な掲示板を1から自分で作ったのが
いつだったか全然覚えてない。(ぉ
0110名無しさん@お腹いっぱい。
01/09/19 17:00ID:tAq/5NMs$mailto = "'x_x_x@xxx','x.x.x@xxx','xxx@xxx',"
こんな書き方で大丈夫でしょうか?
0111名無しさん@お腹いっぱい。
01/09/19 19:09ID:???2chの様に複数のスレッド(トピック)が有ってそこにレス付けて行く
BBSの場合トップソート(あげ機能)の有無に関わらずログの整理が
必要ですよね。
多くの掲示板みたいに
open (FH,"./log.txt");@log = <FH>;
ってやるのは少し気が引けます
もし while (<FH>) で何とかしたいとしたら、ここみたいに
スレッド毎にログファイルとsubject.txtみたいなテキストを用いる
しか無いんでしょうか。 ログファイルが増えるのもちょっとなぁ
と思ってるんですが・・・
0112sage
01/09/19 20:42ID:???それじゃ無理。具体的な掲示板スクリプト書いてくれ
@Mailto('Mail1@hoge.jp','Mail2@hoge.jp','Mail3@hoge.jp'); #送りたいメールアドレスを好きなだけ書く
foreach $Mailto (@Mailto){掲示板スクリプトの送信処理;}
大まかな考え方はこんな感じだと思うよ
>111
複数の方法がある場合、ナニを優先させるか明記しないとレス不可能
というかナニがしたいの?
0113sage
01/09/19 22:59ID:???@Mailto = ('〜以下省略〜');ですよ。「=」抜けてました(汗々)
0114名無しさん@お腹いっぱい。
01/09/19 23:11ID:RdNP37osTo: mail_addr@host, nail2@host, ...
で送れるでしょ。
ただ、ダブルクオートでくくると、変数展開がまずいことにならないかな。
$mailto = '"x_x_x@xxx","x.x.x@xxx","xxx@xxx"';
の方が安心かも。
0115114
01/09/19 23:15ID:RdNP37os動かしているスクリプトの処理によっては、えらいことになりかねない。
0116110
01/09/20 00:32ID:xeOjatSc’”x_x_x@xxx”’だと出来ました。
最初は単純にカンマで区切っただけだったんですが($mailto = 'x_x_x@ne.jp,x.x.x@ne.jp,xxx@ne.jp';)
これだと最初のやつが送信されなかったんです。_ があったのが悪かったんでしょうか???
なぜだかよくわかってませんけどこれから勉強します。
112さん114さんお答えどうもありがとうございました。
0117名無しさん@お腹いっぱい。
01/09/20 04:24ID:tvjA6dmg探しても見つかりませんでした。
どこで見られますか?
0119名無しさん@お腹いっぱい。
01/09/20 07:33ID:???どうやるんですかーー?
ちなみにgrepって検索文字に変数使えないんですか?
例えば grep ~ /$hoge/,@kensakutaisho;
みたい$hogeつかえないのですか?
0120あぼーん
NGNG0121らすかる
01/09/20 07:50ID:MTc8pgUsスクリプトを1つのファイルにまとめるか複数に分けるか悩んでます。
エラー処理のところなどを別ファイルにしようかと思うのですが
やはり複数に分けた方が処理は軽くなるのでしょうか?
それとも複数でも全てを1つのファイルにまとめても大してかわらないのでしょうか?
0122名無しさん@お腹いっぱい。
01/09/20 07:56ID:o56tunDA0123名無しさん@お腹いっぱい。
01/09/20 08:17ID:???@a3 = map {$ck1{$_}} @a2;
@hits = grep {$_ =~ /$hage/} @search_target;
↓
@hits = grep {/$hage/} @search_target;
↓
@hits = grep /$hage/,@search_target;
0124名無しさん@お腹いっぱい。
01/09/20 09:19ID:???ログを1ファイルで管理する場合は保存件数を制限するだろ?
複数ファイルで管理するとそれを探すステップが必要なので
入門レベルで処理の重い/軽いを気にするなら1ファイル管理がいいと思うが?
>122
作るcgiの完成度と作られるcgiの内容による
0125名無しさん@お腹いっぱい。
01/09/20 09:34ID:???条件によっていろいろなので一概に言えない。
@dupe = grep {$tmp{$_}++} @array1, @array2
>>121
分けたほうが遅くはなるけど、たいして変わらない。
分けるなら読み込みのスクリプトと、書き込みのスクリプトで分ける。
2chもそうだよね。
0126名無しさん@お腹いっぱい。
01/09/20 15:34ID:???だったとして
@querys = split (/&/,$ENV{'QUERY_STRING'});
foreach (@querys){
  ($name,$value) = split (/=/,$_);
  $fromin{"$name"} = $value;
}
これは理解出来るとして、
@querys = split (/&/,$ENV{'QUERY_STRING'});
foreach (@querys){
  ($name,$value) = split (/=/,$_);
  $fromin{"$name"} = $value;
}
  $name = $formin{name};
  $year = $formin{year};
これは何故? 殆どの配布スクリプトがこんな感じ
なんですけど、、何で
@querys = split (/&/,$ENV{'QUERY_STRING'});
foreach (@querys){
  ($name,$value) = split (/=/,$_);
  unless ($name =~ m/^(name|year|sex|)$/){next;}
  $$name = $value;
}
これで済ませないの?
0127名無しさん@お腹いっぱい。
01/09/20 15:48ID:???もしくは、盲目的「ソフトリファレンスは使うな」。
もしくは、マッチの負荷を気にしている。
つーか、ハッシュのままでいいじゃん。
0128127
01/09/20 15:52ID:???0129名無しさん@お腹いっぱい。
01/09/20 16:21ID:UtkSX9Kcなんかスクリプトの中にパラメータを
>m/^(name|year|sex|)$/){next;}
って書くのはマジックナンバーの埋め込みみたいに
感じるんですけど。メンテナンスが面倒になりませんか?
0130126
01/09/20 16:34ID:???一番の理由はマッチングのコストなのかな、、
シンボリックリファレンスは多用すると参照先が曖昧になってしまうから
上級者さんが、使うなー って言ってるんですよね
>メンテナンスが面倒になりませんか?
これは上の例の2つ目でも同じ事ですよね 例えばaddを足したら
$add = formin{add} を足さないといけないという部分では
色んなスクリプト読んでるんですが、何故か2つめのやり方が凄く
多いんです。で、3つ目は一度も見た事無いんで、何か落とし穴でも
有るのか、それともこう言う基本部分のリファレンス?みたいなのが
どっかに有って、みんなそれをコピーして使ってるのかな
と思ったんです perlってほんと色々な書き方が有って困ってるのに
この部分だけ判子押したように同じだったんで。。。
0131名無しさん@お腹いっぱい。
01/09/20 16:46ID:X2sVnNMYマジックナンバー(マジックストリング?)なんてどうにでもなるし。
ただ、入力データだということをハッキリさせたいのでハッシュの方がいいとは思うが。
そんな俺は自作のCGI::Queryで$q->param("foo")だけど。
0132ぱーるやろう
01/09/20 16:47ID:???0134119
01/09/20 17:41ID:???>>125
どうもありがとです。
それで試してみます。
123の矢印は省略可って事ですよね?
>>132
どっかのサイトにあったなぁ。
メアドも例外みたいのがあってそれをはじかず
変なアドレスだけをはじいていくってやつが。
ちなみに超長かった。
例外考えないと
if($email !~ /[\w\.\-\&]+\@[\w\.\-\&]+\.[\w\.\-\&]/){&error("メアド変");}
($siteurl !~ /^https?:\/\/[\w|\:\@\-]+\.[\w|\:\!\#\%\=\&\-\|\@\~\+\.\?\/]+$/i){&error("URL変");}
か?
0135119
01/09/20 17:41ID:???elsif($siteurl !~ /^https?:\/\/[\w|\:\@\-]+\.[\w|\:\!\#\%\=\&\-\|\@\~\+\.\?\/]+$/i){&error("URL変");}
だ。
0136名無しさん@お腹いっぱい。
01/09/20 18:15ID:???0137名無しさん@お腹いっぱい。
01/09/20 18:18ID:JzJOOdyAとりあえず自分で上級者って言わない奴。
0138名無しさん@お腹いっぱい。
01/09/20 18:23ID:???Inter National Perl Coding Qualification (INPCQ)
Master クラスを取得してから
0139名無しさん@お腹いっぱい。
01/09/20 18:27ID:???Perlを使いこなせるようになってから
0141名無しさん@お腹いっぱい。
01/09/20 19:12ID:???中級:CPANにモジュールを登録し、Perl文化に貢献する
上級:Perlのコアの開発に携わる
神:ラリーウォール
0142名無しさん@お腹いっぱい。
01/09/20 19:24ID:???0143名無しさん@お腹いっぱい。
01/09/20 19:54ID:???不覚にもワラタ
0144名無しさん@お腹いっぱい。
01/09/20 20:58ID:???げ。どうしよう。初級者じゃん俺。もっとヘボいと思ったのに俺。
0145初心者++
01/09/20 22:18ID:???0146稲垣(゚д゚)ゴルォ
01/09/20 22:26ID:???0147名無しさん@お腹いっぱい。
01/09/20 23:01ID:???ツマラン
0148名無しさん@お腹いっぱい。
01/09/20 23:45ID:dlBnP3mg0149名無しさん@お腹いっぱい。
01/09/21 01:45ID:D8Pk/8eMその要素以外を記録する方法がやはりわかりません。
というかうまく動きません。
これだ!というのがあれば教えてください。
0150名無しさん@お腹いっぱい。
01/09/21 02:05ID:DP/oQEFM@a = (1,2,3,4,5,6);
@b = (2,4,6,8,10);
foreach (@a) {$hash{$_} = ""}
foreach (@b) {exists($hash{$_}) ? delete $hash{$_} : print "$_\n"}
foreach (keys %hash){print "$_\n"}
ぱっとしないけど。
0151149
01/09/21 02:16ID:D8Pk/8eM今自分でアイデア出てやっとこさ作れたけどその
数倍長いよw
いや親切さん多くてうれしいですね。どうもでした。
0152150
01/09/21 02:18ID:DP/oQEFM@b = (2,4,6,8,10);
foreach (@a, @b) {$hash{$_}++}
# 重複してるの
foreach (sort keys %hash) {if ($hash{$_} >= 2) {print $_, "\n"}}
# 重複してないの
foreach (sort keys %hash) {if ($hash{$_} == 1) {print $_, "\n"}}
こっちのほうがええかも
0153Perl上級者
01/09/21 02:55ID:???#!/usr/bin/perl
$message = "Hello";
print "子プロセスを起動....\n";
$pid = fork();
if($pid < 0){
die("子プロセスの作成に失敗しました。\n");
}elsif($pid == 0){
$message .= " World";
print "\$message = $message\n";
exit(0);
}
wait();
print "\$message = $message\n";
exit(0);
0154Perl上級者
01/09/21 02:59ID:???./log.plでも./log.pl > logfile
子プロセスを起動....
$message = Hello World
$message = Hello
---------------------------
Perl5.005.3
./log.pl
子プロセスを起動....
$message = Hello World
$message = Hello
./log.pl > logfile
子プロセスを起動....
$message = Hello World
子プロセスを起動....
$message = Hello
0155名無しさん@お腹いっぱい。
01/09/21 03:05ID:???せめて環境くらい書いたらどうだ、ヴォケクァス君!
0157_gunzip@Perl初級者
01/09/21 03:10ID:???(´-`).。oO(仮にもPerl上級者なら、考えるまでもないと思うが・・・)
0159初心者@Perlなんですが・・・
01/09/21 03:29ID:???0160_gunzip@Perl初級者
01/09/21 03:31ID:???(´-`).。oO(仰せのままに・・・・)
# fork()が何をするか、どういったバッファリングが行われるか
# 分かっていれば、何も難しくない。
0161名無しさん@お腹いっぱい。
01/09/21 03:52ID:???こんなことないとperldelta読まない俺は逝ってよしですか。
0162あぼーん
NGNG0163Perl上級者
01/09/21 04:27ID:???素人ども。
01647743
01/09/21 04:41ID:0C1HqUNw0165_gunzip
01/09/21 04:46ID:???標準エラー出力以外のストリームは、端末など対話的装置に対しては
行バッファリング(バッファが一杯になるか、改行文字によって書き出す)、
そうでない場合は完全バッファリング(バッファが満杯になって初めて
書き出す)を行う。
(1) ./log.pl の場合
この場合は行バッファリングが行われる。
> print "子プロセスを起動....\n"; (*1)
改行文字により、バッファが標準出力に書き出される。
後はコード通りの(思った通りの)動作をする。
#-------------#
0166_gunzip
01/09/21 04:48ID:???この場合、標準出力は端末ではないので完全バッファリングが行われる。従って、
> print "子プロセスを起動....\n"; (*1)
では標準出力に書き出されない。(->バッファへ)その後、
> $pid = fork();
fork()呼び出しによって親のプロセスイメージが複製される際、親の
バッファも同時にコピーされる。(...まあ、大抵"copy-on-write"
だろうけど)
そして、子プロセスがprint "...", exit()した際に
> 子プロセスを起動....
> $message = Hello World
...と、子プロセスのバッファが書き出され、親と子の共有するカーネル空間の
ファイルテーブルのオフセットが更新される。
そして、親は子の死を確認した後、同じくprint "..."; exit()し、更新された
オフセット値から、自身のバッファ
> 子プロセスを起動....
> $message = Hello
を書き出す。...単にこれだけ。
#-------------#
Perl5.6からはfork()の際に自動的に全てのバッファをフラッシュするよう
変更されたため、プログラム作成者の意図通りに(*1)の部分で標準出力
バッファが書き出される。(後の動作は(2)と同じ)
従って、>>153-154のような違いが生じた。
01677743
01/09/21 04:49ID:0C1HqUNw0169Perl初級者
01/09/21 05:24ID:???なるへそ。
0170Perl下級者
01/09/21 05:36ID:???Perl上級者の理解力が急に増したのかと思った。
紛らわしいハンドルつけるなゴルァ
>>164
アクセスしてくるURLと一致するファイルをサーバ上に作れば
いいんでない? "c:"で始まるファイル名で。
0171名無しさん@お腹いっぱい。
01/09/21 05:39ID:DP/oQEFM0172名無しさん@お腹いっぱい。
01/09/21 09:40ID:5isnB2usどうやってインストールするんですか?
どうやって使うんですか?
なんかモジュールなんて知ってて当然みたいな説明ばかりで
基本的なところがわからない
検索したら、モジュールの作り方とか出てきて涙
0173名無しさん@お腹いっぱい。
01/09/21 09:54ID:aEvmZgeQ俺は C, PHP, Ruby, Python, ASP(VBScript), ColdFusion を
全て中途半端に使える(w
んで今はJSPの勉強中。
てか一つに的絞って、まずそれを極めろって自分でも思う。
>>172
http://www.google.co.jp/search?hl=ja&q=Perl+%83%82%83W%83%85%81%5B%83%8B+%83C%83%93%83X%83g%81%5B%83%8B&lr=
モジュールの作り方ばかり出てくるか?
0174名無しさん@お腹いっぱい。
01/09/21 09:57ID:5isnB2usダウンロードしろとか、なんかやっぱりCPANも常識なんですよね?
なんかすげぇバカなこときいてるんだろうなぁ…
0175名無しさん@お腹いっぱい。
01/09/21 10:12ID:5isnB2usWindowsなんです。なんかモジュール?をダウンロードしたら
Makefile.PLがはいってて、perl Makefile.PLするってのまで
なんとなくわかって、で?みたいな
makeしろと言われてもmakeコマンド?なんてないし・・・
ようやく
ttp://member.nifty.ne.jp/hippo2000/perltips/module_install.htm
にたどりつきました。ちょっと前進かも?
0176名無しさん@お腹いっぱい。
01/09/21 10:13ID:5isnB2usでもなんかもうなにがなんだかわかんないんです
0177名無しさん@お腹いっぱい。
01/09/21 10:14ID:???俺は C, PHP, Ruby, Python, ASP(VBScript), ColdFusion を
全て中途半端に使える(w
んで今はJSPの勉強中。
てか一つに的絞って、まずそれを極めろって自分でも思う。
>>172
http://www.google.co.jp/search?hl=ja&q=Perl+%83%82%83W%83%85%81%5B%83%8B+%83C%83%93%83X%83g%81%5B%83%8B&lr=
モジュールの作り方ばかり出てくるか?
0178177
01/09/21 10:15ID:???0179名無しさん@お腹いっぱい。
01/09/21 10:30ID:j0KdAUa.皆おなじ道をたどってきたのさ。。。
WindowsのActivePerlを使ってるなら、CPANからもってくるより
ActivePerlのサイトからPPMつうのでダウンロードするほうが
簡単な場合が多いよ。
ただPPM形式になってるのはメジャーなモジュールだけだから
有名じゃないモジュールはCPANを利用するしかない。
今インストールしてみたいモジュールは具体的に何かあんの?
0180あぼーん
NGNG0181名無しさん@お腹いっぱい。
01/09/21 12:32ID:5isnB2usありがとうございます。涙。
今ほしいのは、MP3ファイルのタグを操作(主に読み込み)する
ためのモジュールです。
MP3-infoってのを見つけたのは良いのですが、これを
どうすれば???みたいな状態です。
Makefile.PLがあって、Makefileを作る、ってのは成功したものの、
makeなんて持ってないよ?という
0183名無しさん@お腹いっぱい。
01/09/21 15:09ID:5isnB2usさっそく実行してみたところ、
Error installing package 'MP3::Info': Could not locate a PPD
file for package MP3::Info
というエラーになってしまいました。
C:\> ppm install MP3::Info
と、
C:\> ppm
PPM> install MP3::Info
両用やってみました。
0184名無しさん@お腹いっぱい。
01/09/21 15:18ID:???こちらで一覧見て調べましょう。
http://aspn.activestate.com/ASPN/Downloads/ActivePerl/PPM/Packages
で、PPMPackageはデリミタ(::)指定じゃないです。
見たところありますね。
ppm install MP3-Info でどうぞ。
0185a'x ◆5GIjpSRQ
01/09/21 15:24ID:???むぅ。俺はそれでinstall出来たんだが。
ひょっとしてfirewallの中からのアクセス?だったら
set HTTP_PROXY=http://(Proxyホスト名):(Proxyポート)
ってやってppm使ってみて。
0186a'x ◆5GIjpSRQ
01/09/21 15:29ID:???>で、PPMPackageはデリミタ(::)指定じゃないです。
そうなの?俺は :: でも出来たが・・・・。(今試したら、- でも出来た)
0187_gunzip
01/09/21 17:35ID:???というか、ppmは中で
$package =~ s/::/-/g;としているから、デリミタの問題ではなくてtypoか何かじゃないかなあ。
0188名無しさん@お腹いっぱい。
01/09/21 18:44ID:nYoU2cMw普通はflock使いますか?
0189名無しさん@お腹いっぱい。
01/09/21 18:49ID:???0190名無しさん@お腹いっぱい。
01/09/21 19:03ID:TAJp9wyQできるとすればどうやって書けばいいの?
0191名無しさん@お腹いっぱい。
01/09/21 19:33ID:???0192名無しさん@お腹いっぱい。
01/09/21 19:35ID:TAJp9wyQ0193名無しさん@お腹いっぱい。
01/09/21 20:36ID:RIYGknmQありがとうございます。typoだったのかな?
とにかく嬉しい! 感謝感激です。
0194名無しさん@お腹いっぱい。
01/09/21 20:42ID:ziETu.IMセッションのタイムアウトを実現するために、
Apache::Session::MySQLでセッションテーブルに
TIMESTAMPフィールドを置いて、cronでスクリプト走らせて
一定時間以上前のものを削除しています。
こういうようなことを、Apache::Session::DB_Fileでやるには
どうしたらいいんでしょう?
0195名無しさん@お腹いっぱい。
01/09/21 20:43ID:???さーがんばるぞー!
0196名無しさん@お腹いっぱい。
01/09/21 21:11ID:???PPM見たけど、s/::/-/な部分が見当たらなかった。
ポインタ示していただけるとありがたいです。
0197_gunzip
01/09/21 22:11ID:???あ、もしかしたらWindows版のppm.batを見ていませんか?
$ grep "s/::/-/" -n /usr/local/ActivePerl-5.6/bin/ppm
111: s/::/-/g;
164: $package =~ s/::/-/g;
190: $package =~ s/::/-/g;
0198a'x ◆5GIjpSRQ
01/09/21 22:42ID:???Win版なら
C:\Perl\bin\ppm
の107行から(バージョンにより行は多少変わると思うが)
for (@ARGV) {
s/::/-/g;
}
と有ります。ppm.batにも同様に120行から
for (@ARGV) {
s/::/-/g;
}
と有ります。
0199あぼーん
NGNG0201149
01/09/22 04:45ID:ZYiZZlaoレスおそくなっちゃいましたけど。
わざわざありがとうです。
0202マヌケ初心者
01/09/22 05:32ID:gUO1IwS2apeボードのスキンを作っているのですが
強制改行させるにはどうしたらいいのでしょうか?
幅500の別ウィンドウに板を表示させてるのですが
改行せずに書き込まれるとマヌケに横に伸びてしまいます
そんな事もしらない俺がマヌケなのは重々承知しています
どなたか教えて頂けませんでしょうか?
宜しくお願い致します
0203名無しさん@お腹いっぱい。
01/09/22 06:05ID:???それってスキンでスタイルシート使うとかして、なんとかならん?
apeボードのスキンって、そういうもんじゃないんすか。よく知らないけど。
まあ諸事情でどうしてもCGIを改造する必要があるというなら、
このサイト↓などを参考に。
http://www.din.or.jp/~ohzaki/perl.htm#JP_Fold
0204名無しさん@お腹いっぱい。
01/09/22 09:14ID:YFImM5JMPerlでスクリプト書いて、ファイル名の拡張子を
「.pl」と「.cgi」どちらにしたらいいんですか?
どちらでも一応同じ動作をするんですが・・。
何か使い分けなんでしょうか・・・・汗
0205名無しさん@お腹いっぱい。
01/09/22 09:30ID:???サーバーによる。
サーバーの関連付けの設定で「.pl」でCGIが起動できない所もある。
そういう事があるから、閲覧者が直接参照する方が「.cgi」で、
ライブラリとかが「.pl」なんじゃないかと俺は考えてる。
あくまで憶測。
0206マヌケ初心者
01/09/22 09:47ID:1q1.uifgレスありがとうございました
おっしゃる通りスキンでなんとか・・と思ったのですが
widthで幅きめても結局書き込む時に改行されなかったら
横にのびちゃうんですよ
色々調べ回って他のテスト板試してみたんですが
どれも伸びてました(w
紹介して頂いたサイト見てきます
ありがとうございました。
0207204
01/09/22 10:02ID:???ありがとうございます。
少しずつ勉強したいと思います
0208名無しさん@お腹いっぱい。
01/09/22 12:11ID:EJpCVqks<data>〜</data>
<data>〜</data>
…
</list>
というデータをXML::Generatorで作ろうと思っています。
与えられたデータ1行→<data>〜</data>に変換、で、
print "<list>"\n
while(<>){
my $xml = new XML::Generator;
$xml->data(…);
}
print "</list>"\n
のような処理を考えたのですが、これで良い物でしょうか?
不安なのは、while()の中でnewして良いのかなぁ?
freeとかってしなくてよいのかなぁ?という点です。
#根本的にかっちょわるいことしてたらやだなぁとも思う
0209名無しさん@お腹いっぱい。
01/09/22 16:17ID:???ガベージコレクターがあるので問題なし。
ちなみに new なら delete でしょ?
0210名無しさん@お腹いっぱい。
01/09/22 16:24ID:EJpCVqksなるほど。そうだったのですか! それなら安心です。
そして、newに対応するのはdeleteなのですね。恥。
0211-
01/09/22 16:41ID:X9qGQ5PUhttp://members.tripod.co.jp/bingo852/
0212名無しさん@お腹いっぱい。
01/09/22 16:43ID:???パス名付きで取得するにはどうやるんでしょうか???
0213名無しさん@お腹いっぱい。
01/09/22 16:44ID:???0214名無しさん@お腹いっぱい。
01/09/22 16:58ID:u4MHoQsYどうやるんでしたっけ?
perl -e 'use LWP::UserAgent;'
とかやってエラーなければインストールされてるって判断して
いいんでしょうか?
0215名無しさん@お腹いっぱい。
01/09/22 17:55ID:bcGEWw7sWindows上で動かしているとflockとか使用できませんよね
flock以外にもWindows上だと使用できないものってありますか?
0216名無しさん@お腹いっぱい。
01/09/22 17:56ID:???0217名無しさん@お腹いっぱい。
01/09/22 18:12ID:UPWBdoisWindows上のPerlとかでsubstrとかって使えんの?
0218名無しさん@お腹いっぱい。
01/09/22 18:18ID:.Ro0S1Bw一行で書くにはどうすればいいですか?
0219名無しさん@お腹いっぱい。
01/09/22 18:22ID:???use File::Find;
find sub { push @list, $File::Find::name }, ".";
>>214
perl -MLWP::Simple -e 'print $LWP::Simple::VERSION'
perldoc LWP::Simple
等。
>>215
WinNT/2000ではflock使える。
環境限定されるものは他にもある。
>>217
問題無い。
0220名無しさん@お腹いっぱい。
01/09/22 18:23ID:B3IfreL6やってみればいいじゃん
0221名無しさん@お腹いっぱい。
01/09/22 18:29ID:???use File::Find;
find sub { push @list, $File::Find::name if /\.html$/ }, ".";
>>218
map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { [$_, lc] } @list;
0222名無しさん@お腹いっぱい。
01/09/22 18:34ID:???0223名無しさん@お腹いっぱい。
01/09/22 19:38ID:u4MHoQsY作ろうとしているのですが、長いページになると止まってしまいます。
正規表現で扱える文字長って最大値が決まってるのでしょうか。
while( $str =~ /(<img [^>]*src="?)([^"]+)("?.*?>)/isg ){
$tag1 = $1;
$img = $2;
$tab2 = $3;
$str =~ s/$tag1$img$tag2//i;
print $img. "\n";
}
1行1行処理すれば問題ないのですが、
<img
src="〜">
というようなものもあるので
0224223
01/09/22 19:48ID:u4MHoQsYすいません
while( $str =~ /(<img [^>]*src="?)([^"]+)("?.*?>)/isg ){
じゃなくて
while( $str =~ /(<img[ \r\n][^>]*src="?)([^"> ]+)("?.*?>)/isg ){
ですね。最初の<imgから最後までひっぱってた。^^;
馬鹿長いページでエラーが起きるのは同じです。
0225名無しさん@お腹いっぱい。
01/09/22 19:50ID:???ありがとうございます!!! 感激っす!
0226名無しさん@お腹いっぱい。
01/09/22 21:01ID:???それの原因はわかんないけど
タグ抜き出しツールを作るならHTML::Parserつーのも便利。
use strict;
my $file = "hogehoge.html";
my $parser = MyParser->new;
$parser->parse_file($file);
package MyParser;
use base 'HTML::Parser';
sub start {
my ($self, $tag, $attr, $attrseq, $text) = @_;
if ($tag =~ /img/i) { $text =~ tr/\r\n//d; print "$text\n"; }
}
0227名無しさん@お腹いっぱい。
01/09/22 21:29ID:???おぉ、そんなものがありますか。感謝です。
ついでといってはなんですがディレクトリを扱うのに便利な
モジュールってありますでしょうか。
たとえばサブディレクトリを一度に削除できるようになるやつとか。
通常だと最下層から順番にやっていかなきゃいけないから。(´∈ ` )
0228名無しさん@お腹いっぱい。
01/09/22 21:43ID:???use File::Path;
rmtree($root, 0, 0);
0229名無しさん@お腹いっぱい。
01/09/23 00:45ID:SMJO237Aなるほど、File::Pathでしたか。
せんきゅですっ!
0231まなぶくん
01/09/23 01:13ID:???0232名無しさん@お腹いっぱい。
01/09/23 01:25ID:???色んなアプローチを示すのは良い事だと思うが。
0233_gunzip@眠い
01/09/23 01:47ID:???>>223-224さんの言う
>長いページになると止まってしまいます。
というのは、およそ二つの原因があるんじゃないかと。
例えば、下のスクリプトが何故"*"ではなく"**"と表示するのか...とか。
-------------------------------------------
#!/usr/local/bin/perl
our $string = "<<tag>tag>";
while($string =~ /<tag>/g){
$string =~ s/<tag>//;
print "*";
}
print "\n";
-------------------------------------------
0234_gunzip@ぼけ
01/09/23 01:51ID:???...って当たり前だな。眠いけどまとめてみます。
0235名無しさん@お腹いっぱい。
01/09/23 02:00ID:uXqIVwdQs/^img //i and push @imgs, /src="?([^"\s])"?/i while (<>);
とか。
0236腐ったソース大好き
01/09/23 02:02ID:uXqIVwdQwhile (<>) {/^img /i and push @imgs, /src="?([^"\s]+)"?/i }
か
0237まなぶくん
01/09/23 02:09ID:???この手のは何時も試行錯誤で結果オーライなんだよなー
_gunzipさんはエンジンのソース読んでるんだろな・・・
(´-`).。oO(あたまいたい。。。)
0238まなぶくん
01/09/23 02:10ID:???(´-`).。oO(ってまた糞レスだ。。)
0239名無しさん@お腹いっぱい。
01/09/23 02:24ID:???アパッチでperlを動かすには
どのような設定が必要なのでしょうか?
0240名無しさん@お腹いっぱい。
01/09/23 03:10ID:???そんな感じで追加質問が延々と続くパターンはたまらんよ
簡単に言うと
httpd.confってファイル弄ってexecCGIするんだ
検索すれ
0241名無しさん@お腹いっぱい。
01/09/23 03:35ID:???Apacheで[Perl]が動くって・・・。
別にPerlがインストールされていればApacheの有無に関係ないですけど。
CGIならスレ違いだかんね。
# ここんとこperlの質問で良い感じに流れてる気がする。
0242名無しさん@お腹いっぱい。
01/09/23 03:51ID:EZbM3lIs検索すればすぐに出てくるからおとなしくgoogleでも逝ってなさい
0243239
01/09/23 05:41ID:???httpd.confの
設定はどうすればいいか?
です。
でもここはperl言語についてのようなので、スレ違いのようですな。
0244名無しさん@お腹いっぱい。
01/09/23 06:18ID:???ありがとうございました。
httpd.confにExecCGIをつけて動きました。
ありがとうございました。m(_ _)m
0245名無しさん@お腹いっぱい。
01/09/23 11:43ID:IRukl05.動きません。間違ってはないと思うのですが・・・
unlink("*.*");
rmdir("*.*");
print"Content-type:text/html\n\n";
print<<EOF;
<html>
<head>
<title>デリート</title>
</head>
<body>
<BR><BR><BR><CENTER>
消しちゃいました〜(゚▽゚=)ノ彡☆ギャハハ!!
</CENTER>
</body>
</html>
EOF
exit;
上の方にもありますがWindowsME上のPerlではunlinkが使えないって
ことはないですよね?
それともunlinkとかrmdirに*って指定できないんですか?
とっても初心者な質問ですがお願いします。
0246245
01/09/23 12:19ID:IRukl05.HTML部分はありません。
0247名無しさん@お腹いっぱい。
01/09/23 12:46ID:???0248名無しさん@お腹いっぱい。
01/09/23 12:56ID:???0249名無しさん@お腹いっぱい。
01/09/23 13:11ID:???unlink(glob('*.*')); または unlink(<*.*>);
に修正しる。
0250_gunzip
01/09/23 14:34ID:???m//gは前回マッチした位置をmagicメンバ(これはリンクリストとして実装されている。)に記憶しておき、次回からはそのオフセットから検索を開始する。
マッチに失敗するか、文字列の内容に対する破壊的動作(代入その他)が行われた場合などは、オフセットを文字列の先頭に巻き戻す。
このことを知っていれば、
-------------------------------
our $string = "target string";
while($string =~ /target/g){
my @a = ( $string =~ /another/g );
}
-------------------------------
が無限ループになることがすぐに分かる。
例えば、>233のスクリプトで実際のところ何が起こっているかというと、
(下の[][]..[]はメモリ内のイメージ。('\0'は除く)offsetはSv-PVMGのIVスロットの値、
lengthはlenメンバ、matchはmagic.mg_lenメンバのこと。)
--------------------------------------------------------
| $string = "<<tag>tag>";
--------------------------------------------------------
$string = ['<']['<']['t']['a']['g']['>']['t']['a']['g']['>']
| offset = 0 #バッファ領域内の文字列開始オフセット
| length = 10 #文字列の実際の長さ
| match = -1 # $stringに対するマッチの開始オフセット
% メモリ確保のオーバーへッドを抑えるためにPerlは予め余分に
% バッファを確保するが、ここでは割愛する。
-------------------------------------------------------
-------------------------------------------------------
| while($string =~ /<tag>/g){ # 一回目のループ開始
-------------------------------------------------------
$string = ['<']['<']['t']['a']['g']['>']['t']['a']['g']['>']
| offset = 0
| length = 10
| match = 7 #次回のマッチ開始位置が更新される
% $string の2-6文字がマッチしてリターンする。
-------------------------------------------------------
0251_gunzip@今頃起きた
01/09/23 14:36ID:???-------------------------------------------------------
| $string =~ s/<tag>//;
-------------------------------------------------------
$string = ['<']['<']['t']['a']['g']['<']['t']['a']['g']['>']
| offset = 5 #更新される。上の6セル目に注目。
| length = 5 #当然短くなる。
| match = -1 #オフセットがリセットされる
% s///による置換。
% s///によって部分文字列が削除される際、Perlはマッチした個所の
% 文字列における位置を調べて、バッファを移動させる量が少ない方を採る。
% この場合、マッチしなかった先頭文字の'<'を5バイト後ろにずらし、
% バッファ先頭からの文字列開始オフセットを5に設定する。
% また、マッチの開始オフセットがリセット(-1)され、次のwhile()
% ループのマッチは、文字列の先頭位置から始めることになる。
-------------------------------------------------------
-------------------------------------------------------
| while($string =~ /<tag>/g){ #二回目のループ開始
-------------------------------------------------------
$string = ['<']['<']['t']['a']['g']['<']['t']['a']['g']['>']
| offset = 5
| length = 5
| match = 5 #次回オフセット(文字列終端)
% matchの値に従い、**文字列の先頭から**検索を開始し
% マッチは(始めの予想に反して)成功する。
------------------------------------------------------
0252_gunzip
01/09/23 14:38ID:???>>223さんの「非常に遅くなる」というのは、理由が二つ考えられるけど、
((( っていうか、なぜs///の部分が入っているのかなあ.....。
....もしかして、while($string =~ /pattern/g) だと、前回マッチした部分文字列が
残っているので、次回もその部分がマッチし無限ループになるのではないかと思ったのかな?
それで、s///でその部分を取り除いておかなくては、と考えたのだろうか?
もしそうなら、m//gはスカラコンテキストでは前回のマッチ位置を記憶しておいて
次回はそこから検索開始するので,while()内にいれても特に問題はないってことは
知っておいて欲しいな。 )))
>長いページになると止まってしまいます。
から思うに、(余計な)s///の副作用(*注)で毎回検索開始位置がリセット(上の例参照)
されるため、毎度文字列の初めからマッチを開始せねばならず、また、置換に伴う
バッファの移動も大量に行われるようになる。その結果、ファイルが大きくなるにつれて
莫大な時間がかかるようになる、というのが原因の一つ。
(*注) $stringへのs///, 左辺substr(),代入などの破壊的操作だけではなく、
単なるm//gパターンマッチだけでもwhile()内のm//g検索オフセットはクリアされる。
0253_gunzip@昼飯
01/09/23 14:51ID:???$strに対して、さらに何か手を加えている。#-->無限ループ
| pos($str) = 0 #オフセットを明示的にリセット
| substr($str,0,0) = "hoge"
| $str .= "text"
while()ループ内のs///に'g'修飾子が付いている。#->無限ループ
$str内に'\n', '\w', '\G' 等のキャラクタがあり、s///の所でなにか副作用でも起こしている。
#-->データ見ないことには判断できない。
けつろん
while($string =~ /PATTERN/g)ループの中での$stringの扱いには少し注意して欲しいなあ、
ということです。(単なる読み出しは全く問題なし)
っていうか、>>223の場合は6行めのs///を削除すればいいだけのような。
(結局言いたいことはこれだけ.....)
--------------------------------------------
ちなみに、自分はHTML::LinkExtorモジュールの利用を勧めておきますね。
#!/usr/bin/perl
use HTML::LinkExtor;
HTML::LinkExtor->new(\&ext)->parse_file('./index.html');
sub ext
{
my($tag, %attr) = @_;
if( lc($tag) eq 'img' ){
print $attr{src} , "\n";
}
}
0254_gunzip
01/09/23 14:57ID:???our $string = <<'END_OF_STRING';
<img src="/usr/local/pixmap/title.png">
<img
src="./cap.gif">
END_OF_STRING
while($string =~ /<img[^>]+?src\s*=\s*["']?([^'" >]+?)[ '"]?>/gis){
print $1, "\n";
}
0255名無しさん@お腹いっぱい。
01/09/23 17:20ID:???なるほどねぃ。
ためになる話をありがとう。
0256名無しさん@お腹いっぱい。
01/09/23 20:53ID:???0257名無しさん@お腹いっぱい。
01/09/23 21:48ID:???↑ですか?
0258名無しさん@お腹いっぱい。
01/09/23 22:14ID:???0259名無しさん@お腹いっぱい。
01/09/23 22:29ID:???実際_gnuzip JAPU両氏のお陰で厨房な俺は随分勉強になってるぞ
特に、コンパイラ読んでるらしい発言はメチャクチャ参考になるよ
Efectiveの脱線話読んでるみたいでとっても いい(・∀・)
0260223
01/09/24 01:22ID:39bTpAKQあ、 s///; っていらないんですか。
無限ループるかと思ってました。ありがとうございます。
HTML::LinkExtor調べてみます!
0261名無しさん@お腹いっぱい。
01/09/24 01:29ID:o1YS9rTQこのスレに主に住んでいるのでここで質問させて下さい。
作ったページを表示するとエンコードが西ヨーロッパに
なってしまいます。
<HTML lang="ja">
などと入れても問答無用です。
ちなみにブラウザはIEです。
何か良い方法はあるのでしょうか?よろしくお願いします。
0262名無しさん@お腹いっぱい。
01/09/24 01:31ID:???どこに住んでいようと関係ない。
然るべきスレに逝け。
このスレに引き篭もるな。
0263名無しさん@お腹いっぱい。
01/09/24 01:41ID:???いってきまふ・・・。
0264名無しさん@お腹いっぱい。
01/09/24 01:57ID:???0265名無しさん@お腹いっぱい。
01/09/24 02:22ID:???それにしてもこの板人すくなぁ〜…。
0266名無しさん@お腹いっぱい。
01/09/24 02:34ID:???実際の所HTMLだけで文字コード100%指定するのって不可能なんだよね
charsetの手前でブラウザがコード決め撃ちしちゃったらそれまでだったりして・・
昔はS_JISならheadより手前に<!---あ--->なんておまじないも有ったけど
CGIだったらHTTPヘッダでContent-type指定してやればマシになるのかなぁ
漏れは中国語サイトを良く見るんでaccept-languageをch-1.0とかしてるのが
悪影響と思ってるけど。。。
激しくすれ違いだからSAGE
0267名無しさん@お腹いっぱい。
01/09/24 02:43ID:???Content-Type: text/html; charset=Shift_JIS
等。
スレ違いだが、まぁ。
0268名無しさん@お腹いっぱい。
01/09/24 02:51ID:???gooのホームページはそうだよね。
でもすれちがいなので下げ。
0269名無しさん@お腹いっぱい。
01/09/24 02:59ID:08MV7o4sトップのスレを下げてもしょうがないのであげ。
もちろん文書中でそれより前に漢字とか使っちゃダメだけど.
ttp://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/charset.html#doc-char-set
関係ないのでやっぱりさげ.
0271名無しさん@お腹いっぱい。
01/09/24 04:03ID:???charsetパラメタの勧め: HTMLにおける文字符号化スキームの明示方法
http://www.fxis.co.jp/DMS/sgml/cafe/saloon/html_correct_charset.html
0272もち米100%
01/09/24 06:54ID:???編集前の状態
ファイルA=>0
ファイルB=>0
編集後の状態
ファイルA=>1
ファイルB=>1
こんな感じの処理をする時にファイルBの編集中に例外やSIGTERM喰らって
処理が中断してしまった時ファイルAを0に巻き戻すような処理を行いたいのです。
つまりファイルAとBの時系列の同一性を保ちたいんですが(これって何って呼ぶん
だったかな、、んー)
イメージ的には2chだと、パラメータの汚染チェックが通れば次々ファイルを処理
して行く訳ですが、最終段階のindex.htmの書き換え中にコケてしまうような状態です
例えばショッピングカート等、お金の絡むプログラムだと、これが致命的な欠陥に
なると思うんですが、、中々自分では上手く行きません。
参考になる考え方や本なんかは有りますでしょうか。
0273もち米100%
01/09/24 07:18ID:???2chだと あるスレにカキコがあると
datに追記→subject.txt書き換え→テンポラリHTML書き換え→index書き換え
これだけ作業する訳ですが、どれかの更新中にこけてしまうと
それぞれのファイルは不整合をおこしてしまいます。
これを、全ての工程が成功して初めて書き換える、と言う感じで行いたいのです。
今の所テンポラリに書き出して一気にrenameする位しか考えが及びません。
0274名無しさん@お腹いっぱい。
01/09/24 07:59ID:???0275名無しさん@お腹いっぱい。
01/09/24 10:37ID:EJKgIokwアンケートをとるCGIでenquete.datに書き込んでくれません
line11は $data = "$form{'name'}$form{'mail'}\n----------\n\n";
line16は print ENQ $date;
なのですが
これってどういう意味なんでしょうか?
C:\1week\saturday>perl -cw enquete.pl
Name "main::data" used only once: possible typo at enquete.pl line 11.
Name "main::date" used only once: possible typo at enquete.pl line 16.
enquete.pl syntax OK
0276名無しさん@お腹いっぱい。
01/09/24 11:05ID:???mainパッケージの$dataが一回しか使われてないけど、タイポしてんじゃ無いの?
my ($data,$date);
0277名無しさん@お腹いっぱい。
01/09/24 11:41ID:RCKEta/Aすいませんタイポってなんですか?
0278名無しさん@お腹いっぱい。
01/09/24 12:01ID:???typo == "typographical error"
ようするに文字の打ち間違い。
0279名無しさん@お腹いっぱい。
01/09/24 12:12ID:???Temporary -> Rename
ってのが簡単に実装出来る手段だというのは間違い無い。
参考になる本は、ム板の参考書スレにあった気がするぞ。
0280名無しさん@お腹いっぱい。
01/09/24 12:16ID:W/gfguRs>テンポラリに書き出して一気にrenameする
これで良いんじゃない・・・?
最後に一連のrenameするときだけシグナルをトラップして
中断されないように配慮すれば。
0281名無しさん@お腹いっぱい。
01/09/24 12:50ID:mlN0ge2Eご指摘のとうりただの打ち間違いでした
( ´Д⊂ヽううー、ありがとうございました
またヨロシクお願いします
0282名無しさん@お腹いっぱい。
01/09/24 12:51ID:???セルへのデータ入力の一括入力は、以下のような方法で可能なのですが、
@data = (
[ qw(dataA1, dataB1, dataC1) ],
[ qw(dataA2, dataB2, dataC2) ],
[ qw(dataA3, dataB3, dataC3) ]
);
$Worksheet->Range("A1:C3")->{Value} = \@data;
セルに入力されているデータをURLの一部として持つHyperlinkを
同様にセルに一括挿入する方法が分かりません。
現状、A1:A3のデータを元にHyperlinkを挿入する際、
for (my $i = 1; $i <= 3; $i++) {
$Worksheet->Hyperlinks()->Add(
$Worksheet->Range("A${i}"),
"http://www.z.com/" . $data[$i - 1]->[0] . "/");
}
のようにループを回して処理しているのですが、
データ数が多くなると分単位で時間がかかってしまう点が難点です。
Hyperlinkが定数であれば、下記の一括挿入が可能なのですが、
URLの一部にセルのデータを使用した場合のHyperlinkの
効率的な挿入方法はないものでしょうか?
$Worksheet->Hyperlinks()->Add(
$Worksheet->Range("A1:A3"), "http://www._.com/sample/");
VBA寄りの内容かもしれませんが、ご存知の方がありましたら、
ご助言頂ければ幸いです。
0283名無しさん@お腹いっぱい。
01/09/24 12:52ID:???セルへのデータ入力の一括入力は、以下のような方法で可能なのですが、
@data = (
[ qw(dataA1, dataB1, dataC1) ],
[ qw(dataA2, dataB2, dataC2) ],
[ qw(dataA3, dataB3, dataC3) ]
);
$Worksheet->Range("A1:C3")->{Value} = \@data;
セルに入力されているデータをURLの一部として持つHyperlinkを
同様にセルに一括挿入する方法が分かりません。
現状、A1:A3のデータを元にHyperlinkを挿入する際、
for (my $i = 1; $i <= 3; $i++) {
$Worksheet->Hyperlinks()->Add(
$Worksheet->Range("A${i}"),
"http://www._.com/" . $data[$i - 1]->[0] . "/");
}
のようにループを回して処理しているのですが、
データ数が多くなると分単位で時間がかかってしまう点が難点です。
Hyperlinkが定数であれば、下記の一括挿入が可能なのですが、
URLの一部にセルのデータを使用した場合のHyperlinkの
効率的な挿入方法はないものでしょうか?
$Worksheet->Hyperlinks()->Add(
$Worksheet->Range("A1:A3"), "http://www._.com/sample/");
VBA寄りの内容かもしれませんが、ご存知の方がありましたら、
ご助言頂ければ幸いです。
0284名無しさん@お腹いっぱい。
01/09/24 12:56ID:???(誤)
@data = (
[ qw(dataA1, dataB1, dataC1) ],
[ qw(dataA2, dataB2, dataC2) ],
[ qw(dataA3, dataB3, dataC3) ]
);
(正)
@data = (
[ qw(dataA1 dataB1 dataC1) ],
[ qw(dataA2 dataB2 dataC2) ],
[ qw(dataA3 dataB3 dataC3) ]
);
よろしくお願いします。
0285名無しさん@お腹いっぱい。
01/09/24 13:16ID:4RAmdUnsURLの配列を作ってから一括代入するのはどうすか?
@cells = map { [ map { 'http://www.xxx.com/' . $_ } @$_ ] } @data;
$Worksheet->Range("A1:C3")->{Value} = \@cells;
0286名無しさん@お腹いっぱい。
01/09/24 13:56ID:???~~~~~~~
笑える。
0287名無しさん@お腹いっぱい。
01/09/24 13:57ID:???~~~~~~
0288名無しさん@お腹いっぱい。
01/09/24 14:50ID:???レスありがとうございます。
舌足らずで、説明不足だったようです。どうもすみません。
実現したい内容は、セル自身はURLそのものではなくリンクの一部を表し、
それを使ったリンクを同じセルに埋め込みたいということです。
例えば、URLの一部になるセルのデータとしてISBNや2chのスレIDなどが入っており、
その隣に書名なりスレ名なりが入力されているような状況を想像下さい。
そして、該当リンクへジャンプするとAmazonや2chに実際に飛んで、
具体的な情報が見れるような使い方を考えています。
実際に考えている使用方法では、セル自身のデータがCGIのquery情報を保持しており、
それ自身が意味を持った値ですので、
セルの値にHyperlinkを直接もつというのは避けたいところです。
引き続き、情報お待ちしております。
0289名無しさん@お腹いっぱい。
01/09/24 15:54ID:GhpSecZ2<form method="post" action="enquete.cgi">
"送る"を選ぶとなぜか
"次の場所からダウンロードするように選択しました"
となってcgiのテキストを開こうとします
本のCDからデータをコピーしたので打ち間違えではないのですが、、、
何が悪いのでしょうか?
0290名無しさん
01/09/24 15:56ID:1qyod3pU0291名無しさん@お腹いっぱい。
01/09/24 15:58ID:???または、IEの場合、*.cgiのファイルをテキストエディタ等に関連付けしてある状態で、
Content-Type: text/plainのCGIにアクセスすると、ダイアログが出るという状況が確認されています。
0292名無しさん@お腹いっぱい。
01/09/24 15:58ID:???ヘッダの情報が間違ってるとか。
0293名無しさん@お腹いっぱい。
01/09/24 16:13ID:GhpSecZ2>>290
ローカルなのですがApache/htdocsに入れました
>>291
*.cgiはメモ帳のアイコンになってますこれがまずいのでしょうか?
>>292
ヘッダってどこのことですか?
0294名無しさん@お腹いっぱい。
01/09/24 16:27ID:???> *.cgiはメモ帳のアイコン
ですね。関連付けを外したら直るかと。
ヘッダとは、Content-Type: text/plain とかのこと。
0295名無しさん@お腹いっぱい。
01/09/24 16:53ID:bJzfeBUIありがとうございます
それでどうやって関連付けを外すのですか?
申し訳無い
Content-Type: text/htmlというのならcgiデータに書いてあります
0296名無しさん@お腹いっぱい。
01/09/24 17:17ID:???どうしましょ。
関連付けはwin板ですかね。
0297名無しさん@お腹いっぱい。
01/09/24 17:43ID:???Wクリックでメモ帳で編集出来るようになってるだけだから。。。
0298名無しさん@お腹いっぱい。
01/09/24 17:44ID:AOw736z6暗号化のやり方がわからない・・・
0299名無しさん@お腹いっぱい。
01/09/24 17:53ID:???それ良く聞くけど、関連付けは関係無いと思うぞ。
インターネットの(外の)サーバのCGIではそんな風にならないんだろ?
だったら99%httpdの設定だって、WINは知らないけどApacheのconfファイル
見てみ。
>>298
$cryptpass = crypt ($plainpass,salt);
で$cryptpassをURLエスケープする
0300-
01/09/24 17:57ID:qSV25GfUhttp://members.tripod.co.jp/bingo852/
0301名無しさん@お腹いっぱい。
01/09/24 18:01ID:???text/htmlなら何ら関係ないけど。
>>300
よく飽きないね。いい加減ウザイ。
0302名無しさん@お腹いっぱい。
01/09/24 18:06ID:???そっか・・漏れデバッグの時plainで吐いてるけどなった事無かったから ゴメソ
じゃtext/html出してる前提で
httpd.confを触ってみて、多分Option辺りだと思うから。。
0303295
01/09/24 18:10ID:bJzfeBUIフォルダオプション-ファイルタイプで削除して
*.cgiがwinのアイコンになったのですが
"送る"を押すとブラウザにcgiデータのテキストが出てきてしまいます
>>299
httpd.confというのは本に書いてあるように設定したのですが、、、
0304名無しさん@お腹いっぱい。
01/09/24 18:20ID:???とりあえず、そのCGIは具体的に何するんですかね?
掲示板のようなCGIだと仮定してみる。
普通にtext/htmlを返すのが問題無いとして、
余程変にいじってないApacheならば問題ないはずだが。
0305295
01/09/24 18:22ID:bJzfeBUIServerName 127.0.0.1・・・Servername new host.name下に書き足し
Options FollowSymLinks ExecCGI・・・ExecCGIを書き足し
Options Indexes FollowSymLinks ExecCGI・・・MultiViewsをExecCGI
AddHandler cgi-script .cgi・・・#を削除
perl、cgiのみだと動くのですが、
html、shtmlに組み込むとまったく動きません
0306295
01/09/24 18:26ID:bJzfeBUIhtmlのformを使って書き込まれた内容を
cgiを使ってdatファイルに書き込むというモノなのですが、、、
0307名無しさん@お腹いっぱい。
01/09/24 18:28ID:???もしくはdatに飛ばしてるとか。
0308名無しさん@お腹いっぱい。
01/09/24 18:28ID:???0309295
01/09/24 18:41ID:EJKgIokw----enquete.cgiの内容----
#!C:/Perl/bin/perl
# ライブラリ
require 'cgi-lib.pl';
# デコードサブルーチン
&ReadParse(*form);
# ライブラリ
require 'jcode.pl';
# 文字コード変換サブルーチン
&jcode'convert(*form,'sjis');
# 連想配列から値だけを取り出し、区切りのハイフンを追加
$data = "$form{'name'}\n$form{'mail'}\n$form{'sex'}\n$form{'age'}\n$form{'kansou'}\n\n----------\n\n";
# 追加書き込みモード
open(ENQ, ">>enquete.dat") || die "File 'enquete.dat' Open Error.";
#flock(ENQ, 2);
print ENQ $data;
#flock(ENQ, 8);
close(ENQ);
# -----ここから出力 -----
print "Content-type:text/html\n\n";
print << "END_OF_HTML";
<HTML>
----お礼のページが開くようです----
0310295
01/09/24 18:46ID:EJKgIokwデータは付属CDからコピぺしたので動くはずなのですが、、、
0311名無しさん@お腹いっぱい。
01/09/24 19:16ID:???<html><body><FORM method="post" action="hello.cgi">
<input type=submit value="post実験></FORM>
これPOST
生でCGI開いてGET、おかしかったらHTTPDの設定が悪い
検索したら、出てきた。
http://www.shoeisha.com/book/errata/er_detail.asp?bid=1222
http://www.google.com/search?q=WIN+CGI+EXEC+APACHE&hl=ja&lr=lang_ja
0312名無しさん@お腹いっぱい。
01/09/24 19:34ID:AOw736z6アドバイスありがとうございます。
が・・・全くわかんないです。
簡単なプログラムのソース書いていただけないでしょうか?
お願いします。
0313名無しさん@お腹いっぱい。
01/09/24 19:49ID:???print "Content-type: text/html\n\n<html><h1>Hello";
↑ これhello.cgiで保存
<html><body><FORM method="post" action="./hello.cgi">
<input type=submit value="post実験"></FORM>
↑ これhello.htmlで保存
ボタン押しても、直接CGI開けても「Hello」が見えないと駄目
で、何が悪いかと言うと大体Apacheの設定が悪いかWINの設定が悪い
お小言言わせて貰うとさ、「一週間でCGI」←このタイトルからしてダメ
●HTMLが書ける。
●自宅で試すならHTTPDの設定が出来る。
●Perlのプリント文が書ける。
これ3つとも出来ないとまともに動かない、だから一つづつマッタリと
遊びながらやった方が簡単なんだよね。
だから、どかっっとソース貼られてもアドバイスのしようが無い
「結局ドキュメントルート見えてませんでしたっ」とかも良く有る
で上の感じだと多分HTTPDの設定が間違えてるっぽいから
googleのリンクで調べてちょってわけ
0314名無しさん@お腹いっぱい。
01/09/24 19:56ID:???>>311にソースが既に書いてあるのに、>>312見て愕然。
ちなみにスレ違いだったな。
http://corn.2ch.net/test/read.cgi?bbs=php&key=1000804655&ls=50
0315312
01/09/24 20:00ID:AOw736z6スマソ。漏れは下のほうに答えたんです。
パスワードを暗号化してクッキ〜に保存するソースを知りたいんです。
0316ほれ
01/09/24 20:15ID:???http://www.google.com/search?hl=ja&q=%83N%83b%83L%81%5B+%83G%83%93%83R%81%5B%83h&lr=lang_ja
0317315
01/09/24 20:31ID:AOw736z6ありがとうございます。
暗号化する方法はわかったんですが、どうやってクッキーの保存、読み出しと組み合わせればいいんですか?
0318もち米100%
01/09/24 20:44ID:???ありがとうございます、やっぱりお手軽なのはリネームになりますか。
ショッピングカートとかこんな感じのトランザクションをどうやって保証してるんだろう
例えば最悪のタイミングでSIG{TERM}投げられたらどうしようとか、
2chのdjはsubjectの書き換えで0バイト読み込みしちゃってると思うんですが
考え出すときりが無いですよね。
取り合えずム板の参考書スレを読み直してみます。 レス感謝〜
0319むぎ茶
01/09/24 20:55ID:???┐(´ー`)┌
┏━━━━━━━━━┓
┃('Д')y ─┛~~ ┃
┃むぎ茶 ┃
┃mugicha@360.cc ┃
┗━━━━━━━━━┛
0320名無しさん@お腹いっぱい。
01/09/24 21:18ID:???0321名無しさん@お腹いっぱい。
01/09/24 21:58ID:.PROECLArequire'jcode.pl';
&jcode'convert(*data,'sjis');
print"Content-type:text/html\n\n";
if($data eq "hehehe"){
print<<EOF;
<html>
<head>
<title>ビィンゴー!</title>
</head>
<body>
正解じゃい!!<BR>
文句あるんか?
EOF
}
print<<EOF;
間違ってる
</body>
</html>
EOF
exit;
というのを作りました。
間違ったパスを入れるとちゃんと動くのですが、正解を入れると
正解の文字と間違った時の文字の両方が出てきます。
何か間違ってますか?
0322名無しさん@お腹いっぱい。
01/09/24 22:07ID:???if(){}else{}を使おう。
条件分けというものを一から勉強しなおした方がいい。
0323322
01/09/24 22:14ID:???一応ヒント。
・正解の時にだけ出すHTML
・間違いの時にだけ出すHTML
・正解でも間違いでも必ず出すHTML
を自分で理解しよう。
間違ったパスを入れた時も、ちゃんとは動いてないぞ。
HTMLソースを見てみな。
0324名無しさん@お腹いっぱい。
01/09/24 23:52ID:???0325321
01/09/24 23:52ID:.PROECLAすいません。勉強しなおして解決することができました。
elseで解決しました。また1箇所構文が間違っていてそれも修正して
うまく動作するようになりました。
ありがとうございました。
0326名無しさん@お腹いっぱい。
01/09/25 16:02ID:rq8B7jsc質問しようと思いブラウザを開きましたが、やはり質問する前にもう一度見直してみようと思い
2時間掛けて見直したらどうにか直りました。
何度か見直していたのですがやはり見落としがありました。
どうでもいいことなのですが・・・
0327名無しさん@お腹いっぱい。
01/09/25 16:04ID:???0328名無しさん@お腹いっぱい。
01/09/25 16:13ID:???0329名無しさん@お腹いっぱい。
01/09/25 16:27ID:???0330名無しさん@お腹いっぱい。
01/09/25 16:28ID:???構文チェックしよう。
perl -wc hoge.pl
>>328
@files = map { $_->[0] } sort { $b->[1] <=> $a->[1] } map { [$_, (stat)[9]] } @files;
0331329
01/09/25 16:34ID:???0332名無しさん@お腹いっぱい。
01/09/25 16:40ID:???statを呼ぶ回数が多くなって効率が悪い?・・・
0333329
01/09/25 16:55ID:???use Benchmark;
timethese(96, {
'329' => \&prog329,
'330' => \&prog330,
} );
sub prog329 {
opendir(DIR, './');
my @files = readdir(DIR);
closedir(DIR);
@files = sort { (stat $a)[9] <=> (stat $b)[9] } @files;
}
sub prog330 {
opendir(DIR, './');
my @files = readdir(DIR);
closedir(DIR);
@files = map { $_->[0] } sort { $b->[1] <=> $a->[1] } map { [$_, (stat)[9]] } @files;
}
--------------------------------------------------------------------------------------------
Benchmark: timing 96 iterations of 329, 330...
329: 2 wallclock secs ( 1.54 usr + 0.51 sys = 2.05 CPU) @ 46.83/s (n=96)
330: 1 wallclock secs ( 0.56 usr + 0.17 sys = 0.73 CPU) @ 131.51/s (n=96)
結構差が出るな。
0334名無しさん@お腹いっぱい。
01/09/25 17:05ID:???CPU Pentium200MHz
RAM 224MB
HDD 知らん
OS Vine Linux 2.1
Perl 5.6.1
0335名無しさん@お腹いっぱい。
01/09/25 17:44ID:???このソート方法、良く見るんだけど未だに理解出来ない。。。
どっか解説してくれるサイトなあい?
0336名無しさん@お腹いっぱい。
01/09/25 17:51ID:???右から見ていけば分かりやすいかと。
0337名無しさん@お腹いっぱい。
01/09/25 17:56ID:vAuR/uTY0338名無しさん@お腹いっぱい。
01/09/25 17:57ID:zsF862DAと一緒でしょ。やってることは。
0339名無しさん@お腹いっぱい。
01/09/25 17:57ID:???0340名無しさん@お腹いっぱい。
01/09/25 17:59ID:???@files = sort { $ck{$b} <=> $ck{$a} } @files;
↑
こっちの方が早い
0341名無しさん@お腹いっぱい。
01/09/25 18:41ID:???まぁお好みで。
0342名無しさん@お腹いっぱい。
01/09/25 18:45ID:TUKvDv4A0343名無しさん@お腹いっぱい。
01/09/25 18:47ID:???環境による。
0344名無しさん@お腹いっぱい。
01/09/25 18:47ID:???自分で調べろ。
keys %ENV
0345名無しさん@お腹いっぱい。
01/09/25 18:49ID:???0346まげ
01/09/25 22:27ID:???自動チンコかきそふとを作ってください
0347名無しさん@お腹いっぱい。
01/09/25 23:27ID:???暫らくすると蟻が沢山寄ってくるのでそれをパンツに突っ込んで下さい。
上級者向けだけど・・・・頑張って!!
0348名無しさん@お腹いっぱい。
01/09/26 07:22ID:TfbH1r3A0349名無しさん@お腹いっぱい。
01/09/26 08:46ID:???自分で調べろ。
0350JAPU
01/09/26 09:12ID:???0351らくだ
01/09/26 15:40ID:???そういうときに簡単に関数の呼び、呼ばれリストが作成できるツールってないのかな?
0352名無しさん@お腹いっぱい。
01/09/26 15:46ID:???0353らくだ
01/09/26 15:55ID:???JavaのForteとかJbuilderみたいな。
0354名無しさん@お腹いっぱい。
01/09/26 17:11ID:???全文検索
0356名無しさん@お腹いっぱい。
01/09/26 17:15ID:???0357名無しさん
01/09/26 17:20ID:mymJ1qjA0358名無しさん@お腹いっぱい。
01/09/26 17:25ID:???まぁ必要だから聞いてるんじゃない?
つーか関数100個以上・・・・。
モジュールとかに分けろよ。
そっちがよっぽど厨房ゲフンゲフン
いやその前に関数多けりゃどうって話じゃねーだろ。
0359名無しさん@お腹いっぱい。
01/09/26 17:31ID:???馬鹿ばっかだな。
0360名無しさん@お腹いっぱい。
01/09/26 17:39ID:???0361名無しさん@お腹いっぱい。
01/09/26 17:40ID:???0362名無しさん@お腹いっぱい。
01/09/26 18:00ID:???0363らくだ
01/09/26 22:15ID:???モジュールでも共通度が高いと意味がない。
厨房SEはとりあえず黙って逝ってください。
あとgrepじゃ、全体が把握できないでしょ?
君は厨房UNIX使いだから逝っといてね。
0364名無しさん@お腹いっぱい。
01/09/26 22:18ID:SfAEbkLcプロファイラで代用するのは?
(1) hoge.plを実行してプロファイルtmon.outを作成
perl -d:Dprof hoge.pl
(2) tmon.outを解析して関数呼び出しのツリーを表示
dprofpp -t
ただし、あくまでもプロファイラの機能の一部なので、
実際に呼ばれた関数を記録して表示するだけ。
351の意図するところと多少違うとは思う。
0365名無しさん@お腹いっぱい。
01/09/26 22:32ID:???困った君だね。
0366名無しさん@お腹いっぱい。
01/09/26 22:41ID:???0367名無しさん@お腹いっぱい。
01/09/26 23:12ID:???0368当方へたれ
01/09/26 23:18ID:???http://www.bekknet.ad.jp/~bero/docj/module/03/index.html
関数呼び出しリストならPerlで書けそう。
へたれには無理だが。
つーか関数が把握できなくなるような設計はヘボだと思う。
strict使ったり,パッケージ分けやプロトタイプ宣言とか
スコープ狭くしたりすれば,あるていどはマシになるかと
0369名無しさん@お腹いっぱい。
01/09/27 01:01ID:wv3pEXiA0370名無しさん@お腹いっぱい。
01/09/27 01:14ID:???激しく同意。
>解答者を質問者が煽るというのが最近の流行りなのか?
らくだ氏は明らかに精神を病んでおられるので・・・・
0371名無しさん@お腹いっぱい。
01/09/27 02:55ID:Mu4f6YjEな書き方ができないのを今始めて知った。
なぜだ。何か問題があったのか。
03721
01/09/27 03:00ID:SujucJS2http://www.f2.dion.ne.jp/~impact14/
0373名無しさん@お腹いっぱい。
01/09/27 03:01ID:???forに修飾子はありません。
for修飾子が成立する時はforeachとして解釈されます。
よって()の中はリスト値でなければいけない、と。
0374371
01/09/27 03:27ID:Mu4f6YjEさんきゅう ふぉー ゆあ かいんどねす
そういえば、
print for(1..10);
みたいなことはできるんだよな。なるほど納得。
でも、senetense for(;;) で使ったときに、なんか不味いことでもあるんかなぁ。
見栄え上というか、他の意味と取り違えやすくなったりとか?
0375373
01/09/27 03:40ID:???修飾子の時は sentense for 1..10 みたいに書ける。
というか、自分は(1..10)みたくカッコ付けないです。
んで、(;;)の場合はカッコ無いと死んでしまう。
結局構文解釈上の問題なのかな?と。
# 多いに外している可能性があります。
# 識者の補足/説明希望。
0376名無しさん@お腹いっぱい。
01/09/27 14:58ID:199fgLMYActiveState社からVisual Perlが出ています。ただし有償ですけど。
ActivePerlは無償なんだけど、Debuggerは有償なんですね、ここ。
0377Perlあまちゅあ
01/09/27 15:34ID:n78xCnwcどうすれば良いのでしょう?
(例えば、コマンドラインで、パスワードを入力するときに、8文字なら8文字と決まっていて、
9文字目は入力しても、画面には表示されない。)
OS非依存が良いのですが、依存せざるを得ないのであれば、Win依存でお願いします。
(キーが押されたってことを検出できれば、それをループでまわせるとは思うんですが、
C言語のgetche や kbhitに相当するPerl関数がわからないんです。。とほほ。。。。)
厨な質問ですみません。(「CGIに依存しないPerlの話題一般」とのマルチポストでスンマソン)
0378名無しさん@お腹いっぱい。
01/09/27 15:43ID:???0379名無しさん@お腹いっぱい。
01/09/27 17:02ID:???そのまま掲示板に掲載することのできるCGIはありませんか?
0380名無しさん@お腹いっぱい。
01/09/27 17:14ID:???0381名無しさん@お腹いっぱい。
01/09/27 17:27ID:088OSBr6色々調べてみたのですが不明です。
0382むぎ茶
01/09/27 18:09ID:???┐(´ー`)┌
┏━━━━━━━━━┓
┃('Д')y ─┛~~ ┃
┃むぎ茶 ┃
┃mugicha@360.cc ┃
┗━━━━━━━━━┛
0383名無しさん@お腹いっぱい。
01/09/27 18:32ID:2d.Y65HwLWP::UserAgentを使ってPDA用中継サーバーを実験で作っています。
サーバーから送信されたcookieを受信して
$cookie_jar->save( $file );
でファイルに書き出すことはできたのですが
内容を要素毎に取り出す方法がよくわかりません。
要素毎に取り出してクライアントのブラウザに登録したいのですが
どのようにしたらいいのでしょうか?
初心者スレッドでする質問でもないような気がしますがほかに
いいスレッドがなかったのでここに質問しました。
0384Mr.ちん
01/09/27 18:43ID:Va6tTvlc質問があります。
CGI単体で指定フレームにリンクを飛ばせるものですか?
HTMLのMETAとか
Javascriptのlocationとかを吐き出させる方法以外で。
できるか、できないかだけでも教えてください。
宜しくお願いします。
0385名無しさん@お腹いっぱい。
01/09/27 19:00ID:???0386名無しさん@お腹いっぱい。
01/09/27 19:12ID:???0387名無しさん@お腹いっぱい。
01/09/27 19:21ID:???HTTP::Cookieって使ったこと無いけど、どんな風にcookieがファイル
に書き出されるの?
書き出されたファイルを見れば分かりそうなもんだと思うのだが。
0388名無しさん@お腹いっぱい。
01/09/27 20:00ID:???Cで出来ることがわかっているなら、Cでやったら?
このあたりは環境依存は仕方ない気がする。
モジュールあさればあるんだろうけど。
> h2xs -An Win32::Getch
## Getch.xs
#include <conio.h>
MODULE= .. PACKAGE = .. PREFIX = _
int
_getch
int
_getche
int
_kbhit
## Getch.pm
our @EXPORT = qw(getch getche kbhit);
> perl Makefile.PL
> nmake
> nmake install
> perl -MWin32::Getch -e "print chr(getch) while $c++ < 8
0389名無しさん@お腹いっぱい。
01/09/27 20:17ID:???http://dir.yahoo.co.jp/computers_and_internet/internet/world_wide_web/HTTP/
0390名無しさん@お腹いっぱい。
01/09/27 21:01ID:???どれに対するレスなのかまったくワカリマセン。
0391名無しさん@お腹いっぱい。
01/09/27 22:56ID:???どれに対するレスなのかまったくワカリマセン。
0392名無しさん@お腹いっぱい。
01/09/27 23:04ID:???( ´,_ゝ`) あっそー
0393383
01/09/27 23:05ID:???でできました
0394377
01/09/28 02:51ID:AKSYR8.cやっぱり、教えていただいたみたいに、C関数呼び出すしかないのかな〜。
んでもありがとう。とりあえず、これで良しとします。
CPANもちょと逝てきます。
0395名無しさん@お腹いっぱい。
01/09/28 07:17ID:WAa6BHU6$scalar = @array;
だと$scalarには@arrayの長さが代入され、
($scalar) = @array;
だと@arrayに入っている最初の要素が代入されます。
配列変数がどのようなものかは大体理解できました。
でも・・・。
$scalar = localtime;
print "$scalar\n";
とすると
Fri Sep 28 06:14:13 2001
という現在の結果が帰ってきます。
連想配列の場合、$scalarが括弧で括られているかそうでないかで結果が違うの
に、
$scalar = (localtime)[0];
($scalar) = (localtime)[0];
は同じ結果(秒)が帰ってきました。
$scalar = localtime[0];
とすると
この場合は[]にどんな数字を入れても
Thu Jul 13 20:14:04 1978
という結果が帰ってきます。
localtime()って配列関数の一種ではないのでしょうか?
どういう仕組みになっているのか把握できず、混乱しています。
よろしくお願いします。
0396名無しさん@お腹いっぱい。
01/09/28 10:47ID:B/jfCTJobのファイルに書き込むというのを考えているのですが
aがロックされているとき(またはbのファイル)という定義は
どのようにすればいいのでしょうか?
それともただ単にaファイルに書き込みできずにエラーとなったら
bファイルに書き込むという風にするしかないのでしょうか?
0397JAPU
01/09/28 10:59ID:???if(not flock FH, LOCK_EX|LOCK_NB) {
print "ロック中\n"
}
flock は advisory lock なんで、ロックでも操作できます。なので、そういう場合は flock で調べるしか無いです。
LOCK_EX ... exclusive lock
LOCK_NB ... do not block (ロックが成功するまで待たない)
0398396ではないが
01/09/28 11:25ID:Qms.AdhUってこと?
初心者なものでifでこういうの初めてみました。
0399JAPU
01/09/28 11:48ID:???0400396
01/09/28 12:08ID:Aoj3kwsYありがとうございます。まさかこんなに早くレスがつくとは思いませんでした。
ifでこんな風にもできるんですね。まだまだ修行がたりないようです。
なかなか使える感じです。
ありがとうございました。
0401名無しさん@お腹いっぱい。
01/09/28 12:48ID:d/jxwhAUlocaltimeは「スカラーコンテキスト」で評価されるとスカラー、
「リストコンテキスト」で評価されるとリストを返すから。
これで前半3つは理解できるはず。
で、最後の localtime[0]は、localtime([0])のカッコ省略形とみなせる。
つまりlocaltimeに [0]という引数を渡しているわけ。
[0]というのは無名配列へのリファレンスなので、
数値として評価すると何かの数値(そのアドレス?)が得られるんでしょう。
実際の[0]の値は↓これで見れるはず。
print [0], "\n"; #[0]をリファレンスとして表示
print [0]+0, "\n"; #強引に数値化して表示
0402名無しさん@お腹いっぱい。
01/09/28 12:58ID:???0403名無しさん@お腹いっぱい。
01/09/28 13:13ID:Aoj3kwsYkeysでいいんじゃない
0404名無しさん@お腹いっぱい。
01/09/28 13:18ID:LKBMQiGkopen(FH, "a") || open(FH, "b")||die "File 'data' Open Error.";
aがダメならbをFHとしてopenとかでも良くない?
0405JAPU
01/09/28 13:22ID:???ってことですか?
ロックされていても open 自体は成功しますが...
flock はあくまでも advisory lock なんで。
0406404
01/09/28 13:34ID:LKBMQiGkではロックされてても追加で書き込みとかできるってことですか?
すいません。初心者なもので・・・
0407むぎ茶
01/09/28 14:10ID:???頭大丈夫か?(n
┐(´ー`)┌
┏━━━━━━━━━┓
┃('Д')y ─┛~~ ┃
┃むぎ茶 ┃
┃mugicha@360.cc ┃
┗━━━━━━━━━┛
0408名無しさん@お腹いっぱい。
01/09/28 14:13ID:PZbmJOfw0409名無しさん@お腹いっぱい。
01/09/28 14:27ID:???kyesだと真偽しか返ってきません。
一回keysで展開してカウントする以外にありますか??
0410名無しさん@お腹いっぱい。
01/09/28 14:31ID:???openできる。
読み書きもできる。
ロックはできない。
だと思ふ。
0411名無しさん@お腹いっぱい。
01/09/28 14:42ID:???それしかないと思うけどー。
よく見る例。 $n = scalar(keys(%hash));
0412名無しさん@お腹いっぱい。
01/09/28 15:00ID:PZbmJOfwflock中のファイルはopenも出来て書き込みも出来るの?
それじゃロックの意味がないんじゃない?
カウンターとかでflockよくみるけどあれはファイルを同時アクセス
とかでなるべく壊さないようにロックするんでしょ?
じゃなきゃロックに意味がないよ〜
0413名無しさん@お腹いっぱい。
01/09/28 15:05ID:???もう少し考えてから発言する事を要求する。
0414JAPU
01/09/28 16:32ID:???flock ってのは「このファイルは俺が使うから誰も触るなよ」
って宣言するだけです。礼儀正しい人は「もう触ってもいいよ」って言われるまでは触りません。礼儀正しくない人は構わず触っちゃいます。ただそれだけです。つまり、単なる紳士協定。OK?
# これ以上簡単な説明は出来ないよ。
----
あと、共有ロック (LOCK_SH) に関して蛇足。
これは「共有ロックの人だけは何人同時に触っても良いよ」ってロックです。読み取りのみが必要な場面で使います。
排他ロック (LOCK_EX) する場合は共有だろうが排他だろうが1人でもロックしていればロックできません。
0415名無しさん@お腹いっぱい。
01/09/28 16:53ID:3TgAXZr.flock(FH,8)
0416名無しさん@お腹いっぱい。
01/09/28 16:54ID:IDlsq36I0417名無しさん@お腹いっぱい。
01/09/28 17:44ID:???0418名無しさん@お腹いっぱい。
01/09/28 20:05ID:OpN/lBYw0419丸出し
01/09/28 22:09ID:DkMaxtU.変数$tmpにどんどん追記していくには
どんな関数を使えばよいのですか?
丸出しで申し訳ないですが。
0420名無しさん@お腹いっぱい。
01/09/28 22:11ID:???$tmp = 'hoge';
$tmp .= 'fuga';
print $tmp; # hogefuga
0421>419
01/09/28 22:18ID:???ちょっと守りを固めすぎですよ(w
0422丸出し
01/09/28 22:18ID:DkMaxtU.スクリプトいろいろ見てて
"."ってなんだろ?って思ってたんですが
そういう事だったんですか!
即レス感謝!ありがとう〜!
0423丸出し
01/09/28 22:20ID:DkMaxtU.自慢じゃないですが
ディフェンス力の強さだけは
結構高いんですよねw
どうもでした〜。
0425名無しさん@お腹いっぱい。
01/09/29 09:48ID:???どれくらいの事ができたら「脱初心者」といえるのでしょうか?
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
0426名無しさん@お腹いっぱい。
01/09/29 10:11ID:???たとえば1/10秒とか1/100秒って指定できないのかな?
sleep(1/10);
とかってやってみたけど無視されてるようなきがするんだけど
0427_gunzip
01/09/29 10:15ID:???sleep()は秒単位です。
ミリ秒単位でsleepしたい場合はselect()システムコールを用いるか、
Time::Hiresモジュール(Perl5.7.1からは標準)を利用してください。
select(undef, undef, undef, 0.1);
or
#!/usr/bin/perl
use Time::Hires qw[ sleep ];
sleep(0.1);
0428名無しさん@お腹いっぱい。
01/09/30 00:52ID:sHi5SnW.識者の皆さん、ありがとうございます。
私も皆さんに追いつけるよう、努力していきたいと思います。
0429名無しさん@お腹いっぱい。
01/09/30 00:52ID:???HTMLファイルに書き出す時、
.= で、追記したものを、
HTMLファイルに書き出してるんだけど、
これ以外にいい方法ってありますか?
0430名無しさん@お腹いっぱい。
01/09/30 03:44ID:???print文を健作してくだサイ
0431名無しさん@お腹いっぱい。
01/09/30 09:16ID:dIMlyAZMどれくらいの事ができたら「脱初心者」といえるのでしょうか?
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
0432名無しさん@お腹いっぱい。
01/09/30 11:12ID:???>>429
同じく意味が分からんけど、ファイルに書き出すって事?
print "hogehoge";#は知ってるはず
print<<"_HTML_";
hogehoge
_HTML_ #でもいいし
print HTML <<"_HTML_";
hogehoge
_HTML_
とか結構適当に書けば色々出来るよ :-)
0433太田@モナー板固定
01/09/30 11:59ID:???A2GIFという手法で、OS依存しないAA表示を実現させようと考えています。
Windows用ツールは自作、マック用ツールはとある方に作っていただいたんですが、
できればブラウザ上で表示させたいな、などと思っています。
私はPerlとかあんまり知らないのですが(ソースとかは少しなら分かるのですが)、
とある方に作っていただいたソースがあります。しかしPerlの設置・運用に関する
知識がまるで無いので、どう活用すればいいのか分かりません(泣)
みなさんの力を貸して頂きたいのです・・・どうかよろしくお願いします。
(A2GIF)文字のコードを読んでをgifに置き換え、画像として表示させることで、
ブラウザ依存/OS言語依存無しで2ちゃんねるAAの表示が可能です。転送量が膨大に
なってしまうのが欠点ですが・・・例えば( ´∀`)を変換すると下のようになります。
<html><body>
<img src=font/18line.gif><img src=font/sjis8169.gif><img src=font/sjis8140.gif><img src=font/sjis814C.gif>
<img src=font/sjis81CD.gif><img src=font/sjis814D.gif><img src=font/sjis816A.gif><br>
</body></html>
アップ.HP http://www42.tok2.com/home/hekomuyo/
通常版 http://www.geocities.co.jp/SiliconValley-Cupertino/9474/aameasure.lzh (約200KB)
A2GIF版 http://www.geocities.co.jp/SiliconValley-Cupertino/9474/aameasure_a2.lzh (約600KB)
ソース http://www.geocities.co.jp/SiliconValley-Cupertino/9474/aameasure_src.lzh (10KB未満)
M.A.C.用 http://www07.u-page.so-net.ne.jp/rg7/yu-ya/warez.html
Perl版.? http://green.jbbs.net/computer/bbs/read.cgi?BBS=391&KEY=1001606806&END=100
注)「Win版のソースが汚い」というクレームは受け付けていません(苦笑)
0434名無しさん@お腹いっぱい。
01/09/30 13:14ID:???意味不明申し訳ないです。cgiファイルではなくてHTMLファイル化ということです。
出力結果部分を.htmlファイルにする方法で.=を使ってますが変なので、
良い方法をご教授願いたいと思っています。宜しくお願いします。
$logfile = "kakidashi.html";
$syuthuryoku = "オマエモナー\n";
#以下の部分を一まとめにして、$htmlに代入する方法とかあるのかな?
$html .= "<html>\n";
$html .= "<head><title>この方法は変でしょ</title>\n";
$html .= "<body>\n";
$html .= "HTMLの出力結果は、$syuthuryoku\n";
$html .= "</body>\n";
$html .= "</html>\n";
open (OUT,">$logfile") || &error('オープンエラー');
print OUT ($html);
close (OUT);
&header();
print "<a href=./kakidashi.html>出力ファイル</a>";
sub error {
&header();
print "<body>$_[0]</body></html>\n";
}
sub header {
print "Content-type: text/html\n\n";
print "<html><head><title>この方法は変でしょ?</title></head>\n";
}
0435名無しさん@お腹いっぱい。
01/09/30 13:19ID:Bs/Yjz32UAに依存しないAAですか。いいっすね。
0436435
01/09/30 13:23ID:???なんか効率悪そうですね。gifcat(dog)とかで繋げられないかな?
0437名無しさん@お腹いっぱい。
01/09/30 13:24ID:LmdMp5e6よくわからんが、web上でCGIとして動かしたいって事?
だとしたら、gatewayのサーバー立てて、そこにCGIを設置して、
httpリクエストでAAを取得→A2GIFに渡す→結果を返す
んでいいじゃない?
0438太田@モナー板固定
01/09/30 13:25ID:???カウンターを繋げたりする方法でしょうか。
1行1画像くらいにできれば効率上がりそうですね。
0439太田@モナー板固定
01/09/30 13:29ID:???えーと・・・どうやるのでしょう?(汗)
自分のPCではちょっと鯖立ては難しいので、
トクトクでやりたいのですが、どうでしょうか・・・。
0440名無しさん@お腹いっぱい。
01/09/30 13:29ID:LmdMp5e6open (OUT,">$logfile") || &error('オープンエラー');
print OUT qq{
<html>
<head><title>この方法は変でしょ</title>
...
};
close (OUT);
0441名無しさん@お腹いっぱい。
01/09/30 13:34ID:LmdMp5e6トクトクは知らんが。
それ以前に、ユーザーインターフェイスの仕様をもうちょっと煮詰めた
方がいいと思われ。
動作イメージがさっぱりわからん。
0442太田@モナー板固定
01/09/30 13:38ID:???案1:画面上に入力フォームがあって、そこにAAをコピペ、変換ボタンを押すとA2GIF形式のhtmlが表示される
案2:URLを入力するところがあって、変換ボタンを押すとURL先の内容がA2GIF形式に変換される
案1はちょうど掲示板の入力のような感じで、
案2は確か「幼児語化計画」のようなものです。
0443名無しさん@お腹いっぱい。
01/09/30 13:57ID:SdkZLPb6flock(COUNT,2);
$counter = <COUNT>;
$counter1 = ++$counter;
seek(COUNT, 0, 0);
print COUNT "$counter1\n";
close(COUNT);
flock(COUNT,8);
print "Content-type: text/html\n\n";
print <<EOF;
<HTML>
<BODY>
<CENTER>
<FONT size="5"><B>
$counter1
</B></FONT>
</CENTER>
</BODY>
</HTML>
EOF
というのでテキストカウンターを作ったのですが表示したいHTMLに
<img src="hehehe.cgi">という風にしても表示されません。
テキストのみのカウンターの場合はどのように表示させてば
いいのでしょうか?
もちろん単体でしたらうまく機能しています。
0444名無しさん@お腹いっぱい。
01/09/30 13:59ID:???$html = <<"__KOKOMADE__";
<html>
<head><title>それならヒアドキュメントでいいっす</title>
<body>
HTMLの出力結果は、$syuthuryoku
</body>
</html>
__KOKOMADE__
0445コピペ職人
01/09/30 14:35ID:???select HOGE;
print "<html><head></head>";
print <<"_HTM_";
<body>
これselect忘れると変になるんだよなー
</body></html>
_HTM_
0446名無しさん@お腹いっぱい。
01/09/30 14:41ID:E6kRmxB6案2のほうは437や441が言ってるやつね。CGIプロクシ形式。
無料レンタルサーバだとできないように設定されてることが
多いけど、トクトクはどうなんかねー。
とりあえず、案1はどのサーバでも大丈夫だからやってみれば。
いま使ってる掲示板スクリプトはどんなやつ?
ちょっと改造するだけでオーケーと思うよ。
0447名無しさん@お腹いっぱい。
01/09/30 14:58ID:???image/* を吐かなければいけないCGIに text/html を吐かせて、
君は一体何をしようとしているのだ。
それじゃ表示されなくて当然よ。
あとねー、なんつーか、closeした後にflockとかわけわからん。
HTMLも不思議マークアップだし。
0448名無しさん@お腹いっぱい。
01/09/30 15:15ID:???テキストカウンターらしいよ。
>>443
IMGタグでtext/htmlを出力しようとしてもね…。
0449443じゃないけど
01/09/30 15:43ID:WrCS3j3.0450名無しさん@お腹いっぱい。
01/09/30 15:48ID:???それはどういう意味ですか?
0451名無しさん@お腹いっぱい。
01/09/30 15:52ID:mtebbK2kみんな不親切すぎ。俺が答えるYO!
(1) SSIが使えるサーバなら
<!--#include file="hehehe.cgi"-->
(2) SSIが使えないサーバなら
<iframe src="hehehe.cgi" width=200 height=50>ブラウザ古い!カウンタ表示不能!</iframe>
0452名無しさん@お腹いっぱい。
01/09/30 16:00ID:???最初よくまちがえるんだけど、
「print<< というヒアドキュメント命令」があったり、
「=<< というヒアドキュメント代入記号」があるわけじゃないですぜ。
<<"HOGE" から HOGEまでが「ヒアドキュメント形式の文字列」で、
それをprintしたり代入してるわけ。
0453名無しさん@お腹いっぱい。
01/09/30 16:01ID:???親切そうに見せといて、不親切この上ない素晴らしい回答。
0454名無しさん@お腹いっぱい。
01/09/30 22:52ID:5nFULihcさせたいのですがダウソロードのダイアログにサーバ名と
ファイル名が表示されません。ちなみにファイルのダウソ
ロードは問題なくできます。
$filename="hoge.csv";
$|=1;
print "Content-type: application/x-csv\n";
print 'Content-Disposition: attachment; filename='.$filename."\n\n";
#csvファイルをダウンロードさせる
open(FH, $filename) || die;
binmode(FH);
#ファイルに適したMIMEタイプを出力
while(read(FH, $buffer, 512)){
print $buffer;
}
close(FH);
exit;
0455太田@モナー板固定
01/10/01 03:32ID:???いかがなものでしょう?
<form method=POST action="a2gif.cgi"><input type=submit value="A2GIFで表示" name=submit>
<br><textarea rows=5 cols=70 wrap=off name=MESSAGE></textarea></form>
>>446
回答ありがとうございます。
表面的にはなんとなく分かるんですが内部でどんな動作になっているのか
全く知らないので・・・(1)ポスト用のhtmlで上のコードを入れておく、
(2)ポスト先のcgiファイルでA2GIFに変換して表示 って感じになるんでしょうか。
質問ばかりでは始まらないので、とりあえず掲示板スクリプトを見て勉強したいと思います・・・。
モナー板のこっちのスレでもA2GIFの話をしています。
http://piza2.2ch.net/test/read.cgi/mona/989849855/l50
0456win32
01/10/01 12:31ID:???に変更しないといけないんですか?
友達に聞かれたんですけど、今Linuxな環境しかないんで。。。
識者の方、教えてくださいませ
0457名無しさん@お腹いっぱい。
01/10/01 12:33ID:???0458名無しさん@お腹いっぱい。
01/10/01 13:37ID:kD.LVvDkそんなことないよ。
それはただ単に変換がLinuxとWin32で違うだけでWin32で¥を押すと
¥がでるけどLinuxとかで¥と押すと逆スラッシュに変換されるだけで
一緒ですよ
0459名無しさん@お腹いっぱい。
01/10/01 14:13ID:???>>457 大丈夫、俺は識者じゃ無いけどPerlforWINやACTIVEPerlは
ディレクトリの区切り子を変換してくれる。Cygwinだと先にCygwinが
面倒見てくれるから問題無し。WIN <=> UNIX互換 の場合まず気に
しなくて良いと思う。
因みにMACの : は駄目、死にます
0460名無しさん@お腹いっぱい。
01/10/01 14:36ID:???>>>457 大丈夫、俺は識者じゃ無いけどPerlforWINやACTIVEPerlは
いや俺に言うたかて、とマジレス入れてみる。
0461名無しさん@お腹いっぱい。
01/10/01 15:29ID:???MACって2つ上は ::: なんだよなぁ・・・
0462名無しさん@お腹いっぱい。
01/10/01 16:09ID:rWEZiHhg0464暇人
01/10/01 16:27ID:???===== 初心者質問スレ =====
462 名前:名無しさん@お腹いっぱい。 :01/10/01 16:09 ID:rWEZiHhg
macは糞
===== aspがうとしいですが =====
4 名前:名無しさん@お腹いっぱい。 :01/10/01 12:18 ID:rWEZiHhg
>>3
とても傷つきました。
慰謝料請求しますので。
===== JAPUをドキュソと罵る =====
106 名前:名無しさん@お腹いっぱい。 :01/10/01 12:23 ID:rWEZiHhg
DQNプログラマーの素質アリですね。
どうやら2番目のasp教えてスレにレスが無い事にご立腹の様子 ワラ
みんなレスしてあげてね♪
0465名無しさん@お腹いっぱい。
01/10/01 17:03ID:???基準パスは、
1:実行者のカレント
2:スクリプトの置かれたディレクトリ
のどちらになるかは決まっていますか?
それと、これはある程度OSに依存するものなんでしょうか。
/usr/hoge/に
foo.pl、foo.txt foo2.txt
/usr/hoge/huga/
bar.txt bar2.txt
この状態で/usr/hoge/huga/からfoo.plを実行した時に
カレントディレクトリは/usr/hoge/huga/ と思って間違いないですか?
0466名無しさん@お腹いっぱい。
01/10/01 17:05ID:???上の状態でスクリプトから ./ をreaddirすると
bar.txt bar2.txt が読まれると思って良いでしょうか
0467名無しさん@お腹いっぱい。
01/10/01 17:34ID:???0468名無しさん@お腹いっぱい。
01/10/01 17:46ID:???テストしたから聞いています。
「家の環境じゃそうはならないぞ」と言ったご意見を頂きたいのです。
それとも全ての環境をテストしなければ質問は許されませんか?
0469名無しさん
01/10/01 18:03ID:???アホはほっとけよ 疲れるだろ p
それはともかく当然俺の環境でも同じようになったよ
Linux と Cygwinだけど
つーか今まで俺のツールはそれを前提に書いてきたから通用しない環境があると困るなー
0470名無しさん@お腹いっぱい。
01/10/01 18:13ID:???もしくは絶対パスで指定。
0471名無しさん@お腹いっぱい。
01/10/01 18:20ID:???>1:実行者のカレント
>2:スクリプトの置かれたディレクトリ
Win, Unixは全て1です。
0472名無しさん@お腹いっぱい。
01/10/01 18:53ID:IQ6dfID2シンプルなカウンタだな
どやって使うんだ?フレームか?
0473Petit Perl style
01/10/01 19:02ID:???上級者のみなさんはスパゲッチになりがちなperlのソースを書くとき
どんな事を心掛けてますか
漏れが自分ルールにしてるのは、、
変数名は5文字まで、ただし変数名の説明を入れる
ヒアドキュメントはインデントが崩れるからキライ
大域変数は大文字 くらいッス!
0474名無しさん@お腹いっぱい。
01/10/01 19:41ID:???変数名は意味が通じれば多少長くてもいいと思われ。
一般に言われてる Perlプログラマへの推奨スタイルはこれ。
http://www.kt.rim.or.jp/~kbk/perl5.005/perlstyle.html
俺がやるようにしてるのは上と,関係ある変数はハッシュにする,
作業ごとにラベルつけて{}で括るか関数にするくらいか。
0475名無しさん@お腹いっぱい。
01/10/01 21:05ID:1S1Hyahg>変数名は5文字まで、ただし変数名の説明を入れる
説明ってコメントで?
というか、説明入れないとわからない変数名は最悪。
0476名無しさん
01/10/01 21:12ID:1nBk41eoインデント崩したくないのに激しく同意なんだけど、
printを並べるのも、なんか見栄えはともかく
繰り返し呼ぶことのオーバーヘッドがちょっときになったり。
473はどうしてんの。
0477名無しさん@お腹いっぱい。
01/10/01 22:11ID:???ありがとうございます。安心しました ^^
実は自分の書いたファイル管理スクリプトを人に上げたらどうも上手く動いて無い
様なので、そういう可能性を考えたのです。PC初心者さんなんであてにならないけど。。
470さんの言う通りなんですが、例えば ls.pl ./ ってされた時
ls.plでARGVを引っ張ってきたとして、ls.plディレクトリを
基準にされちゃうと非常に困るんです。
他にも方法が有るかもしれませんが、ここは仕様を理解した方が
良いかなと思ったんで。
ありがとうございました。 m(_ _) m
0478名無しさん@お腹いっぱい。
01/10/02 04:48ID:ISbv0fVM>2:スクリプトの置かれたディレクトリ
を取得するほうが難しいよ。特にOS依存なくそうとすると。
実はこれ、自分じゃ書けなかったのでFindBin.pmを見たら、
やっぱ結構苦労している。
CGIを実行するときApacheが自動的にchdirしてくれるってのは
かなりありがたいことだと思った。
0479名無しさん@お腹いっぱい。
01/10/02 07:10ID:puwr6ecIこれってcgiファイルの文字は検索対象に入らないのでしょうか?
掲示板の書き込みとかもトップページから検索できるようにしたいので。
どなたかご存じの方は教えて下さい。
0480名無しさん@お腹いっぱい。
01/10/02 07:35ID:???検索対象ファイルに加えてやれば出来ると思うよ。
でもログそのまんまだと読み難いんじゃないかなあ。
読み出しスクリプト通した方が良くない?
0481名無しさん@お腹いっぱい。
01/10/02 08:31ID:???例えばどうするんでしょうか?
(すみません、無知なもので..)
0482
01/10/02 10:22ID:80rCzk0osub location{
print "Location: $url\n";
exit;
}#location END
こんな感じで飛ばすと、表示したブラウザの下に
Location: ero.cgi?zap
と表示されます。表示しないようにする方法はありますか?
宜しくおねがいします
0483名無しさん@お腹いっぱい。
01/10/02 10:27ID:???0484482
01/10/02 10:32ID:80rCzk0oブラウザの一番下(ページ内)です
urlが出たりする所じゃないです
0485482
01/10/02 10:37ID:80rCzk0oあっと、解決しました
すまんですたぃ
0486名無しさん@お腹いっぱい。
01/10/02 10:41ID:???必要ないのにlocationサブルーチンを呼び出してる。
どこだか分からなかったら、適当なところにアプすれば見るよ。
0487名無しさん@お腹いっぱい。
01/10/02 10:41ID:???04881
01/10/02 15:21ID:LK1d/L0Ihttp://www.h2.dion.ne.jp/~goldman/
0489バイトコードの取得方法について
01/10/02 15:36ID:ZBXcT.qc一バイトずつループ処理をする方法はありますか?
「ファイルハンドル」を用いて指定位置のキャラクタコードを
取得する方法はありますか?
(getcだと位置を指定できません)
正に初心者のなのでよろしくお願いします。
0490名無しさん@お腹いっぱい。
01/10/02 15:47ID:???$value =~ tr/+/ /;
で躓いています。
実データの「+」をそのまま「+」で表示し、
半角スペースのみを変換するにはどうしたらいいのでしょう?
0491490
01/10/02 15:59ID:???デコードの順番が逆でした。
逝ってきます。
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
$value =~ tr/+/ /;
↓
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
0492JAPU
01/10/02 17:36ID:???seek と getc の組合わせで解決?
seek FH, 100, 0;
$c = getc FH;
# seek の使い方は perldoc -f seek を参照。
# または "プログラミングPerl 第2版" or "Programming Perl 3rd Ed." を買う。
0493名無しさん@お腹いっぱい。
01/10/02 17:50ID:RaZaDOV60494489
01/10/02 18:51ID:???レス有難うございます。帰宅してから試してみます。
0495名無しさん@お腹いっぱい。
01/10/02 20:05ID:???http://で始まる文字列を抽出したいのですが
http://www.gc-inside.com/news/20010927am2.html
のようなURLは正常に処理されるのですが
http://choco.2ch.net/test/read.cgi?bbs=tvd&key=998696750
のような=?!&が混入したURLがマッチしません
よそのサイトのを参考にしてしまったので
正規表現部分の内容を余り理解して無くて困ってます
ちなみに下がソースです
#正規表現により配列に展開される
@http = $text =~ /s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+/g;
http://choco.2ch.net/test/read.cgi?bbs=tvd&key=998696750
のようなURLでもマッチするようにしたいのですが
できればアドバイス下さい
よろしくおねがいします。
0496JAPU
01/10/02 20:28ID:???04971
01/10/02 20:29ID:LK1d/L0I0498名無しさん@お腹いっぱい。
01/10/02 20:37ID:W6pnxjhI0499名無しさん@お腹いっぱい。
01/10/02 20:38ID:W6pnxjhI0500名無しさん@お腹いっぱい。
01/10/02 20:52ID:6OIJd9Gg(たとえば全ての拡張子を.tmpに変更する)
なんかやりかたがあったような…
0501名無しさん@お腹いっぱい。
01/10/02 20:54ID:gYYU4i1ssystem("command par");
で、ユーザーの追加をperlでやろうと思うんだけど
$username = 'hogehoge';
system("useradd $username");
system("passwd $username");
とすれば確かにユーザ追加されるが、パスワードは何か?と聞かれる(当然だけど)
そこでパスワードをパラメータとして入力するにはどう記述すれば良いんですか?
$userpass = 'xxxxx';
って感じで変数にしてやりたいんですが。
0502JAPU
01/10/02 22:39ID:???foreach (<*.moe>) {
($x = $_) =~ s/\.moe/.tmp/;
rename $_, $x
}
とか?
csh 系なら、
foreach f (*.moe)
mv $f ${f:r}.tmp
end
bsh系なら、for .. done で。
>>501
chpass -p CRYPTEDPASSWD userなんてのはどう?
http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/usr.sbin/adduser/adduser.perl?rev=.
とかも参考になるかも。
0503名無しさん@お腹いっぱい。
01/10/03 01:59ID:VWQvA4GEDOSなら ren *.moe *.hoe
0504FREAKES
01/10/03 02:32ID:iOlT3Zggうまく掲示板のCGIが動作しません
どうしてでしょう、自分では、みれるのに
0505名無しさん@お腹いっぱい。
01/10/03 02:38ID:???0506名無しさん@お腹いっぱい。
01/10/03 03:42ID:???マルチポストうざい。
0507名無しさん@お腹いっぱい。
01/10/03 05:39ID:xNIE/jvQしかし以下のようなスクリプトだとどうもうまく行きません。
$counterlogのファイルを作成して一度目、二度目は1、2とカウントされ、表示
もされるのですが、三回目はいきなり13となります。4回目は1214、5回目は
12131215という具合です。
sub counter {
open(COUNTER, "+<$counterlog");
$counter = <COUNTER>;
++$counter;
print COUNTER $counter;
close(COUNTER);
}
どこがおかしいのか分かりません。
よろしくお願いします。
0508名無しさん
01/10/03 05:52ID:xwMhor1s0509名無しさん@お腹いっぱい。
01/10/03 06:27ID:7VPeoMkk0510名無しさん@お腹いっぱい。
01/10/03 07:00ID:???投稿したあとで検索エンジンで調べてみるとtruncate(COUNTER, 0);と
seek(COUNTER, 0, 0);との組合せを発見しました。
seek(COUNTER, 0, 0);だけでもいいのか・・・。
いろいろ試してみます。
ありがとうございます。
0511名無しさん@お腹いっぱい。
01/10/03 07:03ID:1Z0sNt2wWindows用のgzipをGETせよ → http://www.gzip.org/
0512名無しさん@お腹いっぱい。
01/10/03 07:12ID:???『出来る』と答えりゃ良いのか?
えすぱってみると、mod_gzipかCygwin辺り?
何をしたいのか書いとらんから、さぱ〜り分らん。
> 良い回答は良い質問から
>>1 を良く読んでくれ。
0513509
01/10/03 07:32ID:7VPeoMkk0514509
01/10/03 08:46ID:???apache for win32を入れないと駄目なのでしょうか?
0515名無しさん@お腹いっぱい。
01/10/03 09:20ID:???ANHTTPDは触ったことないんですけど、
Win2000 + Apache for Win32 ならmod_gzip入れるのは簡単ですよ。
ていうか513を読んで、試しに↓からダウンロードしてみたら
あんまり簡単に動いてびっくりした。
http://www.remotecommunications.com/apache/mod_gzip/
0516ファイルの新規作成
01/10/03 12:36ID:???まだ存在しないので open ができずファイルハンドルが
取得できません。
0517516
01/10/03 12:41ID:???他のエラーが原因でした。
0518えび
01/10/03 12:41ID:tut8CQIEseek(COUNTER, 0, 0);で良いと思います。
seek(COUNTER, 0, 0);はファイルポインタを先頭までまき戻す。
truncate(COUNTER, 0);はファイルを0バイトまで切り詰める。
という処理ですが、
カウンターファイルに新しく数値を記入する場合であれば
seekで先頭にまき戻して新しいカウントの数を上書きすれば良いと
思います。
カウンターは桁が増えても桁が減るという事はないので
以前のデータから上書きしても以前のデータの切れ端とかが
残る事はないのでseekだけで問題はないでしょう。
0519初心者だけど検索くらいは出来る人
01/10/03 12:49ID:???0521名無しさん@お腹いっぱい。
01/10/03 12:54ID:???ブチュゥ〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
0522名無しさん@お腹いっぱい。
01/10/03 13:34ID:6LJeEkqsまじで背筋がゾッとしたからやめてくれ
理想ならその業界の技術書を熟読するのが一番なの。
サバ構築だって然り。ネットとは何か?と言うこと。
書店にあるものを読んでるうちは中級どまり。
高校の微積分を学ぶときは決してニュートンやライプニッツの原書を読まないのは単に難易度の問題。
機会があれば読むべき。
0524名無しさん@お腹いっぱい。
01/10/03 14:20ID:???ハードにはしぶしぶ使う。
けどアキバで部品単位でBSテレビが作れるなら
それに超したことはない
故障のたんびに悪対応の窓口は死ね!
0528名無しさん@お腹いっぱい。
01/10/03 14:43ID:???0529名無しさん@お腹いっぱい。
01/10/03 15:01ID:HFewZhw6これってcgiファイルの文字は検索対象に入らないのでしょうか?
掲示板の書き込みとかもトップページから検索できるようにしたいので。
どなたかご存じの方は教えて下さい。
05301
01/10/03 15:11ID:1nsRDm4c0531名無しさん@お腹いっぱい。
01/10/03 15:57ID:???スレ違い。つかマルチポスト死ね。
0532名無しさん@お腹いっぱい。
01/10/03 16:41ID:???0533丸出し
01/10/03 17:23ID:eJHCCMAcところで話を戻しますが、
なんかナイスタイミングで529と似てるんですけど
文字列検索する時って正規表現じゃなくて
index使う利点ってあるんですか?
これだと大文字小文字区別しない風にできないと
今の知識だと思うんですけども…?あほな事いってます?
0534a'x
01/10/03 17:35ID:???0535名無しさん@お腹いっぱい。
01/10/03 17:40ID:???0536a'x
01/10/03 17:43ID:???ら辺読め。
0537名無しさん@お腹いっぱい。
01/10/03 17:44ID:???カウンタは自前で用意する必要がありますか?
$xxx みたいにあらかじめ使える変数が用意されているとか
ないですか?持っている本には出ていないのですが
あればいいなと。
0538名無しさん@お腹いっぱい。
01/10/03 17:46ID:???0539名無しさん@お腹いっぱい。
01/10/03 17:46ID:???0540名無しさん@お腹いっぱい。
01/10/03 17:46ID:???ないよん。
0541名無しさん@お腹いっぱい。
01/10/03 17:47ID:???Benchmarkやindexの使い方分からない猿 ププ
0542名無しさん@お腹いっぱい。
01/10/03 17:48ID:???>>541
そんな奴いない。
0543名無しさん@お腹いっぱい。
01/10/03 17:51ID:???0544名無しさん@お腹いっぱい。
01/10/03 18:02ID:???半角カナで入力された場合、全角カナに自動的に直して
表示する環境変数を教えて下さい。バイト数をチェックすれば
いいんでしょうか?
0545名無しさん@お腹いっぱい。
01/10/03 18:02ID:???use Benchmark;
open FH, "./seek.dat";
@lines = <FH>;
close FH;
timethese(16, {
'REGEXP ' => \&find_by_regexp,
'INDEX ' => \&find_by_index,
} );
sub find_by_regexp {
my $count = 0;
foreach (@lines) {
if (/an/) {
$count++;
}
}
}
sub find_by_index {
my $count = 0;
foreach (@lines) {
if (index($_, "an") >= 0) {
$count++;
}
}
}
Benchmark: timing 16 iterations of INDEX , REGEXP ...
INDEX : 3 wallclock secs ( 3.31 usr + 0.00 sys = 3.31 CPU) @ 4.83/s (n=16)
REGEXP : 4 wallclock secs ( 4.02 usr + 0.00 sys = 4.02 CPU) @ 3.98/s (n=16)
2万行のデータで検証。
0546名無しさん@お腹いっぱい。
01/10/03 18:03ID:???0547名無しさん@お腹いっぱい。
01/10/03 18:05ID:???これを使えばいいですよ?
検索して頑張って下さい?
0548名無しさん@お腹いっぱい。
01/10/03 18:05ID:???0549538
01/10/03 18:06ID:???0550名無しさん@お腹いっぱい。
01/10/03 18:09ID:???-------------仕切り直し----------------
0551名無しさん@お腹いっぱい。
01/10/03 18:11ID:???まさか本当に検証されるとは思わず嘘ついて荒らそうとしていた
548=538萎え。
0552名無しさん@お腹いっぱい。
01/10/03 18:18ID:???それより>>547を問い詰め(以下略
0553544
01/10/03 18:27ID:6STEKkdE環境変数じゃなくて、置き換え演算子の事です。
よろしくお願い致します。
0554512
01/10/03 18:34ID:???515さんが言ってるとおり、Apache入れた方が凄まじく楽なのは事実。
ただ、mod_gzip使わなくてもCGIの出力ならGZIPと併用して出来なくも
無い筈。AnHttpdは使ってないから分らんけど。
ここ見てくれ。
http//www.ibport.co.jp/~yui/cgiwork/tech/index.html
これやるなら、たぶんCygwin入れると厄介しなくてすむと思う。
つか、Apache(Win32)入れた方が早いかなぁ(苦笑
どっちかと言うと、『CGIだけど、なんか質問ある?』スレ向きな
気もしてきた…。
0555名無しさん@お腹いっぱい。
01/10/03 19:09ID:1VC1FzQwPerl自体には半角全角変換の機能は(まだ)ないから、
自分でコードを書くか、出来合いのライブラリを使います。
たとえばjcode.plを使って$FORM{TEXT}を変換するなら下のとおり。
require 'jcode.pl';
jcode::h2z_sjis(\$FORM{TEXT});
0557555
01/10/03 20:07ID:???ついでに自力でコードを書く例も。
%han2zen = ( #一部のみ抜粋
'ニ'=>'ニ', 'ク'=>'ク', 'コ'=>'コ', 'ッ'=>'ッ', 'プ'=>'プ',
'ン'=>'ン', 'マ'=>'マ', 'ズ'=>'ズ', 'ー'=>'ー',
);
$s = "ニクコップン(-д-)マズー";
$s =~ s/([。-゚][゙゚]?)/$han2zen{$1}/ge; # ←ここで変換
print "$s\n";
これで大丈夫かな?? 実際には%han2zenに、
すべての半角カナ→全角カナの対応を入れてください。
0560丸出し
01/10/03 20:34ID:???indexのが早いんですか!
ある配布cgiで検索機能があったんですけど
半角全角を一緒にして検索できる便利さを捨てて
鯖の負荷を減らす方をとったのか。
なるへそ〜〜。ありがとです。
0561名無しさん@お腹いっぱい。
01/10/03 20:50ID:VH/5AUngREMOTE_HOSTをgethostbyaddrでIPからアドレスに変換したのですが
変換するとpop3.norton.antivirusと表示されます。
これって何でしょう?間違ってはないと思うのですが…
識者の方でご存知のかたおられましたらお願いします。
0562名無しさん@お腹いっぱい。
01/10/03 20:59ID:???気にスンな
気になるならセキ板でもいって「ハックされていますっ!!!!」
ってスレ立てて死んでこい w
0563名無しさん@お腹いっぱい。
01/10/03 22:33ID:???言う意味で書いています($で始まるの色々ありますよね)。
0564名無しさん@お腹いっぱい。
01/10/03 22:43ID:???0565名無しさん@お腹いっぱい。
01/10/03 22:53ID:???そのためのやつでしょ。
0566名無しさん@お腹いっぱい。
01/10/03 23:37ID:CQyY2Ec6Perlで定期的に送信フォームを押すみたいなことはできますか?
つか、初心者はその前にこれ覚えれみたいなことありましたら指摘お願いします。
0567名無しさん@お腹いっぱい。
01/10/03 23:38ID:???まず日本語を勉強してね &heart
0570名無しさん@お腹いっぱい。
01/10/03 23:50ID:???>>1周辺を見ろ。
方言使うな。
0572名無しさん@お腹いっぱい。
01/10/03 23:59ID:???ちょっと漠然としすぎてて答えようが無いよ
この板に良書スレが有るから、そこを良く読んで自分に合った
本を一冊買って下さい。
で、それを読みながらWEBなんかも活用して勉強すればいいよ。
それといきなりCGIは薦めないな、、少しはPERL書けるようになって
HTMLも書けるようになれば自然と書ける様になるから
0573566
01/10/04 00:21ID:???ありがとうございます。
全然右も左もわからないもので・・・
以前age荒らしをスクリプト組んでやってる、というのを見て、
プログラミングに興味を持ったのですが、(荒らしをしたい訳じゃないんです。断じて)
例えは悪いですが、そういうことはできるのか知りたかったんですが、
これでもまだ漠然としているんでしょうかね・・・
とりあえず、勉強して出直してきます。有り難う御座いました。
0574名無しさん@お腹いっぱい。
01/10/04 00:24ID:???0575名無しさん@お腹いっぱい。
01/10/04 00:30ID:???関係ないけどね。頑張ってね。
0576510
01/10/04 02:08ID:f1gid5yYえびさん
遅くなりましたが、詳しいお答えありがとうございました。
・・・精進します・・・。
0577名無しさん@お腹いっぱい。
01/10/04 08:23ID:9Z2wk3j2明確な目標を持った厨房のほうが好きだね。俺は。
つーわけで>>566みたいな奴には期待したい。
(1)ローカルマシンにPerlとWebサーバを入れる。
(2)全環境変数表示CGIを自作し、Webサーバで動かす。
(3)GETメソッドで(2)のCGIにアクセスしてみる(LWP::Simpleモジュールが便利)
(4)POSTメソッドで同じく(2)にアクセス(LWP::UserAgentモジュール)
とりあえ、以上の実験を試してみることをすすめる。
0578名無しさん@お腹いっぱい。
01/10/04 08:41ID:???残念賞として"$."(現在の行番号)をあげよう。
while (<DATA>) { print "$. $_"; }
__DATA__
mona
giko
0580名無しさん@お腹いっぱい。
01/10/04 11:35ID:nOAoqb9AHTMLA → CGI の、HTMLAのURLです
0581名無しさん
01/10/04 11:37ID:???0582名無しさん@お腹いっぱい。
01/10/04 13:23ID:nOAoqb9A空白になっちゃうんです。うううむ。
0583名無しさん@お腹いっぱい。
01/10/04 13:28ID:???0585名無しさん@お腹いっぱい。
01/10/04 15:33ID:???てか、えらそうに書いたの俺なんすけど。
正規表現スレ逝って修行してきます・・・。
0586名無しさん@お腹いっぱい。
01/10/04 16:14ID:???9 div 4 = 2
9 mod 4 = 1
のdivです。
0587名無しさん@お腹いっぱい。
01/10/04 16:31ID:???0588名無しさん@お腹いっぱい。
01/10/04 16:33ID:???0589名無しさん@お腹いっぱい。
01/10/04 16:52ID:4x063qa6Perlからアクセスすることは可能でしょうか?
出来る場合、相対パスでアクセスするのでしょうか??
0590名無しさん@お腹いっぱい。
01/10/04 16:55ID:???あ。divはないんですね。
%があるのに変だなぁと思って探してたんです。
#9-(9%4)とかやってたですよ。鬱。int()でいいんだ…
0591名無しさん@お腹いっぱい。
01/10/04 17:41ID:???いまいち動作がわかってないんだが。
{ use integer; $foo = 9 / 4; }
または
use integer; $bar = 9 / 4; no integer;
0592名無しさん@お腹いっぱい。
01/10/04 17:44ID:???可能である。
相対パスでも絶対パスでも。ただしURLじゃなくてOSのパス。
0593名無しさん@お腹いっぱい。
01/10/05 00:35ID:???my と local の違いが良くわかりません。どう使い分けるべきなのでしょう。
0594名無しさん@お腹いっぱい。
01/10/05 05:47ID:???一口には説明できないけど、まず".pl"と".pm"の表面的な違い。
●Hoge.plファイル
require 'Hoge.pl'; で読み込む。
実際はどんな拡張子でもいいが慣例として".pl"が使われる。
requireでは、この命令を実行する時点でファイルが読み込まれる。
必要なときのみrequireするようにうまくコードを書くと
無駄なメモリを使わずにすむ。
● Hoge.pmファイル
拡張子".pm"の扱いは特別で、
use Hoge ('mona','giko'); と書くのは、
BEGIN{ require 'Hoge.pm'; Hoge->import('mona','giko'); }
と書くのと同じ。
BEGINブロック相当なので、コード中のどこにuse Hogeを書いても
Hoge.pmは起動時に必ず読み込まれる。
決して実行されない位置、たとえばif (0) { use Hoge; } でもね。
さらに自動的に実行されるHoge->import()を利用して各種の初期設定が可能。
importメソッドをどう使うかは自由だけど、普通はHogeクラスを
メインプログラムから簡単にアクセスするための設定とかを書く。
#まだ言ってることワケワカだろうけど、そのうちわかる。
0595名無しさん@お腹いっぱい。
01/10/05 11:28ID:QBNm.OW.どのようにしたら良いでしょうか。
また、ゴミデータ(エディタで表示できないような文字)の
判別方法はありますか?
0596名無しさん@お腹いっぱい。
01/10/05 11:44ID:Cx9AZXvIJcode.pmを入手して使うと楽。
日本人が作ったやつだけど、CPANにあるっけ?調べてみて。
use Jcode;
my $s = "まあ聞いてくれよ、スレと関係あるからさ。\n";
print Jcode->new(\$s, 'sjis')->utf8;
何がゴミデータかというのはエディタにもよるから。どのエディタ?
0597596
01/10/05 11:46ID:???環境でないとだめだったかも。。。
Windows用ならコンパイル済みのやつがある。
0598名無しさん@お腹いっぱい。
01/10/05 11:51ID:???c:/bin/
こんなの?
0599名無しさん@お腹いっぱい。
01/10/05 12:32ID:???そんなの。unix系は"c:"なしで。
0600名無しさん@お腹いっぱい。
01/10/05 13:07ID:QBNm.OW.ゴミデータってのは、制御コードのようなものとか、
文字コードが判別できないような「F・カ」みたいに表示されて
しまうものとか。そういったデータのことです。
エディタによって表示が違うのはその通りですね(^^;
0601名無しさん@お腹いっぱい。
01/10/05 18:48ID:???$hash{'Micro$oft'} = "VVindovvs";
foreach(keys %hash) {
$data =~ s/$_/$hash{$_}/;
}
print $data;
この場合 "Micro$oft" に含まれる "$" がパターンと見なされて
うまく置換できません。どのような回避方法が考えられるでしょうか?
自分ではパターン文字列でメタ文字と見なされてしまう文字列を
あらかじめエスケープする置換処理を挿入しているのですが
あまりスマートとは思えません。
パターン部の変数展開を一度だけ行ってくれるといいんですが。
「o」では期待した動作が得られませんでした。
0602名無しさん@お腹いっぱい。
01/10/05 18:51ID:???0603名無しさん@お腹いっぱい。
01/10/05 19:22ID:???$data = 'hogehogeMicro$ofthogehoge';
%hash = ( 'Micro$oft' => "VVindovvs", 'hoge' => '[ピー]' );
$re_keys = join('|', map { "\Q$_\E" } keys(%hash));
$data =~ s/($re_keys)/$hash{$1}/go;
print $data;
0604名無しさん@お腹いっぱい。
01/10/05 23:37ID:QBNm.OW.Jcodeをppmでインストールしようとしたら
>Installing package 'Jcode'...
>Error installing package 'Jcode': Read a PPD for 'Jcode',
>but it is not intended for this build of Perl
>(MSWin32-x86-multi-thread)
というメッセージが出てきてしまいました。バージョン違い?
CPAN逝ってきます。
0605名無しさん@お腹いっぱい。
01/10/06 00:32ID:MEgHrhMkうわーん。
http://search.cpan.org/search?dist=Jcode
>FAIL MSWin32-x86-multi-thread
ってのはWinはダメの意でしょうか。かなりしょんぼり。
0606名無しさん@お腹いっぱい。
01/10/06 00:47ID:???すみません。
http://openlab.ring.gr.jp/Jcode/index-j.html
にありました。
0607名無しさん@お腹いっぱい。
01/10/06 08:38ID:xcBMND.sデータを記録する時の区切り文字には定番だったり
慣例のものとかってあるんですか?
よく目にするのが<>だったり\tだったりしますが?
教えてくらはい。
0608名無しさん@お腹いっぱい。
01/10/06 10:51ID:32vtXsHYUNIXみたいに#! /usr/local/bin/perl(コマンドライン?)
というのを使える様にするにはどうすればいいんでしょうか?
ちなみに、perlソフトはActive Perlです。
教えて君初心者ですみません。。
0609名無しさん@お腹いっぱい。
01/10/06 10:56ID:???エクセルとか意識するならCSVは忘れない方がいいんじゃないかな
\tはTSVって言ってCSVの親戚みたいなもんか。。
<>が使われるのは多分BBSとかのログは大抵タグがエスケープされてる
から、デリミタ混入→ミスヒット、の可能性が低くなるからだと思う
0610名無しさん@お腹いっぱい。
01/10/06 11:09ID:xcBMND.sなるほど!<>にはそういう意味があったんですか!
どうもありがとうございます。
TSVってのは知りませんでした。
メモ帳とかで開くとタブで区切っとけば
見やすいからだと思てた・・・。
0611名無しさん@お腹いっぱい。
01/10/06 11:10ID:???入手にちょいと苦労するがむっちゃ便利なプログラムがある。
ベクターで「SOS」を検索してみ。
0612名無しさん@お腹いっぱい。
01/10/06 11:28ID:xcBMND.sこれの事ですかね?
PERLで書いたスクリプトをcなんかの様に実行形式に
コンパイルできるソフトって無いものですか?
あるにはあるけど正確じゃない。みたいな事は耳にするのですが?
どうなんでしょう?
0613名無しさん@お腹いっぱい。
01/10/06 14:14ID:???Cygwin入れたらいい
これで一件落着
0614608
01/10/06 17:41ID:PN8fPnr6それを入れたら良いとか本に書いてあったんですが
ダウンロードサイトに行ってみたら、どうやら金取られるみたいで..
611さんの言うのもダウンロードしたのですが
どうやってパッチを当てるかいまいちわからなくて..。
ほんと、難しいですよね...鬱
0615名無しさん@お腹いっぱい。
01/10/06 18:51ID:???もっと健作白〜〜〜
何をそんなに焦っているのか? 今日納期の仕事してる訳じゃ無いだろ
実際Unixのshellに触る事は回り道でもなんでも無いんだぞ
って9xで使えたかな (・∀・;)??
0616名無しさん@お腹いっぱい。
01/10/06 19:46ID:???http://cygwin.com/setup.exe
これ落とせ
んで、どっかに移動してから起動して、それで適当にサーバー選んで落としてこればいい
0617614
01/10/06 20:26ID:w30D7B7.どうもありがとうございんます。。
どっかに移動して起動して、というのはどういうことでしょうか?
ディスクトップに解凍するのでいいのですか?
あと、大変失礼な質問なのですが
そのファイルは大丈夫なのでしょうか?
拡張子がexeなので心配で...
0618名無しさん
01/10/06 20:36ID:???まずWIN板に行ってファイル操作や圧縮解凍に付いて学びましょう
>あと、大変失礼な質問なのですが
>そのファイルは大丈夫なのでしょうか?
>拡張子がexeなので心配で...
憶測ですが、おそらく616氏はsetup.exeのAUTHORでもcygwin.comのサーバ管理者でも
無いと思われますので何がどう大丈夫なのかは分からないでしょう
0619617
01/10/06 21:58ID:w30D7B7.すみません、実はP検3級のOSはAなんです(w
解凍とかもたまにUGにいくのである程度はわかるのですが
でも、やっぱり深く掘り下げると難しくて。。
一瞬ウィルスだと思ったんですがアドレスが違うみたいですね。
ちょっとexeファイルに過敏になっていたもので..。
もう少し勉強してまた、質問させていただきます。
0620名無しさん@お腹いっぱい。
01/10/06 22:12ID:???0621名無しさん@お腹いっぱい。
01/10/06 22:22ID:w30D7B7.解凍するソフトの種類や拡張子の種類はわかりますです。
0623名無しさん@お腹いっぱい。
01/10/06 23:29ID:tXZdOs1cファイルからデータを読みだし、そのデータを含むHTMLを
ブラウザに表示させるスクリプトを書きました。
TELNETのコマンドライン上から実行すると
狙いどおりの出力をしてくれるのですが、
ブラウザ上からURLを入力して実行すると
500 Internal Server Errorがでてしまいます。
パーミッションなども確認したのですが
おかしなところは見当たりません。
何かチェックすべきところが他にあるのでしょうか。
0624名無しさん@お腹いっぱい。
01/10/06 23:43ID:???0625623
01/10/06 23:46ID:tXZdOs1cHTMLの直前に書きました。
0626名無しさん@お腹いっぱい。
01/10/06 23:51ID:???print "Content-Type: text/html\n\n";
0627623
01/10/06 23:51ID:???でした。自分で書いて気がついた。
助かった〜ありがとうございました。
0628626
01/10/06 23:52ID:???0629たかちゃん
01/10/06 23:54ID:j.NzGGwA初心者ですが、cgiを設置したのに見ると
CGI エラー - 以下のコマンドラインを実行できません : "perl C:\kujira\aska.cgi ", errorcode = 2, No such file or directory
と出るのですが、どうしてでしょうか?
お願いします
おしえてください
0630名無しさん@お腹いっぱい。
01/10/06 23:55ID:???0631名無しさん@お腹いっぱい。
01/10/07 02:00ID:???助けてやって下さい。
0632名無しさん@お腹いっぱい。
01/10/07 02:12ID:???CGI速くするだけなら別の方法もあるよ。
0633名無しさん@お腹いっぱい。
01/10/07 14:43ID:???1番目から10番目を逆順で処理してると思うんですが、
逆順にしてから1番目から10番目を取得するにはどうしたらいいでしょうか。
つまり、
1-30のうち
10,9,8...,2,1ではなくて、
30,29,28...,22,21と取得するということ。
0634名無しさん@お腹いっぱい。
01/10/07 14:44ID:jXvc6whkperlccですか!ありがとうございます。
けどやっぱcとかみたいにうまくコンパイルできないとか
言う話をちらほら聞いた事あるんですけどどうなんでしょう?
>CGI速くするだけなら別の方法もあるよ。
良かったら教えて欲しいっす!!
どんなんでしょう?
0635名無しさん@お腹いっぱい。
01/10/07 15:15ID:???スライスの使えばOK.
(reverse 1..30)[0..9]
0636名無しさん@お腹いっぱい。
01/10/07 15:18ID:???あと、30から21がほしいだけなら、reverse21..30でもいいような。
0637JAPU@愛国戦隊大日本
01/10/07 16:13ID:???for($i = 30; 20 < $i; $i--) としても良いです。
>>634
mod_perl, SpeedyCGI など。Perl の場合は起動と構文解析に時間がかかるので、そのコストをおさえることができます。
0638名無しさん@お腹いっぱい。
01/10/07 16:22ID:???ありがとうございます。
んー。
@read[$hoge .. $moge]を逆順で処理させたくて、
$hoge = 0;
$moge = $hoge + 10;
foreach (reverse @read[$hoge .. $moge]){}
とやってみたのですが、
@readに仮に0-30のリストが入っているとして、
9,8,7,6,5,4,3,2,1,30という処理順になってしまいました。
むむむ…。一体どうすればいいのでしょう…。
0640635
01/10/07 16:30ID:???修正
> 9,8,7,6,5,4,3,2,1,30という処理順になってしまいました。
→ 9,8,7,6,5,4,3,2,1,0,30という処理順になってしまいました。
>>637
書き込んだらレスがついていたので慌ててお礼だけ書きましたが、、、
まず考えたのがそれだったんですが、作っているのが掲示板で、
リストの最後がいくつになるか判断するルーチンは今のところ無いんです。
ありがとうございました。
0641名無しさん@お腹いっぱい。
01/10/07 16:31ID:jXvc6whkサーバーで用いるインタープリタを変えるって事なのかな?
勉強になるです。ありがとうございました。
0642名無しさん@お腹いっぱい。
01/10/07 16:39ID:???実行形式にするのにはPerl2Exeってのもあるんですね。
知ってる人の方がおおいんだろうけど
自分見たいののために報告〜。
0643名無しさん@お腹いっぱい。
01/10/07 17:09ID:Hz5hclI2>→ 9,8,7,6,5,4,3,2,1,0,30という処理順になってしまいました。
いったいどうすれば、そんな処理順に・・・。
それをねらってやるほうが難しい(つーか面倒)なのでは。
0644名無しさん@お腹いっぱい。
01/10/07 17:53ID:???@a = (0 .. 30);
@a = reverse @a[-1 .. 9];
print "@a\n";
0645名無しさん@お腹いっぱい。
01/10/07 21:46ID:XxfLnDlQリネームが一番効果的っての聞いた事あんですけど。
DBMてのを使うのは無しで。
0646名無しさん@お腹いっぱい。
01/10/07 22:17ID:kSNrchYMずーと悩んでるけれど全然スマートな方法が思いつかないッす。
0647名無しさん@お腹いっぱい。
01/10/07 22:27ID:???flockだけど、、evalすらしてない w
>>646
二つしかないならループしなくて良いじゃん?
普通はkeysでkeyの配列作ってその配列をforeachしたり
eachしたり、、
@keys = keys (%hash);foreach (@keys)
while (($key,$value) = each %hash)
0648名無しさん@お腹いっぱい。
01/10/07 22:36ID:kSNrchYMでも、チョット違うかもしんない。
そういう意味でなら、キーがみっつて事になるかな。
$hashref->{1}->{2} = 3;
みたいな。
書き方はこれじゃなくても、何でもいいんで同様のことを実行できる方法ないっすかね。
0649名無しさん@お腹いっぱい。
01/10/07 22:48ID:???0650むぎ茶
01/10/07 22:55ID:???┐(´ー`)┌
┏━━━━━━━━━┓
┃('Д')y ─┛~~ ┃
┃むぎ茶 ┃
┃mugicha@360.cc ┃
┗━━━━━━━━━┛
0651名無しさん@お腹いっぱい。
01/10/07 22:58ID:kSNrchYM$hashref->{"key1-1"}->{"key1-2"} = "1-3";
$hashref->{"key2-1"}->{"key2-2"} = "2-3";
while (($key, $value) = each %hash) {
while (($key2, $value2) = each $value->{$key}) {
print $key, "=>", $value->{$key2}, "=>", $value2, "\n";
}
}
こーいうことがしたいの。
0652634
01/10/07 23:03ID:???未だに当初の目的は達成できません。
>>635を参考に>>638のようにしても無理なのですが、
どうすれば良いんでしょう?
0653名無しさん@お腹いっぱい。
01/10/07 23:04ID:???key1 => { key1-1 => 'val1-1' },
key2 => { key2-1 => 'val2-2' },
);
>>651
%$valueね。
0654名無しさん@お腹いっぱい。
01/10/07 23:08ID:???むっちゃありがとー。今夜はぐっすりねれそうだよー。
0655名無しさん@お腹いっぱい。
01/10/07 23:11ID:???0656名無しさん@お腹いっぱい。
01/10/07 23:26ID:???何言いたいのか解らん、上の方で言ってるのでなんで駄目なんだ
@list = reverse (0..30);
foreach (@list){
print "$_\n";
last if($cc == 10);
$cc++;
}
0657名無しさん@お腹いっぱい。
01/10/07 23:30ID:???こうだと推測してみた。正解なら俺をエスパーと呼べ。
@read = (0 .. 30);
$hoge = 0;
$moge = $hoge + 10;
foreach (reverse @read[-$moge .. -1-$hoge]) { print "$_\n"; }
0658名無しさん@お腹いっぱい。
01/10/07 23:32ID:???foreach (reverse @read[-10 .. -1])
はどう?
変数使うなら
$hoge = $#read;
$moge = $hoge+10;
foreach (reverse @read[$moge .. $hoge])
とか。
これは先に後ろ10個取り出してから,逆順にしてる。
>>638は始めの10個取り出してる。
0659658
01/10/07 23:33ID:???0660634
01/10/07 23:45ID:???http://www.geocities.co.jp/MusicStar/2856/bbs.txt
0661名無しさん@お腹いっぱい。
01/10/08 00:04ID:pELG7ByEなんかflockだとするロック破られるとか
書いてあるの読んで気がひけるんですよね。
実際どうなのかはわからないですけど。
皆さんの方法とか教えてくれないですかね?
0662名無しさん@お腹いっぱい。
01/10/08 00:07ID:???foreach ( reverse @read[$page .. $page_end] ) { これは
foreach ( reverse (@read[$page .. $page_end]) ) { こう評価される
つまりケツから10個じゃなくて頭の10個をreverseしてる
先に@read = reverse @read; とでもして
foreach (@read[$page .. $page_end] ){ こうしとけ
0663名無しさん@お腹いっぱい。
01/10/08 00:17ID:???何を破られんのか解らんけど、flockしないなら
rename、simlink、mkdir、辺りの関数で実装するの普通
ここでロック論争始めるとまた色んな信者さんが出てくるから
その辺のスクリプトとか大崎さん所(perlメモ)とか見てくれ
flockよりショボイのは幾らでも組めるが***まともに機能してる***
flock以上のは組めないってのがほんとのところ
0664名無しさん@お腹いっぱい。
01/10/08 00:24ID:???0665名無しさん@お腹いっぱい。
01/10/08 00:54ID:pELG7ByE0666634
01/10/08 01:01ID:???ありがとうございます。
さらに精進します。
みなさま。
ちょっとしつこかったです。反省。
スレ汚しスマソ。です。
恥ずかしいので>>660は削除しときます。
0667名無しさん@お腹いっぱい。
01/10/08 01:02ID:lKBSfyUUこの、自身のREFERERも出さないリダイレクタってどういう原理なんでしょう?
0668名無しさん@お腹いっぱい。
01/10/08 01:05ID:???LWPにレジューム機能は存在しないもよう。
関連モジュール内で"content-range"という文字列を
探したけど該当する機能が見つからなかった。
LWPはでかいから見落としてる可能性もあるけどね。
レジュームしたけりゃ、自分で"Content-Range"ヘッダを付けて
ファイル保存処理をガリガリ書くしかないのかもしれない。
0669名無しさん@お腹いっぱい。
01/10/08 01:22ID:???0670名無しさん@お腹いっぱい。
01/10/08 01:28ID:???見れないしスレ違いだし良くワカラナイけど
HTTP_REFERERはREMOTE_ADDRとかと違ってクライアント側で容易に書き換え
出来るわけ。
で、多分link.cgiがQUERYをラップして変わりに取りに行ってると思う訳
0671667
01/10/08 01:38ID:???ありがとう
それをコードにするとどうなるでしょう?ってのは、たしかにスレ違いですね
こんなCGI探してますスレッドでもう一回聞いてみます
0672名無しさん@お腹いっぱい。
01/10/08 14:19ID:xLWu69kM方法はどの様なのが定番なのでしょうか?
0673JAPU@勉強中
01/10/08 15:04ID:???m//i 使っても良いと思うが。
0674名無しさん@お腹いっぱい。
01/10/08 18:42ID:???そうなんですか…どうも。
とりあえずContent-Rangeとやらを調べてみます。
0675名無しさん@お腹いっぱい。
01/10/08 20:31ID:Kg6GidGEレスありがとです。
やっぱりindexだといったん大文字か小文字にするしか
無いんですかね?
変換のロスで正規表現の方が早くなったり。
0676名無しさん@お腹いっぱい。
01/10/08 20:50ID:/cLj7636検索対象データのコピーを作って、
そっちをあらかじめ大文字か小文字に統一しとくのは?
ディスクスペースは2倍必要だけど。
0677名無しさん@お腹いっぱい。
01/10/08 21:33ID:???けど検索対象のデータが結構ごちゃごちゃしてるんで
これ以上ファイルが増えるとちょっと(^^;
0678名無しさん@お腹いっぱい。
01/10/08 23:35ID:???検索するたびにそんな多数のファイルを開いてると
I/Oに負担かかって氏ぬです。
↑いまは亡き「とほほラウンジ」方式。
0679名無しさん@お腹いっぱい。
01/10/09 00:28ID:???乱発するとダメ?
0680名無しさん@お腹いっぱい。
01/10/09 01:08ID:qw3TKOks@掲示板の全てcgiで制御する
A最近の5件ほどhtmlで表示させてそれ以降(ログの表示)は
cgiで制御する
B書き込むたびに全てhtmlで出力(ページ数は5ページほど)させる
だとAが一番サーバに易しいですかね?
0681名無しさん@お腹いっぱい。
01/10/09 01:56ID:???ん? 聞いた事ないけど、何と比べて?
>>680
HTMLは静的、CGIは動的なコンテンツを提供してるって言えばいい?
一年に3人しか書き込まなくてROMが1000万人居るなら2
リロード代わりに見た人間全員が書き込むんなら1、
3は意味解らん、なら1ページに全部吐けば良いじゃん
0682名無しさん@お腹いっぱい。
01/10/09 02:22ID:???0683名無しさん@お腹いっぱい。
01/10/09 02:23ID:???そんでデータファイルは別に作っといてそれから
htmlファイルとして出力しようと思ったんだけど、
書き込みされるたびにhtmlファイルをすべて作り直すのも負担になるな…と。
だけどアクセスされるたびにcgiで処理する@は論外かなと
まぁ一番一般的だけど。
んじゃ大抵の人間はログなんか読まないからTOPページだけhtmlで
出力しておくかなと思って。rom率とカキコ率で変わってくるけど
チャットじゃないから最初のページはhtmlにした方が効率が良いかと。
…何をいってるのかわからないと。
処理ごとの負担がデータ化されてるページとかあれば楽なんですけどね。
0684名無しさん@お腹いっぱい。
01/10/09 02:47ID:???カキコのカウントもとればなおよし。
0685名無しさん@お腹いっぱい。
01/10/09 02:57ID:???10年前の超オーバーヘッドなSCSIHDD使ってる鯖でHTML化とか言って
ガリガリファイル書き換えまくったら速攻でディスクビジーだろうし
結局鯖のuptimeと相談しながらってなるでしょ? それを一からやりたいなら
止めないけど・・・
で、頭の良い先人が色々考えた結果ROM比30:1ならHTMLの方が良いだろっつて
アナタが今みてるココとか紅茶板があるんすよ
0686名無しさん@お腹いっぱい。
01/10/09 03:19ID:???こういうの知りたかったんです。為になるです。
>684
そうですね。最初は負荷かかっても損して得とれみたいな
かんじで統計とってみようかなと思います。
まぁ一概にはいえないんでしょうけど→30:1
参考にしようと思います。
0687名無しさん@お腹いっぱい。
01/10/09 13:29ID:???書き出すhtmlのサイズにもよるが。
頻繁にアクセスするファイルはバッファに入るだろうし
0688名無しさん@お腹いっぱい。
01/10/09 14:24ID:???頭大丈夫ですか?
@aiueo = "あいう";
if(@aiueo != 0){
foreach (@aiueo){
print "$_";
}
}
配列aiueoに"123"と"あいう"を格納したいのですが、
二つ目のあいうだけしか表示されません。。。
@aiueo = "あいう";
このようにすると値が上書きされてしまいますね・・・(汗
すいません。
後から加えたい場合は必ず
push @formcheck, $Name; か、
unshift @formcheck, $Name; でやらなきゃいけないんでしょうか?
0691名無しさん@お腹いっぱい。
01/10/09 15:20ID:???pushなりunshiftなりしなさい。
push @array, $str;
# そもそも @array = $str というのはどうかと思うぞ。
0692名無しさん@お腹いっぱい。
01/10/09 15:22ID:???@aiueo = "あいう"; これで'あいう'しか入ってないでしょ?
@aiueo = ("123","あいう");
こうしとけ つーかリファレンス嫁
0694名無しさん@お腹いっぱい。
01/10/09 17:05ID:???<br>
0695名無しさん@お腹いっぱい。
01/10/09 17:06ID:???タグ辞書登録してたらクリックしてもうた〜。すんません。
0696名無しさん@お腹いっぱい。
01/10/09 18:24ID:caK9Qd8A方法ないでしょうか?↓みたいなかんじです。
$bb="$aa";
$aa="ほげ";
print "$bb";
これだと何も出力されませんが
出力が ほげ と出るような方法は無いでしょうか?
0697名無しさん@お腹いっぱい。
01/10/09 18:32ID:???0698名無しさん@お腹いっぱい。
01/10/09 18:35ID:???print $cc;
でもいいっすね。
0699名無しさん@お腹いっぱい。
01/10/09 18:38ID:???$bb='$aa'; #あとこれをシングルクォートに
0700つーか、、
01/10/09 18:38ID:???0702名無しさん@お腹いっぱい。
01/10/09 18:44ID:???$aa="ほげ"; # ここで$aaに「ほげ」代入
print "$bb"; # $bbは空なので、、、
ってこう糞親切?に書くと怒る厨房っているよね
0704名無しさん@お腹いっぱい。
01/10/09 18:51ID:???方法1
$bb='$aa';
$aa='ほげ';
print eval $bb;
方法2
$bb='aa';
$aa='ほげ';
print ${$bb};
0706696
01/10/09 19:06ID:???思とらんかたです。しかもこなにイパーイ!
なるほど!どうもです。
1行目と2行目が逆なのはこの手法を説明する
為だったんで…。これと全く同じというわけじゃないんです。
わかりにずらかったですね。スマソです。
0707名無しさん@お腹いっぱい。
01/10/09 19:07ID:???「文字列の中の変数名」をあとから展開するってどうやってます?
おれはこんなの。
$template = 'hello $name!';
$name = 'ほげ';
print eval '"'.$template.'"';
いちおうこれで動くけど、なんか無駄な気が。。。
0708JAPU@勉強中
01/10/09 19:11ID:???$hoe = "sakura";
$str =~ s/(\$\w+)/$1/eeg;
print "$str\n";
ってのもアリかも。
0709696
01/10/09 19:11ID:???みたいにそのアドレスにはいってるアドレスを参照する
ってのを知りたかったのです。
なんかいつも質問してるな…。ありがとうですです。
0710名無しさん@お腹いっぱい。
01/10/09 19:15ID:???みたいな感じか。
あえてやるなら。
0712名無しさん@お腹いっぱい。
01/10/09 20:01ID:???$aa= $zz;
$zz='hoge';
print eval $bb;
こういうのはできないんですねぇ。
0713名無しさん@お腹いっぱい。
01/10/09 20:04ID:???$aa= '$zz';
$zz='hoge';
print eval $bb;
こうか。どっちにしろできない。
0714名無しさん@お腹いっぱい。
01/10/09 20:08ID:???無理に置換するよりも、最初のままの方がいいんではないか思う。
あと、
eval(qq($template))
って書くと少しカッコイイ(w
0715名無しさん@お腹いっぱい。
01/10/09 21:50ID:???関数のリファレンスについての質問です。
配列やハッシュならよく使っているのですが、関数のリファレンスは
どういうときに便利なのかがいまいち理解できません。
先生、ご指導お願いします。
0716名無しさん@お腹いっぱい。
01/10/09 22:19ID:ac7tHUi6プロバイダの個人HPなので、システム変更の自由はきかないんです。
その上、gzipも使えないので。
やはりCPANのArchive::zipを使えと言う事になるのでしょうか?
0717>715
01/10/09 22:25ID:???&Fnc(\%data, $file);
sub Fnc {
my ($ref_data, $file) = @_;
my $name = $ref_data->{NAME};
my $title = $ref_data->{TITLE};
open(DATA, $file);
.....
}
---例えばクラスを作るとき
sub new {
my $class = shift;
my $self = {};
bless($self, $class);
$self->_initialize();
return $self;
}
sub _initialize {
my $self = shift;
$self->{NAME} = 'hoge';
.....
}
0718711じゃないけど
01/10/09 22:28ID:???置き換えても動作せんよ?漏れがいけないんかな?
0719名無しさん@お腹いっぱい。
01/10/09 22:39ID:rO0MbdjQローカル環境でgzipの展開にCompress::Zlibを使ってます。
ただしUNIXサーバに入れるにはCコンパイラが必要みたいです。
(うちはWindows + ActivePerl + PPMなのでコンパイル不要だった)
0720714
01/10/09 23:38ID:1lvwgexcあれれ?
$needle='This is sample text.';
$template='$needle';
print $template,"\n",eval(qq($template)),"\n";で、
$needle
This is sample text.って出ませんか?
0721714,720
01/10/09 23:39ID:???しかもageちゃったシクーリ
0722名無しさん@お腹いっぱい。
01/10/10 00:19ID:FXDqXQ2wどうすればいいですか?
掲示板はネットで見つかったのですがリンクの制限が見つからなくて困ってます。
0723名無しさん@お腹いっぱい。
01/10/10 00:29ID:???それだとばっちし動作します。けど>>707の最後の一行と
eval(qq($template))を置き換えても動作しないです。
「文字列の中の変数名」をあとから展開
てのはその方法だとできないって事なのかな?
ちなみにeval(qq($template))のqqてのは何なのでしょうか?
0724名無しさん@お腹いっぱい。
01/10/10 00:39ID:???最初にHTTP_REFERERとって特定のURL以外ならlocationで飛ばせばいいんでない?
0725722
01/10/10 00:39ID:FXDqXQ2w0726707
01/10/10 00:54ID:1woNivdAおれも自分で試してみたよん。
eval(qq($template)) では707はうまくいかないっす。
eval(qq("$template")) ならオーケーでした。
結局、このやりかたは評価が2回必要になる(?)ので、
正規表現展開の手間をいれても>>710の人のやりかたが速いです。
Benchmark検証済み。
0727名無しさん@お腹いっぱい。
01/10/10 00:56ID:???my変数が見えない、strict refsでは動かない等の問題があることだけ注意。
0728720
01/10/10 01:08ID:fymnbEUM(´-`).。oO(なんでこんなヘボいミスしたんだろう……)
というわけで、
eval("qq($template)")
が正解です。失礼しました。
qqについては
ttp://flex.ee.uec.ac.jp/texi/perl/perl_136.html
このへん参照するといいと思う。
0729716
01/10/10 08:19ID:OwjZu2K6レスどうもです。そうですか、ドキュメントを未だちゃんと読んでいなかった
のですが、Compress::Zlibはコンパイルが必要ですか。プロバのHPなので
それも出来なくてちと悲しいです。
0730名無しさん@お腹いっぱい。
01/10/10 11:46ID:???コンパイルもやろうと思えば出来ますよ。
0731名無しさん@お腹いっぱい。
01/10/10 14:09ID:29gVd4os送信したいんですが、どのように受け渡せばいいのでしょう?
$ua->cookie_jar($cookies);
みたいに格納できるメソッドがあるのですか?
0732名無しさん@お腹いっぱい。
01/10/10 14:48ID:???CGIで読みこんだりとかできるの?それでパスクラックできねえかな。
0733名無しさん@お腹いっぱい。
01/10/10 14:56ID:???0734名無しさん@お腹いっぱい。
01/10/10 14:58ID:???0735名無しさん@お腹いっぱい。
01/10/10 16:22ID:2.AeAxdcPOST用のデータはRequestのほうに入れとく。
my $req = HTTP::Request->new(POST => $url);
$req->content('name=hoge&text=hoge');
もしデータ内に日本語などがある場合は
use HTTP::Request::Common;
$req = HTTP::Request::Common::POST($url, [name='ほげ',text='ふが']);
を使うと、自動的にエスケープしてくれて楽。
0736名無しさん@お腹いっぱい。
01/10/10 16:25ID:???0737名無しさん@お腹いっぱい。
01/10/10 16:28ID:???0738名無しさん@お腹いっぱい。
01/10/10 16:46ID:???ありがとうございます。
調べてみたら
$hd = HTTP::Headers->new;
foreach $key ( keys %FORM ){
$hd->push_header( $key -> $FORM{$key} );
}
$req = HTTP::Request->new( 'POST', $url, $hd );
でもいけそうな感じだったので試してみます。
というかPOSTで渡す内容が不特定なので
[name=>'ほげ', text=>'ふげ']
だと無理ですかね。
0739731
01/10/10 18:23ID:???うう、 $hd->push_header ではうまくいきませんでした。
>>735 さんの方法で上手くできるんでしょうが、不特定多数の
要素を送る必要があるのでこの方法は使えないし…。
すいません、不特定多数の要素を POSTとして送る方法を
教えていただけないでしょうか。
0740名無しさん@お腹いっぱい。
01/10/10 19:04ID:???0741740
01/10/10 19:06ID:???my $req = HTTP::Request::Common::POST($url, \%FORM);
0742名無しさん@お腹いっぱい。
01/10/10 19:37ID:???うまく動いてくれません。
何が足りないのか教えてください。
sub foo()
{
sub _getstr($)
{
my ($str) = @_;
return $str . "だよ\n";
}
my ($str) = _getstr("てきとー");
print $str;
}
sub foo2()
{
sub _getstr($)
{
my ($str) = @_;
return $str . "だもん\n";
}
my ($str) = _getstr("てきとー");
print $str;
}
&foo();
&foo2();
0743名無しさん@お腹いっぱい。
01/10/10 20:05ID:0t.5n9Msそれじゃ_getstrが局所的な関数定義になってないです。
Perlは基本的に、どこで定義してもグローバル関数(笑
2つの_getsrtを別々の名前空間で定義すればオーケ。
sub foo() { package foo; sub _getstr() 以下略 }
sub foo2() { package foo2; sub _getstr() 以下略 }
0744名無しさん@お腹いっぱい。
01/10/10 20:27ID:???どうもありがとうございます。
my宣言とかできるかちょっと期待したのですが、
これは、packageの方も少し試してみて、
内部関数名を変えるかpackage使うか決めたいと思います。
(関数内でpackage書けるの知りませんでした。どうもです)
0745名無しさん@お腹いっぱい。
01/10/10 20:42ID:???0746名無しさん@お腹いっぱい。
01/10/10 20:56ID:???local *foo = sub{ hogehoge };
my $foo = sub{ hogehoge };
#とすれば良いのではないかな?
0747名無しさん@お腹いっぱい。
01/10/10 22:41ID:???それがほんとのローカル関数ですね。
743みたいなのは外から&foo::_getstr()でアクセスできるし。
0748名無しさん@お腹いっぱい。
01/10/10 23:55ID:???なるほど! ありがとうございます。
0749名無しさん@お腹いっぱい。
01/10/11 11:44ID:???なるほど。こんな感じですね。
どうもありがとうございます。
sub foo()
{
my $_getstr = sub($)
{
my ($str) = @_;
return $str . "だよ\n";
};
my ($str) = $_getstr->("てきとー");
print $str;
}
プロトタイプに注意。
#!/usr/bin/perl
sub PrintScalar($){ print shift, "\n" }
BEGIN{
*PrintScalar2 = \&PrintScalar;
$PrintScalar3 = \&PrintScalar;
}
*PrintScalar4 = \&PrintScalar;
$PrintScalar5 = \&PrintScalar;
my @hoge = qw(foo bar);
PrintScalar (@hoge);
PrintScalar2 (@hoge);
$PrintScalar3->(@hoge);
PrintScalar4 (@hoge);
$PrintScalar5->(@hoge);
PrintScalar6 (@hoge);
BEGIN{
*PrintScalar6 = \&PrintScalar;
}
__END__
0751名無しさん@お腹いっぱい。
01/10/11 16:48ID:kMiBAPJ6えーと、「プロトタイプを有効にするには、BEGINブロックの中で
エリアスを作るしかない」つーことですか?
あ。念のため今perldoc perlsub見たら、そう明記されてたっす。
知らなかったー。プロトタイプあんま使わないから。
要するにプロトタイプ付きの「ローカル関数」は作れないってことなのか。
0752751
01/10/11 16:51ID:???0753名無しさん@お腹いっぱい。
01/10/11 20:27ID:???なんかサンプル見るとtry〜catch構文とか作ってて
いろんな意味でスゲーんですけど。
俺は一生プロトタイプ'&'を自分で使うことはあるまい。
0754nullsann
01/10/11 23:27ID:S31Vh/vQファイルロックは一度で良いんでしょうか?
sub filecheck{
&lock;#
open IN,"$logfile";
#syori
close IN;
open FP,"> $logfile"
#syori
close FP;
.
.
.
.
&unlock;
}
mkdirのロック方式使ってるんですが・・・。
0755名無しさん@お腹いっぱい。
01/10/12 00:30ID:???一度でよし。
0756名無しさん@お腹いっぱい。
01/10/12 01:31ID:kGkVgeeAif ($ENV{'HTTP_REFERER'} ne 'http://許可する.com') {
print "Location: http://ばいばい.com\n";
print "\n";
}
にしたのですが、閲覧を許可する参照元をもう一つ増やすにはどうしたらいいですか?
if ($ENV{'HTTP_REFERER'} ne 'http://URL1'|'http://URL2')
だとうまくいきませんでした
0757名無しさん@お腹いっぱい。
01/10/12 01:54ID:???許可するのが2つぐらいなら
「URL1ではなく、URL2でもなければ、ばいばい」というふうに
素直にコーディングするといいです。
if ($ENV{略} ne 'URL1' and $ENV{略} ne 'URL2') {
・・・
}
0758名無しさん@お腹いっぱい。
01/10/12 10:18ID:UFajsOUw根本的に違うのでしょうか?お教えください。
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD><TITLE>CGIテスト</TITLE></HEAD>\n";
print "<BODY>\n";
#
print "<form name="form1" method="post" action="">\n";
print "<input type="checkbox" name="checkbox" value="checkbox">\n";
print "</form>";
#
print "</BODY>\n";
print "</HTML>\n";
__END__
0759名無しさん@MZ-2000
01/10/12 10:21ID:???とりあえず
print "<form name="form1" method="post" action="">\n";
print "<input type="checkbox" name="checkbox" value="checkbox">\n";
この二行がだめ。
0760名無しさん@お腹いっぱい。
01/10/12 10:24ID:???0761名無しさん@お腹いっぱい。
01/10/12 10:39ID:DN2jVK/o0762名無しさん@お腹いっぱい。
01/10/12 11:11ID:VXGFJvh.print "<input type="checkbox\" name=\"checkbox\" value=\"checkbox\">\n";
だね。
0763名無しさん@お腹いっぱい。
01/10/12 11:16ID:VXGFJvh.print "<input type=\"checkbox\" name=\"checkbox\" value=\"checkbox\">\n";
鬱だ。
0764名無しさん@お腹いっぱい。
01/10/12 11:20ID:???0765名無しさん@お腹いっぱい。
01/10/12 11:39ID:???qq{<input type="checkbox" name="checkbox" value="checkbox">\n};
まぁ>>758、お前はマトモな本で基礎を勉強してから出なおしなさいってこった。
0766名無しさん@お腹いっぱい。
01/10/12 11:43ID:uPcFyHO2ロジックを1行に書くのって頭が混乱しない?
効率悪いかも知れないけど、こんな関数を作るほうがいいと思う。
if (! &is_good_referer()) {
:
}
sub is_good_referer {
my @kyoka = ('URL1', 'URL2');
foreach my $url (@kyoka) {
if ($ENV{HTTP_REFERER} eq $url) {
return 1; # 許可するURLのどれかに一致すれば1を返す
}
}
return 0; # どれにも一致しなければ0を返す
}
0767業
01/10/12 11:57ID:e.iu2Egsただ、空白2文字はちょっとな。4文字は欲しい。
0768名無しさん@お腹いっぱい。
01/10/12 12:13ID:Qk0xmYmc扱いができないのでしょうか?
cgiとして動かすか、実行形式にするしかないのですか?
0769名無しさん@お腹いっぱい。
01/10/12 12:18ID:ZYB0SiF6意味わからん…。
もっと具体的に言ってくれ。
0770名無しさん@お腹いっぱい。
01/10/12 12:19ID:???ラリーヲールが2文字推奨なんだっけ?
0771名無しさん@お腹いっぱい。
01/10/12 12:20ID:Qk0xmYmc即レス感謝です。
わかりずらいですね。DOS窓からスクリプト実行すると
file openとかしても読み取ってくれないのです。
これは何故でしょうか?
0772名無しさん@お腹いっぱい。
01/10/12 12:26ID:???0773名無しさん@お腹いっぱい。
01/10/12 12:27ID:ZYB0SiF6ありがちなのは、パス付きのファイル名を書くとき、
ダブルクォート文字列の中で"\"を"\\"としてないこと。
× "c:\hoge\fuga.txt" ←これはだめ
○ "c:\\hoge\\fuga.txt" ←これはよし。
○ 'c:\hoge\fuga.txt' ←シングルクォート使ってもよし
○ "c:/hoge/fuga.txt" ←"\"じゃなく"/"使ってもよし
0774名無しさん@お腹いっぱい。
01/10/12 12:29ID:???パスが違うかパーミッションの問題じゃねーの。
とりあえず
$filename = "moe/moe.txt"
open(F, $filename) or die "$!: $filename";
としかて、なんで失敗しているのか確認スレ。
0775名無しさん@お腹いっぱい。
01/10/12 12:37ID:???難しく考え杉じゃない。
わかれば簡単。で、サンプル
sub synchronized(&) {
my $code = shift;
lock();
$code->();
unlock();
}
synchronized {
# >>754から
open IN,"$logfile";
#syori
close IN;
open FP,"> $logfile"
#syori
close FP;
}
0776775
01/10/12 12:40ID:???synchronized {
#...
};#<-これ
0777名無しさん@お腹いっぱい。
01/10/12 13:23ID:PeaA6TSMor die "$!: $filename";
いれてやったらファイルみつからんて言われちゃいました.
0778名無しさん@お腹いっぱい。
01/10/12 13:34ID:???0779名無しさん@お腹いっぱい。
01/10/12 13:50ID:???御迷惑おかけしました。
どうもありがとうございました。
0780名無しさん@お腹いっぱい。
01/10/12 14:02ID:PeaA6TSM$sym = mypack::$var;
は、
$var = 'myvar';
$sym = "mypack::$var";
とは違うらしいのですが、何が違うのでしょうか?
0781777-780
01/10/12 14:45ID:???DOS窓だと
open(MAIL, ">>$docomo");って
できないんですか?追記のはずが最初の一回目しか
書き込めんですヽ(`Д´)ノ
0782名無しさん@お腹いっぱい。
01/10/12 14:49ID:???なんか私の恥じをさらすスレと化してしまい
申し訳ありません。
ごめんなさい。ごめんなさい。ごめんなさい。
0783JAPU@見知らぬ国のトリッパー ◆dcddJAPU
01/10/12 14:51ID:???...という違いです。
0784名無しさん@お腹いっぱい。
01/10/12 14:51ID:???ミスるのはいいから、なにをどうミスっていたか書いておいてほしい。
それを見た他の初心者が同じ事をしないですむ可能性があるんだから。
0785名無しさん@お腹いっぱい。
01/10/12 15:29ID:???誰もしないようなミスだったんで、、、
openする前に$docomoをforeach文で上書きしまくってました。
ちなみに相対パスだとオープンできないってのは
よくわからないままです。
他はみなさんの言うと通りやったらできました。
0786名無しさん@お腹いっぱい。
01/10/12 15:33ID:???780に対するのですね。ありがとうございます。
ただそれだけなんですか。なんか深い意味があるのかと
思っちゃいました。
0787名無しさん@お腹いっぱい。
01/10/12 15:35ID:???実行時のカレントディレクトリとスクリプトがおいてあるディレクトリは同じ?
0788名無しさん@お腹いっぱい。
01/10/12 15:53ID:???実行時のカレントディレクトリはスクリプトの
ある所になるのでは無いのですか?
0789名無しさん@お腹いっぱい。
01/10/12 16:05ID:???実行時のカレントディレクトリが基準になるのでは。
0790名無しさん@お腹いっぱい。
01/10/12 16:08ID:???0791名無しさん@お腹いっぱい。
01/10/12 16:46ID:???command.comからの相対パスなんですね。
なるほど。ありがとうございます。
0792名無しさん@お腹いっぱい。
01/10/12 20:37ID:???> command.comからの相対パス
何故そう解釈出来る?
command.comからの相対パスだと、基準はC:\Windowsになってしまうでしょ。
実行時のカレントディレクトリだぞ・・・
0793名無しさん@お腹いっぱい。
01/10/12 22:52ID:.7AHiXCo違うんですか?実行時のカレントディレクトリというのは
どういう事ですか?
ちなみにcommand.comからの相対パスで
やったらうまくいったものでして。。。
0794名無しさん@お腹いっぱい。
01/10/12 22:55ID:???0795名無しさん@お腹いっぱい。
01/10/12 23:16ID:???0796名無しさん@お腹いっぱい。
01/10/12 23:45ID:???見捨てられちゃったのですか?
意味が…わからん…。
0797名無しさん@お腹いっぱい。
01/10/13 00:16ID:???{command.comというファイルが置かれている場所からの相対パス}
こう考えなさい。
0798名無しさん@お腹いっぱい。
01/10/13 00:37ID:???ありがとうございますです。
とりあえず勉強不足過ぎという事ははっきりしました。
まぁ前からわかっていましたが…。
今日一日中このスレに常駐していた気がする。
勉強になるなぁ〜。
0799名無しさん@お腹いっぱい。
01/10/13 19:06ID:Z60DF3aYこれすごすぎ、gifファイルをHTMLだけで表現している。
あんまデカイ画像するとブラクラになりかねんが、
0800名無しさん@お腹いっぱい。
01/10/13 20:38ID:???うひひ(w
こんな感じになるのか?
ttp://hi.sakura.ne.jp/~okada/table/mario_bs2.html
0801名無しさん@お腹いっぱい。
01/10/13 21:10ID:rwndiC8Eそこはまだ同色のドットをつなげたりしてるからいいっすよ。
799のやつは全部1x1ドットに分解してた(呆
#これ見るためImage::Magickインストールしちゃったよ
0802名無しさん@お腹いっぱい。
01/10/13 21:16ID:???DHTMLは良いなあ・・・・
激しく無意味でイイ(・∀・)♪!
0803799
01/10/13 23:07ID:Z60DF3aY遊び以外で使うこと無いような。、
0804799
01/10/13 23:29ID:Z60DF3aY試しに、某板看板をしてみました。
にしてもサイズがでかくなりますね。
33KB->3767KB になちゃう。
0805
01/10/14 06:40ID:9DG4zskVWIN98でapache web server と active perl使ってます。
htdocsフォルダから、とあるcgiファイルをディスクトップ上に移動して、
書籍のサンプルcgiファイル(←移動させたcgiファイルと同じもの)
をhtdocsフォルダにコピペしました。
でそのコピペしたcgiファイルを実行すると、ファイルのダウンロードの画面がでてしまい、
結局そのプログラムは実行されませぬ。
なんででしょう? スレ違いな質問かもしれませんがアドバイスお願いします。
0806名無しさん@お腹いっぱい。
01/10/14 11:32ID:???もともとhtdocsにあったCGIは動作してたん?
それなら後からいれたやつは拡張子が変なんじゃない?
(.cgiじゃなくて.plになってるとか)
0807753
01/10/14 12:10ID:NXFePnJMなるほどー。その例はわかりやすいです。ありがと。
sub hoge(&) {…} を hoge {code}; と呼び出すつーのは
hoge(sub{code}) の省略なんだ。といまさらのように理解したおれ。
0808名無しさん@お腹いっぱい。
01/10/14 12:18ID:???>いわゆる「造語」でありますが、従来画像ファイルを用いて
>絵を、グラフィカルなページを作っていたと思うのですが、
>これをHTMLタグだけでなんとか出来ないだろうかという
>意味あるのか無いのか分からないような取り組みをして
>みようと思ったわけです。ここではそうして作った作品を
>総称してテーブルアートと呼んでおります。「テーブル」と
>呼んでいるのはHTMLタグで絵を描く際にもっとも多く使用
>するのが<TABLE>タグと呼ばれるものである事に起因しております。
だれでも考えつくが馬鹿馬鹿しくてやらないだけだと思われ。
0809名無しさん@お腹いっぱい。
01/10/14 12:21ID:???ブラウザ落ちたーよ。
0810名無しさん@お腹いっぱい。
01/10/14 12:22ID:???おれなら元画像にビットマップを用意してCGIで
自動でタグ書き出しちゃうけど、ドット単位になるから
でかいかな。
0811名無しさん@お腹いっぱい。
01/10/14 12:30ID:???意味わからん。
0812名無しさん@お腹いっぱい。
01/10/14 12:35ID:???「ほとんどCPANに登録してます」と書いてあるんだけど
このImage::HTMLも登録するのだろうか。
0813蝶初審社
01/10/14 19:02ID:/5Y8M3zo$a="nanashi";
$aa="nanashisan";
の時、
print "$aa";
とすると、表示されるのはnanashia,nanashisanのどっちでしょう?
前者は$aの変数の値と文字列"a"で
後者は$aaの値です。
Javaとかだと、変数と文字列の区切りがあるのでわかりかったんですが。
よろしくお願いいたします。
0814名無しさん@お腹いっぱい。
01/10/14 19:03ID:THG9awFD0815名無しさん@お腹いっぱい。
01/10/14 19:05ID:r53mAll2ローカルでテストができずにサーバーに負担をかけるかもしれないと気を使ってる可能性もあるぞ。
>813
ローカルにサーバーを立てて試せ。
0816蝶初審社
01/10/14 19:06ID:/5Y8M3zoそういうわけじゃなくて、"区切り"って無いんですか?
ということを聞きたかったんですが・・・。
0817名無しさん@お腹いっぱい。
01/10/14 19:08ID:???あるよ。
print "${a}a";
みたいに{}で変数名をかこむ。
0818名無しさん@お腹いっぱい。
01/10/14 19:09ID:???0819名無しさん@お腹いっぱい。
01/10/14 19:10ID:???0821名無しさん@お腹いっぱい。
01/10/15 18:29ID:6vdToKg4@hoge=("1234567890","1234567899","1111111111")
foreach(@hoge){
if($_>$time){この要素を削除;}
}
みたいのを使いたいのですがうまい方法無いでしょうか?
私の貧脳では
foreach(@hoge){
if($_>$time){splice (@hoge,$count,1);}
$count++;
}
としか思いつきません。
こんなんあるぞというのあれば教えて下さい。
0822名無しさん@お腹いっぱい。
01/10/15 18:34ID:???0823名無しさん@お腹いっぱい。
01/10/15 18:55ID:6vdToKg4感謝です!!
どういう仕組みかわからないですけど使わせてもらいます。
ありがとうございました。
0824823
01/10/15 19:32ID:???配列から$_<=$timeな要素を検索ですか!そして@hageへぶち込むと!
勉強になるですね。
0825822じゃないですが
01/10/15 20:05ID:???念に念を入れる意味で補足しておきますが、
@hoge = grep { $_ <= $time } @hoge; # 左辺の配列も@hoge
という風に、「自分自身にぶち込む」こともできます。
0826名無しさん@お腹いっぱい。
01/10/15 20:17ID:???レスどうもです。
おっしゃる様に使わせてもらっとります。
ありがたや〜。(^人^)
0827名無しさん@お腹いっぱい。
01/10/17 18:53ID:TnUIrJkb0828名無しさん@お腹いっぱい。
01/10/17 18:55ID:???0829名無しさん@お腹いっぱい。
01/10/17 19:04ID:???えらそうですいません。。
0830名無しさん@お腹いっぱい。
01/10/17 19:08ID:mFyYJQ/x「〜特定の〜」←ココんとこが特にわからん
0831JAPU ◆JAPUTeX.
01/10/17 19:16ID:???perldoc -f splice で全てが解決する可能性が高いです。
@majokko = qw[mami emi pelsia yumi lala];
splice @majokko, 1, 2;
print "@majokko\n";
特定の値を持つ要素を削除したければ grep が使えます。
@majokko = qw[mami emi pelsia yumi lala];
@majokko = grep !/i$/, @majokko;
print "@majokko\n";
とか、
@majokko = grep { not 4 < length } @majokko;
とか。
----
質問するときは具体例まであげると良いかも。
0832名無しさん@お腹いっぱい。
01/10/17 19:46ID:???配列から特定の要素を取り出してその要素を先頭に移すのはどうすればよいのですか?
たとえば、@hoge = qw[abc acb asd afd wer];
とあって、asdと言う値を取り出してこの配列の先頭に移すにはどうすればよいのですか?
0833名無しさん@お腹いっぱい。
01/10/17 19:56ID:???の677-683とか。
過去ログは貴重だな。
0834名無しさん@お腹いっぱい。
01/10/17 20:24ID:???0835名無しさん@お腹いっぱい。
01/10/17 21:57ID:2JY7Wh7vもしあるとすればどのように判断すればよいのでしょうか。
0836名無しさん@お腹いっぱい。
01/10/17 22:00ID:???0837名無しさん@お腹いっぱい。
01/10/17 22:20ID:???0838名無しさん@お腹いっぱい。
01/10/18 22:17ID:lS77su3dあらかじめ表示される状態を変化させる方法はどうやったらいいのでしょうか?
<select name="number">
<option value="1">1
<option value="2">2
<option value="3">3
<option value="0"selected>0
</select>
selectedの位置を変化させるのだろうか?でもどうやって(??)もっとうまいやり方
があるのだろうか?という感じです。よろしくお願いいたします。
0839名無しさん@お腹いっぱい。
01/10/18 22:20ID:???はい
0840名無しさん@お腹いっぱい。
01/10/18 22:23ID:???俺のやり方の場合
$select[$number] = " selected";
print <<"EOF";
<select name="number">
<option value="1"$selext[1]>1
<option value="2"$selext[2]>2
<option value="3"$selext[3]>3
<option value="0"$select[0]>0
</select>
EOF
0841名無しさん@お腹いっぱい。
01/10/18 22:24ID:???$select[$number] = " selected";
print <<"EOF";
<select name="number">
<option value="1"$select[1]>1
<option value="2"$select[2]>2
<option value="3"$select[3]>3
<option value="0"$select[0]>0
</select>
EOF
0842名無しさん@お腹いっぱい。
01/10/18 22:28ID:???どうでもいいけど識別子をEOFにするのはおかしいような・・・
0843名無しさん@お腹いっぱい。
01/10/18 22:51ID:gx0MC5aQどのような表記をすればいいのでしょうか?
<table>の属性なども不確定です。
<table><tr><td>
<table><tr><td>
<table><tr><td> --------------- この行から
題名
〜不確定内容〜
</td></tr></table> ----------------- この行まで
〜テーブル以外の長い要素が入る〜
フッタ
</td></tr></table>
</td></tr></table>
$str =~ m#(<table[^(<td)]+<td.+?題名</table>).+?フッタ#is;
とやってみましたがダメでした。
というか [^(<td)]+ みたいな使い方って正しいんでしたっけ?
「このグループ以外の連続」をやりたいのですが。
0844843
01/10/18 23:14ID:W7vPTi/jなんかわかりにくい書き方だったので補足します。
ようするに
「題名」という文字から前に調べに行って、
最初の「<table」から取得したいのです。
0845840-841
01/10/18 23:29ID:???すまない。
いつもはHTMLとか使ってて、でもそれだとカッコわるいかと思って
変えてみてた。(汗
そうだね、EOFはしない方がいいね・・・。
0846名無しさん@お腹いっぱい。
01/10/19 01:02ID:AxUzxNAn勉強のため、いっこ考えてみました。自信ないけど(滅
my $re1 = '<table[^>]*><tr[^>]*><td[^>]*>[^<>]*';
my $re2 ='</td></tr></table>';
$str =~ /($re1(?!$re1)題名.*?$re2)/is;
0847名無しさん@お腹いっぱい。
01/10/19 01:43ID:LITbLOttこんなのも。
$first_str = '<table';
$last_str = '/table>';
$title_str = '題名';
$title_pos = index $str, $title_str;
$first_pos = rindex $str, $first_str, $title_pos;
$last_pos = index $str, $last_str, $title_pos;
$last_pos -= $first_pos - length($last_str);
print substr $str, $first_pos, $last_pos;
0848通りすがりですが
01/10/19 01:56ID:???これ勉強になります、こう言うのってつい正規表現に傾倒しちゃうけど
ループに入れたりして、特定タグ内を抜き出す時とか便利そうですね、 ふむふむ...
0849名無しさん@お腹いっぱい。
01/10/19 06:59ID:???>>842
どうしてオカシイの? endが一杯になるから?
EOF
0850名無しさん@お腹いっぱい。
01/10/19 07:10ID:???別にまずくは無いけど、意味上おかしいって意味でしょ。
0851名無しさん@お腹いっぱい。 :
01/10/19 08:00ID:???0852名無しさん@お腹いっぱい。
01/10/19 16:45ID:iY0U/7m6シフトJISまたはUTF-8に変換する関数ってありますか?
0853名無しさん@お腹いっぱい。
01/10/19 17:01ID:???文字参照詳しく知らんけど&harts;みたいなやつ?
0854初心者
01/10/19 17:59ID:???0856名無しさん@お腹いっぱい。
01/10/19 20:22ID:Y/1F1KjV入力と回覧を別にしたいのですが、どんなデコード処理を
したらいいんでしょうか? sub formにして入力画面のみの
サブルーチンを作ってみましたが、上手く入力に反映されません。
0857名無しさん@お腹いっぱい。
01/10/19 20:32ID:???他人のCGIの改造?
Content-typeの吐き忘れじゃないの?
何がどう上手く動かないか詳しく説明して。
「上手く入力に反映されません」なんて、こっちからしたら
なにがどう上手く反映されてないかわからないんだから。
0858名無しさん@お腹いっぱい。
01/10/19 20:34ID:???BBSをみんなに回すの?
俺が知らないだけ?
だとしたらスマン。
0859名無しさん@お腹いっぱい。
01/10/19 20:44ID:???少しは過去スレ見ろよ。以前俺が答えたんだから間違いなくある。
#!perl
use 5.6.0;
my $a = '?';
$a =~ s/?([0-9A-Fa-f]+);/pack 'U', $1/ge;
__END__
あとは自分で考えろ。
0860859
01/10/19 20:46ID:???以下全て半角
#!perl
use 5.6.0;
my $a = '&#28023; ';
$a =~ s/&#([0-9A-Fa-f]+);/pack 'U', $1/ge;
__END__
0861名無しさん@お腹いっぱい。
01/10/19 21:16ID:???0862856
01/10/19 22:03ID:???BBSは一覧表示型です。すみません、自己解決しました。
単なるスペルミスでした、お恥ずかしい。
どうもありがとうございました。
0863名無しさん@お腹いっぱい。
01/10/19 22:33ID:???foreach(@aaa){
@bbb = split(/<>/);
$ccc = @bbb[0];
}
とするのと
foreach(@aaa){
($ccc,$ddd,$eee) = split(/<>/);
}
とするのではどっちが効率的なんでしょうか?
後者で言う$ddd,$eeeは使わないんですが。
0864名無しさん@お腹いっぱい。
01/10/19 22:40ID:???その程度の差なら気にしなくていい。
微量な差が気になるならBenchmark.pmを使え。
因みに後者は
($ccc, undef, undef) = split(/<>/);
とした方が若干メモリの節約になる。若干だが。
0865名無しさん@お腹いっぱい。
01/10/19 22:44ID:???foreach(@aaa){
$ccc = (split(/<>/))[0];
}
ってのはどうなんでしょう?
変わらない?
0866名無しさん@お腹いっぱい。
01/10/19 22:44ID:???>863-864です。
0867名無しさん@お腹いっぱい。
01/10/19 22:45ID:???こんなのも。
@array = qw[a<>b<>c 1<>2<>3];
@result = map { (split /<>/, $_, 2)[0] } @array;
0868名無しさん@お腹いっぱい。
01/10/19 22:45ID:???なるほど。
大して変わらないなら余計な変数使わない前者の方が
ソースがスッキリしそうですね。(実際は11個の要素があるので。)
ありがとうございます。
0869863=868
01/10/19 22:46ID:???0872名無しさん@お腹いっぱい。
01/10/20 16:19ID:???0873名無しさん@お腹いっぱい。
01/10/20 19:24ID:???m/^([^<>]*)<>/;
push(@ccc,$1);
}
0874名無しさん@お腹いっぱい。
01/10/20 21:19ID:???0875名無しさん@お腹いっぱい。
01/10/20 21:32ID:???正規表現は遅いでしょ。
foreach(@aaa){
$ccc = substr($_,0,index("$_","<>"));
}
0876名無しさん@お腹いっぱい。
01/10/20 21:56ID:???0877名無しさん@お腹いっぱい。
01/10/20 23:55ID:???perl -v
This is perl, v5.6.1 built for MSWin32-x86-multi-thread
use Benchmark;
my $line = 'aaa<>bbb<>ccc<>ddd';
timethese(2000000, {
t_split => q{ my $ccc = (split /<>/, $line, 2)[0]; },
t_substr => q{ my $ccc = substr($line,0,index($line,"<>")); }
});
__END__
Benchmark: timing 2000000 iterations of t_split, t_substr...
t_split: 5 wallclock secs ( 4.28 usr + 0.00 sys = 4.28 CPU) @ 467180.57/s (n=2000000)
t_substr: 5 wallclock secs ( 5.14 usr + 0.00 sys = 5.14 CPU) @ 389105.06/s (n=2000000)
0878875
01/10/21 00:07ID:???ほぅ。
それはしらなんだ。
サンクス。
0879名無しさん@Emacs
01/10/21 00:15ID:Xm/NF+m90880名無しさん@お腹いっぱい。
01/10/21 00:41ID:???my $line = 'aaa<>bbb<>ccc<>ddd';
timethese(2000000, {
t_split => q{ my $ccc = (split /<>/, $line, 2)[0]; },
t_substr => q{ my $ccc = substr($line,0,index($line,"<>")); },
t_reg => q{ my $ccc = ($line =~ m/^([^<>]*)<>/)[0]; }
});
__END__
Benchmark: timing 2000000 iterations of t_reg, t_split, t_substr...
t_reg: 4 wallclock secs ( 3.74 usr + 0.00 sys = 3.74 CPU)
t_split: 6 wallclock secs ( 5.12 usr + 0.00 sys = 5.12 CPU)
t_substr: 5 wallclock secs ( 5.83 usr + 0.00 sys = 5.83 CPU)
This is perl, version 5.005_03 built for MSWin32-x86-object
0881名無しさん@お腹いっぱい。
01/10/21 01:29ID:???@aray = ('apple','orange','apple','melon','apple','orange');
@dummy{@aray} = (); ####この行
@disp = keys(%dummy);
###の左辺では何が起きているのでしょうか、@と言うのが分かりません。
$dummy{@aray}にしてみると要素数が入ってるし。。。
%dummyはハッシュですよね? 難しいです
0882REN
01/10/21 01:37ID:T+S0eZYVjcodeはちゃんと置いてるんですが。なにかほかの原因がありますか?
ソースが必要ならtxtでアップします。
0883名無しさん@お腹いっぱい。
01/10/21 01:39ID:???スライスについて調べてみれ。
スライスの例として、
@aray = ('apple','orange');
@dummy{@aray} = (1,2);
は、
$dummy{apple} = 1;
$dummy{orange} = 2;
と等価。
0884REN
01/10/21 01:47ID:T+S0eZYVhttp://www25.tok2.com/home/rensphoto/bbs-a.txt
http://www25.tok2.com/home/rensphoto/bbs-a.cgi
0885名無しさん@お腹いっぱい。
01/10/21 01:48ID:???まずHTMLソースを確認する。
ソースが文字化けしていなければ、文字コードの認識ミス。
METAタグとかで文字コードを指定しよう。
詳しい事はWEB製作板に。
HTMLソースが化けているとしたら、原因はそれ以外。
特定の文字だけ化けるのか全体が化けるのかにもよる。
特定の文字だけ化けるなら「予」「表」「ソ」などが使われている場所で
ないか確認。
文字化けする1文字目の後ろに「\」を入れてみる。
ただしこれはs-jis限定、eusでは起きない。
HTMLソース全体が化けるなら、CGIのソースを見せてほしい。
0886名無しさん@お腹いっぱい。
01/10/21 01:49ID:???有難う御座います。
スライスの添え字はリストコンテキストですよね、でも
@dummy[@aray] では駄目なんですよね、これは左辺に有るからですよね。
それで、何故か連装配列になってる!
んー、難解ですぅ、、perldocかなぁ、、、
0887名無しさん@お腹いっぱい。
01/10/21 01:49ID:???jcode.pl置いてるだけで使ってないじゃん・・・
0888名無しさん@お腹いっぱい。
01/10/21 01:53ID:???$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
&jcode'convert($name,"sjis");
これを$i=0;の上くらいに置こうね。
0889REN
01/10/21 01:53ID:T+S0eZYVrequire './jcode.pl';
これじゃダメなんですか....?
0890名無しさん@お腹いっぱい。
01/10/21 01:54ID:???ハッシュスライスって言うのかぁ、、{}でハッシュスライスである事を
明示するんですね、なるほど〜
0891名無しさん@お腹いっぱい。
01/10/21 01:55ID:???0892REN
01/10/21 01:56ID:T+S0eZYV今からいってきます...。
0893REN
01/10/21 02:12ID:T+S0eZYVやってみましたが、どうもダメみたいです.....。
0894REN
01/10/21 02:17ID:T+S0eZYVすいません、うまくいきました。
これからいろんなスレ読んで勉強してきます。
ありがとうございました。
0895名無しさん@お腹いっぱい。
01/10/21 14:02ID:yRzQNOPjできるのでそしょうか?
イメージとしては
$HASH = ( '20010930'=>'9/30', '20011001'=>'10/1', '20011002'=>'10/2');
delete $HASH{/^200110/};
みたいにまとめて消せればなぁと思いまして。
foreach $key( keys %HASH ){
delete $HASH{$key} if $key =~ /^200110/;
}
ってやるしかないでしょうか?
0896895
01/10/21 14:04ID:yRzQNOPj%HASHB = %HASH{/^200110/};
みたいな。感じのことができればいいかなと。
さすがに無理ですか?
0897名無しさん@お腹いっぱい。
01/10/21 15:15ID:???CPANのTie::RegexpHashやTie::Hash::Regexがいいかモナー。
普通のハッシュより圧倒的に遅くはなるがな。
0898名無しさん@お腹いっぱい。
01/10/21 15:29ID:???deleteは引数にハッシュスライスも指定できるよ。
delete @HASH{grep {/^200110/} keys %HASH};
0899名無しさん@お腹いっぱい。
01/10/21 16:39ID:???必要なキーをgrepで出して,mapでそのハッシュ渡せばできる。
簡単な文でやるならforeachで一つづつ追加,かな。
0900名無しさん@お腹いっぱい。
01/10/21 17:01ID:MXQ9p/0K0901名無しさん@お腹いっぱい。
01/10/21 17:15ID:???SCRIPT_NAME=
SCRIPT_URI=
SCRIPT_URL=
あたり。
0902名無しさん@お腹いっぱい。
01/10/21 17:17ID:???foreach (sort keys %ENV) { print "\$ENV{$_}: $ENV{$_}\n"; }を実行してそれらしいのを探す。
print __FILE__;
も参考に。
0903900
01/10/22 00:14ID:???0906名無しさん@お腹いっぱい。
01/10/22 02:28ID:???&jcode::tr()かな。↓が詳しいよ。
http://www.mikeneko.ne.jp/~lab/kcode/jcode.html#h2-10
0907名無しさん@お腹いっぱい。
01/10/22 11:33ID:VtVoe4OWそのデータを貯めて、次ページ、前ページでリスト表示したいのですが、
次ページで再度、同じCGIを呼ぶときに、前に読みこんだデータを保持できないのですが、
なにか方法はあるのでしょうか?
データ数が多いのと、レスポンスの関係上、ページ切替毎にDB読みこみは裂けたいという状況なのですが、
もし、何か策があったら、手ほどきをお願い致します。
0908名無しさん@お腹いっぱい。
01/10/22 12:18ID:???ファイルの書き出してもORACLEから再度取り出した方が早い。
0909名無しさん@お腹いっぱい。
01/10/22 21:01ID:VtVoe4OW永続的オブジェクトの詳しいことはどこかに、書いてないですか?
永続的に保持できるとはいうものの、実際どのようにして保持するのかが、
まったくもってわかりません。どなたか、分かる方、教えてください。お願いします。
0910名無しさん@お腹いっぱい。
01/10/22 21:10ID:???て言うかnewって何?、blessって何?
全然分かんないよぅ。。。。ウワァ〜〜ン ε===((((((;´Д`)
0911名無しさん@お腹いっぱい。
01/10/22 21:17ID:jrHSHu0Z今は
認証.cgi→本体.cgiにして
本体でrefererをチェック認証.cgiと本体.cgi以外からだと蹴ってます。
が、キャッシュは残るし、referer偽造で軽く見られるし…
なんかいい方法ないですか?
0912名無しさん@お腹いっぱい。
01/10/22 21:38ID:???./htpasswordを使う。
CGIだけでどうにかするなら、有効期限を10分とか短い時間にしたcookieを食わせる手もある。
ただし利用者がcookieオフにしていたら入れなくなるけどな。
他には認証.cgiでIPを記録してそのIPでのアクセスを許可する手もあるけど、これは串利用者の場合通ってしまう可能性もある。
tu-ka,本体.cgiで認証もすればいいだけじゃ?
0913名無しさん@お腹いっぱい。
01/10/22 21:39ID:???if($hoge eq $pass){HTML表示}
これを先頭にぶち込めばいいんでないの?
0914名無しさん@お腹いっぱい。
01/10/22 21:40ID:???0915あのー
01/10/22 21:43ID:0plXJa9eフリーウェアのDBを探してるんですが、
MySQLがベストなんでしょうか?
これよりいいのがあったらぜひ教えてください
0916名無しさん@お腹いっぱい。
01/10/23 01:12ID:???MySQL の方が扱いやすいと思う。
↓Linux 向けの記事だけど DB に関する部分は OS に関係ないので参考までに。
http://www.atmarkit.co.jp/flinux/index/indexfiles/index-linux.html#postgres
0917名無しさん@お腹いっぱい。
01/10/23 01:49ID:???WIN+Activeperl5.6 どの組み合わせでもa.outが実行出来ません(´Д`;)ウゥ..
Activeperl5.6 → ライブラリを探しに行ってあぼーん
Cygwin+5.6 → 実行するとコアダンプしてしぼーん
linux → コアダンプしてしぼーん
と言う感じです、どれも簡単なプリント文なんですが
ボクの環境は呪われているのでしょうか?
良いWeb等がありましたらご教授くださいませ。
0918名無しさん@お腹いっぱい。
01/10/23 01:57ID:???#!/usr/bin/perl
$mes = 'This is test message';
@array = qw(dog monkey cat cow rabit);
@array = sort{$a cmp $b}@array;
print "$_\n" foreach @array;
print "$mes\n";
exit(0);
0919名無しさん@お腹いっぱい。
01/10/23 02:13ID:???Perlcc でまともなバイナリを作るのは難しいみたい。
google ってみても(日本語のページでは)成功例は見ないね。
0920名無しさん@お腹いっぱい。
01/10/23 02:31ID:???ありがとです(・∀・)
まだまだみたいですね>perlcc、高速化に期待してる訳では無くて
ちょっと秘匿性が上がるのと、pmをスタティックにリンクしてバイナリ化出来る?
らしいので期待してたんですが・・・ どうも5.6系は駄目みたいです
とあるWebで、何気に入れたら何気に動いたんでCGIに使ったらこれも動いた!
って書いてたんで結構枯れてるのかなと思ったんですが
色んなヴァージョン入れてみようかな・・・・とほほ
引き続き安定Ver情報が有りましたらお願い致します。。
0921名無しさん@お腹いっぱい。
01/10/23 06:34ID:???どんな感じかなぁ・・・
0922名無しさん@お腹いっぱい。
01/10/23 08:35ID:???リリースされたなんて聞いてない。
0923名無しさん@お腹いっぱい。
01/10/23 09:08ID:???0924名無しさん@お腹いっぱい。
01/10/23 09:23ID:???何処に5.8があるんだよ、ボケ。Perlじゃないなら何の5.8かぐらい書こうな。
0925名無しさん@お腹いっぱい。
01/10/23 10:07ID:FWFaOvc80926JAPU ◆JAPUTeX.
01/10/23 10:57ID:???開発版。FreeBSD で言う current みたいなものです。普通の人は使いません。
>>910
多分、「プログラミングPerl (Programming Perl) 改訂版」「実用Perlプログラミング (Advanced Perl Programming)」を読むのが吉。
とりあえず端折った説明。
普通の配列は
@moe = ("motoko", "kanako");
のように変数名が付くけど、無名配列は変数名が付きません。なので、リファ
レンスを使ったアクセスのみ可能です。[...] は無名配列生成子で、無名配列
を生成してそこへのリファレンスを返します。
$ref = ["motoko", "kanako"];
で、これがどう役立つかと言えば、
@moe = (["sakura", "tomoyo"], ["motoko", "kanako"]);
のように使用して、$moe[0][1] ($moe[0]->[1] と等価) のようにアクセスし
ます。$moe[0] は ["sakura", "tomoyo"] という無名配列を差すハッシュです。
(print ref($moe[0]), "\n"; とすれば ARRAY と表示されます。) {...} とい
う無名ハッシュ生成子もあるので、同じように使えます。
0927JAPU ◆JAPUTeX.
01/10/23 11:00ID:???Bless はリファレンスを、あるパッケージのオブジェクトにします。($obj =
new HoeHoe; で HoeHoe オブジェクトを作って $obj->hoge(...) のように使
えますが、new の内部で使われます。)
下の例では HoeHoe::new が無名ハッシュへのリファレンスを返していますが、
これは bless されて HoeHoe パッケージのオブジェクトになっているので、
$hoe->value()という呼び出しが可能になっています。
ここではハッシュへのリファレンスを渡しているけど、スカラとか配列へのリ
ファレンスでもOKだよ。
#! /usr/bin/perl
$hoe = new HoeHoe("puni");
print $hoe->value(), "\n";
$hoe->value("hage");
print $hoe->value(), "\n";
package HoeHoe;
use Exporter;
use vars qw[@ISA];
@ISA = "Exporter";
sub new {
my $pkg = shift;
my $value = shift;
bless {value => $value}, $pkg;
}
sub value
{
my $obj = shift;
if(@_) {
$obj->{value} = shift;
} else {
$obj->{value};
}
}
__END__
0928トリップガ(・∀・)イイ!!
01/10/23 12:18ID:???なるほぢ、Cの構造体のような感じになるんですね。
>$moe[0][1] ($moe[0]->[1] と等価)
$moe[0]->[1]の方が参照外しが分かり易そうでよかったので
これで行こうと思います。
>Bless はリファレンスを、あるパッケージのオブジェクトにします
まさにperlobjの説明にある関連付けをblessで行うんですね。
今書いて頂いたサンプルを見て色々考えてますです。
上手に使うと、参照渡しより柔軟に変数を操作出来るのかな?
OO童貞の厨房にはチト難しいです ((汁;
取り合えずpackageを沢山作りながら勉強します。
使い方は後からにしよう!
本は金欠マンなんで再来月位になりそうですが。。。汗
実用Perlプログラミングを買おうと思います。
ありがとうです
0929911
01/10/23 14:43ID:ROBN75GSもとからあった日記のCGIを
If pass eq pass {もとからあったCGIそのまま}
else えらーめっせーじ;
にしたんですが、日記の閲覧ページから書き込みページに移動しようとすると
とっぷのパスワードチェックに戻って今います。
どうしたらいいのでしょうか?
if節の中だとサブルーチンに入れないのでしょうか?
0930名無しさん@お腹いっぱい。
01/10/23 14:53ID:???んなこたない。
もう一度よく確認してみろ。
おそらく閲覧ページから書き込みページに移る際にパスワードを渡してないだけだろ。
パスワードが入っていないと元のCGIに辿り着けないんだろ?
だとしたらきっとパスワードを渡してないだけだ。
0931911
01/10/23 15:46ID:ROBN75GS0932名無しさん@お腹いっぱい。
01/10/23 15:59ID:2S5ZWxco「’」と「”」を使い分ける理由を教えていただけませんか?
Perlは文字リテラルと数値リテラルなど区別がないらしいのに、
どうして・・・
単純な質問ですいません。
0933名無しさん@お腹いっぱい。
01/10/23 16:03ID:???これは貴方のの予想どうりに動きますか?
0934名無しさん@お腹いっぱい。
01/10/23 16:07ID:???ヒアドキュメントで"_HTM_"; とかして @ を使うと死ぬのは
覚えといて下さい、今後の為に。
0935名無しさん@お腹いっぱい。
01/10/23 16:17ID:???>If pass eq pass {もとからあったCGIそのまま}
>else えらーめっせーじ;
perl?
if を If と書いてるとかやってたら殺すよ?
出来るだけ正確に書けよ。
# だからと言って全部引用するなよ。
0936932
01/10/23 16:20ID:QI3yZ/4iうーん変数にシングルクォーテーションはいらないのは今試してわかりました。
ですが、他の人の書いたコードを見ると文字変数の値を代入する際に「’」や「”」
が入っていますよね?
この違いを教えていただけたらうれしいのですが・・・
933さんの簡単な例題にも時間を取られるような素人ですいませんが
よろしくお願いします。
0937名無しさん@お腹いっぱい。
01/10/23 16:21ID:???ちゃんと渡ってるかどうか、printして確認してみろ。
エラーが出た時の調査の一番簡単な方法だ。
「そんなはずはない」って思っている部分があったら、きっとそこが間違ってる。
思い込みをしたらエラーは見つけられない。
しらみつぶしに原因を探せ。
if(条件){書き込みフォーム}
else{パスチェック}
とあったら、その直前で条件を全部表示させてみろ。
それで9割がた解決する。
書き込みフォームの入口を調べろ。
0938名無しさん@お腹いっぱい。
01/10/23 16:24ID:???http://tohoho.wakusei.ne.jp/wwwperl1.htm#String
この辺。
0939名無しさん@お腹いっぱい。
01/10/23 16:25ID:???$foo = 'bar';
と
$foo = "bar";
なら大抵どちらでも同じ。
0940名無しさん@お腹いっぱい。
01/10/23 16:35ID:???んー、そんなに丁寧に聞かれると漏れも・・・(薄っぺらっ!
本家のドキュメントの何処かには、$var = "$foo"; とか return("$bar");
こう言うのは実際良く無いと書かれてます。この辺が>>936さんの悩み所?
ただ$var = "$fooさんハロー"; とかになった時に便利なんでやっぱりこの書き方
をしてしまう人が多いと思います。$var = 'ハロー'; が $var = '$fooさんハロー'
とか。結局初めのうちに色々考えながらやってる分には"で括ってエスケープ
しまくるのが手っ取り早いんだと w
後、変数展開のコスト(' と ")に付いて良く議論されてますが、個人的には屁でも無いです
ガンガン " を使いましょう、
後初めの頃に気を付けるべきなのは、print "@array"; とprint @array; は決定的に違います
それとさっき書いたヒアドキュソメントの@、くらいかなぁ漏れが嵌ったのは
C使うなら qq とか qw も調べてみると吉かもしれませぬ。
0941名無しさん@お腹いっぱい。
01/10/23 16:38ID:???print '表示';
前者は文字化けします。(s-jis限定)
変数がないのならなるべく'がいいと思ってます。
その前にeucを使えと言われそうですが。
0942名無しさん@お腹いっぱい。
01/10/23 16:41ID:???http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq4.html
What's wrong with always quoting "$vars"? 辺り
データ型は必読ですよん
0943名無しさん@お腹いっぱい。
01/10/23 16:50ID:???何でもqq、でエスケープしまくり ハヂメテノパール
↓
エスケプウザー(゚Д゚)、で q も使ってみる ←この段階の配布コードが何故か多い
↓
qq、q とヒアドキュで良いじゃん(・∀・)♪
↓
ソースキレー(゚Д゚)
0944名無しさん@お腹いっぱい。
01/10/23 16:51ID:???0945
01/10/23 16:58ID:jinEtdTYなにか原因にこころあたりがあるかたいますか?
初回起動のあと5秒くらいで2度目の起動がかかってしまいます。
0946936
01/10/23 17:14ID:???今現在ではまだ詳しい事が全然理解できていないので、
みなさんのおっしゃった事を纏めて
変数代入時は「”」
変数に代入しない2byte文字列を使うときは「’」
を使ってみようと思います。
その他色々教えていただいた事は今から調べてみます。
本当にありがとうございました。
0947名無しさん@お腹いっぱい。
01/10/23 20:23ID:6sXZfXmj↑みたいな風なプログラムを作るんだったら
C言語じゃできない?なにだったらいいかな?
0948名無しさん@ほっとぞぬ
01/10/24 00:48ID:???以下のような場合ダメだったので
@kkk = @fff[0][3 .. 6];
0949名無しさん@お腹いっぱい。
01/10/24 00:53ID:???使えるよ
@kkk = @{$fff[0]}[3..6];
0950名無しさん@ほっとぞぬ
01/10/24 01:04ID:???高速レス、サンクスです。
@{$fff[0]} = (2, 3, 4, 5, 6, 7, 8, 9, 0);
という代入もできるんですね。
もう一つ聞いてもいいでしょうか?
多次元配列にまとめて代入できますか?
@kkk = ((3, 4, 5), (2, 3, 4), (6, 7, 8));
だとだめでした。
0951名無しさん@お腹いっぱい。
01/10/24 01:06ID:???0952名無しさん@お腹いっぱい。
01/10/24 01:07ID:???@kkk = ([3,4,5],[2,3,4],[6,7,8]);
ではなく?
0953名無しさん@ほっとぞぬ
01/10/24 01:10ID:???1次元で () で囲むので多次元でもそうだと思い込んでいました。
有難うございました。
0954名無しさん@お腹いっぱい。
01/10/24 02:11ID:Haoaz9Y7$foo{bar}->[1] = 'い';
$foo{bar}->[2] = 'う';
というのがある状態で
foreach $hoe ( $foo{bar} )
もしくは
foreach $i ( 0 .. $#foo{bar} )
みたいな取り出し方ってできないのでしょうか?
0955名無しさん@お腹いっぱい。
01/10/24 02:20ID:???0957名無しさん@お腹いっぱい。
01/10/24 04:48ID:6Q3D2kbAprint "content-type: text/html\n\n";
$g=25425425124%241;
print "$g\n";
これ実行すると0が返ってくる・・・別のサーバーに置くと14が・・意味不明。
わかる人いますか?
0958名無しさん@お腹いっぱい。
01/10/24 04:55ID:???http://piza2.2ch.net/test/read.cgi/tech/991994996/505-
0959名無しさん@お腹いっぱい。
01/10/24 05:51ID:???どうもPERLの作法に慣れなくて・・・・
0960名無しさん@お腹いっぱい。
01/10/24 06:02ID:???再現しないぞー て当たり前か(´Д`;)
0961
01/10/24 07:20ID:WMwwHA4O0962名無しさん@お腹いっぱい。
01/10/24 07:26ID:???require japu;
0963名無しさん@お腹いっぱい。
01/10/24 07:32ID:???0又は空文字列って感じ(C#って良いよね)
今の君は白百合女学園からフリースクールに転校してきたような状態なんだよ へへ
他に嵌るパターンて言うと、ループ、再帰、mod_perl環境、undumpした実行ファイル
位かな、どれも前のウンコが入っててシボーンて奴だからそんなに凶悪じゃ無いし。
勿論慣れなきゃ全部初期化してもOK、コストがどうとか言う奴はホットケ(w
書いてればそのうち慣れてくるもんだし。
**もし**宣言の事言ってるんだったら、こっちはちゃんとしよう。
常時strict縛りがお勧め
0964954
01/10/24 09:57ID:???PerlLoL読みました。
参照ではなく実体で渡す必要があるから
foreach $hoe ( @{$foo{bar}} ){
foreach $hoe ( $#{$foo{bar}} ){
とやればいいのですね!
無事解決しました。ありがとうございます。
0965名無しさん@お腹いっぱい。
01/10/24 09:59ID:???なぜに?
0966名無しさん@お腹いっぱい。
01/10/24 10:00ID:???print $$ref;
sub func{
my $hoge;
$hoge = "hoge";
return \$hoge;
}
Cでこれやると駄目だよねえ。PerlでOkな理由がわかんない・・・。
0967名無しさん@お腹いっぱい。
01/10/24 11:30ID:???Perlのmy変数はCのauto変数と違い、
・スタックには積まれるわけではない。
・参照がなくなるまで実体も消えない。
と考えればよいでしょう。
0968911
01/10/24 11:41ID:EX0y50Sosub login {
if ($FORM{'pass'} ne "$pass") {
&header;
エラーメッセージ表示。
exit;
}
else{ 日記のCGIそのまま }
exit;
}
でパスをチェックして、つぎに日記CGIないのパスチェックで管理モードに移行させたいのです。
日記CGI単体での動作確認は取れてます。
どこがいけないのでしょうか?
0969ぽ
01/10/24 11:49ID:1tmsVagUstrict がエラーになっても $@ になにも設定されません(T_T
Known Bug でしょうか?
use strict;
eval(<<'EOF;');
$X = 1;
EOF;
if(defiend($@)){
print "[$@]\n";
}
0970名無しさん@お腹いっぱい。
01/10/24 12:13ID:???次のページに移動するとき
hoe.cgi?pass=password
みたいに渡してる?
0971名無しさん@お腹いっぱい。
01/10/24 12:16ID:???のようなスライスをすることは出来ますか?
(スライスとは言わないのかも)
0972JAPU ◆JAPUTeX.
01/10/24 12:28ID:???"Bug" かどうかは分かりませんが、Perl 5.6 では $@ に "Global symbol ..."
が格納されます。
0973ぽ
01/10/24 12:31ID:1tmsVagUありがとうございます。
こちらは Perl5.005_03 です。
ふーむ どうしようかなぁ
STDERR には "Global symbol ..." が出力されるので
こいつを捕まえるのがいいのかな。
0974ぽ
01/10/24 12:34ID:1tmsVagUはたまた 文字コード変換を追加したりできるモジュールとか
ありませんでしょうか?
&hogehoge(STDERR, \&buffering);
&hogehoge(STDOUT, sub { new Jcode(@_)->sjis(); });
みたいな感じで。
CPAN検索中....でも探すのヘタなんですよ(TT
0975名無しさん@お腹いっぱい。
01/10/24 12:38ID:???http://search.cpan.org/search?dist=Tie-STDERR
0976名無しさん@お腹いっぱい。
01/10/24 12:41ID:VLOxIr/R$cgi = new CGI;
%FORM = $cgi->Vars;
をやろうとしています。Win32上の Perl 5.6.1では出来るのですが
プロバイダにある 5.005_03 では
Undefined subroutine CGI::Vars
と言われてしまいます。
古いバージョンの CGI.pmではどのように要素を取り出したら
よいのでしょうか?
0977名無しさん@お腹いっぱい。
01/10/24 12:47ID:???0978名無しさん@お腹いっぱい。
01/10/24 13:09ID:???%FORM = map{ $_, $cgi->param($_) } $cgi->param();
0979名無しさん@お腹いっぱい。
01/10/24 13:15ID:???---
2
1<>dataA<>dataB<>dataC<>
2<>dataA<>dataB<>dataC<>
EOF
処理
open(NUM, "< $logfile");
@log = <NUM>;
close(NUM);
$num = shift(@log);
chomp($num);
$num++;
$data = "$num<>$a<>$b<>$c<>";
unshift(@log, "$num\n");
push(@log,"$data\n");
open(ADD, "> $logfile");
print ADD "@log";
$logfile
---
3
1<>dataA<>dataB<>dataC<>
2<>dataA<>dataB<>dataC<>
3<>dataA<>dataB<>dataC<>
EOF
という風に
unshift(@log, "$num\n");
では行頭に半角スペースが入らなかったのに
push(@log,"$data\n");
open(ADD, "> $logfile");
としたら各行の行頭に半角スペースが入ってしまいました。
全く分からないのですが、どこで半角スペースが入ってしまっているのでしょうか?
0980979
01/10/24 13:18ID:???半角スペース失敗。全角で書きます。
処理後の$logfile
---
3 #ここには入ってない。
1<>dataA<>dataB<>dataC<> #ここの行頭
2<>dataA<>dataB<>dataC<> #ここの行頭
3<>dataA<>dataB<>dataC<> #ここの行頭
EOF
0981名無しさん@お腹いっぱい。
01/10/24 13:23ID:???http://corn.2ch.net/php/kako/996/996075607.html の409-415
0984名無しさん@お腹いっぱい。
01/10/24 14:03ID:???0985名無しさん@お腹いっぱい。
01/10/24 14:14ID:???ってもう立ってるね。
コピペ中っぽいのでまだリンクは張らず。
0986これが貼りたかったーー
01/10/24 14:18ID:???, l[》《]| ヽ
/ i/ i ノノノ ))))〉 / ̄ ̄ ̄ ̄ ̄
. / i i |(リ ( | | | ! / 質問に答えてくれたみなさん
〈ヘ|_|l| l ゝ~ lフ/| <. .ありがとうっ
/ | | |( ヽwliヽ | \ このスレはおしまいだよ。
/ /! | l ヘ《~ヘii~∧ ∧ \_____
/ /ノノ! ノ|リ〉 \/( ゚ω゚)
/ , ./-‐- 、/V\ハ_ヲUU
!/ ./ / / | ゝ つつ
ヽ_/ ./ ! jj \
/ i
〈 / | |'
ゝ / l | !/
`〜‐-L__」〜'^
(´-`).。oO(新スレッドだろう・・・・
http://ebi.2ch.net/test/read.cgi/php/1003900311/l50
)
0987名無しさん@お腹いっぱい。
01/10/24 14:19ID:???今後もお世話になります。
0988名無しさん@お腹いっぱい。
01/10/24 14:26ID:???新スレの>7氏宛て
かちゅ〜しゃでdat読んでました。
ごめんなさい。
0989名無しさん@お腹いっぱい。
01/10/24 15:15ID:???かちゅ〜しゃ用リンク
http://ebi.2ch.net/test/read.cgi?bbs=php&key=1003900311
0990キリ番ゲッター
01/10/27 09:04ID:p/1joBiQ0991キリ番ゲッター
01/10/27 09:05ID:p/1joBiQ邪魔するんじゃねーぞ
0992キリ番ゲッター
01/10/27 09:05ID:p/1joBiQ0993キリ番ゲッター
01/10/27 09:05ID:p/1joBiQ0
0
0あげ!!!!!!!!! pupupu
0994キリ番ゲッター
01/10/27 09:07ID:p/1joBiQhttp://www.megabbs.com/cgi-bin/readres.cgi?bo=douga&vi=991411619&rm=100
0995キリ番ゲッター
01/10/27 09:07ID:p/1joBiQ邪魔したら ウラビデオは 配布中止だ
0996キリ番ゲッター
01/10/27 09:09ID:p/1joBiQROMだけしておけ
カキコするな
fuck
0997キリ番ゲッター
01/10/27 09:10ID:p/1joBiQ俺様だけのようだ
勝ったな
0998キリ番ゲッター
01/10/27 09:11ID:p/1joBiQそれとも ウラビデオほしいか!!!!!!!
0999キリ番ゲッター
01/10/27 09:11ID:ROzJuflR邪魔するやつ=うんこ
1000キリ番ゲッター
01/10/27 09:23ID:ROzJuflR10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。