Perl 初心者コーナー Part24
レス数が1000を超えています。これ以上書き込みはできません。
0001 ◆fBgbHI04bQ
03/06/07 22:30ID:GbQKLcPE【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
過去ログやお勧めサイトは >>2-10
0002 ◆fBgbHI04bQ
03/06/07 22:30ID:GbQKLcPEPart1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
DAT: http://tako.2ch.net/perl/dat/957208980.dat
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
DAT: http://tako.2ch.net/perl/dat/971817087.dat
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part5 http://pc.2ch.net/php/kako/988/988728069.html
Part6 http://pc.2ch.net/php/kako/996/996075607.html
Part7 http://pc.2ch.net/php/kako/1000/10002/1000267444.html
Part8 http://pc.2ch.net/php/kako/1003/10039/1003900311.html
Part9 http://pc.2ch.net/php/kako/1009/10095/1009549309.html
Part10 http://pc.2ch.net/php/kako/1014/10145/1014556702.html
Part11 http://pc.2ch.net/php/kako/1017/10172/1017201229.html
Part12 http://pc.2ch.net/php/kako/1019/10199/1019917048.html
Part13 http://pc.2ch.net/php/kako/1022/10227/1022731565.html
Part14 http://pc.2ch.net/php/kako/1026/10269/1026977659.html
Part15 http://pc.2ch.net/php/kako/1028/10288/1028816385.html
0003nobodyさん
03/06/07 22:30ID:???0004 ◆fBgbHI04bQ
03/06/07 22:31ID:GbQKLcPEPart16 http://pc.2ch.net/php/kako/1032/10320/1032070299.html
part17 http://pc.2ch.net/php/kako/1034/10345/1034583844.html
part18 http://pc.2ch.net/php/kako/1037/10377/1037797479.html
part19 http://pc.2ch.net/php/kako/1042/10422/1042260745.html
part20 http://pc2.2ch.net/php/kako/1044/10447/1044717887.html (タイトルに19と誤記)
part21 http://pc2.2ch.net/php/kako/1047/10479/1047980851.html
part22 http://pc2.2ch.net/test/read.cgi/php/1050369328/l50
[ひまぢん氏のミラー]
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
0005 ◆fBgbHI04bQ
03/06/07 22:32ID:GbQKLcPE・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メモ: http://www.din.or.jp/~ohzaki/perl.htm ★読んどけ
・Perl Recipes: http://www.effectiveperl.com/recipes/
・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/
0006 ◆fBgbHI04bQ
03/06/07 22:32ID:GbQKLcPE・Perl News: http://www.news.perl.org/
・Perl Monks: http://www.perlmonks.org/
・use Perl; : http://use.perl.org/
・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
・Perldoc.com: http://www.perldoc.com/
・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
・Rex Swain's Home Page: http://www.rexswain.com/
・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
・Perl Tuts: http://savage.net.au/Perl-tutorials.html
・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
・Perlfect Solutions: http://perlfect.com/
・The Perl Archive : http://www.perlarchive.com/
・Perl6 & Parrot VM についての情報: http://dev.perl.org/perl6/
・use Object; : http://perl.infoware.ne.jp/
0007 ◆fBgbHI04bQ
03/06/07 22:33ID:GbQKLcPE・Perl Module Reference: http://www.bekknet.ad.jp/~bero/docj/module_/
・PPMPackages: http://www.activestate.com/PPMPackages/
・河馬屋二千年堂's Page: http://member.nifty.ne.jp/hippo2000/index.htm
[Security]
・安全なプログラミングのためのガイドライン:http://www.FreeBSD.org/ja/security/#spg
・Perl security:http://www.perldoc.com/perl5.6/pod/perlsec.html
・Perl security和訳:http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlsec.html
・CGI and Security http://www.ansi.co.jp/tech/cgi/security/
・The Unofficial Web Hack FAQ:http://www.nmrc.org/faqs/www/
・How to Write Secure Code:http://www.shmoo.com/securecode/
・Safe CGI Programming :http://www.improving.org/paulp/cgi-security/safe-cgi.txt
[OS]
・Linux日本語マニュアル:http://www.linux.or.jp/JM/
・FreeBSD日本語マニュアル:http://www.jp.freebsd.org/man-jp/
0008nobodyさん
03/06/07 22:35ID:???ちゃんと貼れ馬鹿。
そしておつ
0009 ◆fBgbHI04bQ
03/06/07 22:35ID:GbQKLcPEスマソ。すっかりわすれてた
0010nobodyさん
03/06/07 23:37ID:???0011nobodyさん
03/06/07 23:39ID:???http://life2.2ch.net/test/read.cgi/offreg/1054655407/l50
ちなみにこれはコピペしてひろめてくれ。
0012nobodyさん
03/06/07 23:51ID:???0014nobodyさん
03/06/07 23:56ID:???$b = substr($a,0,2);
ネタにマジレスしときます
0016nobodyさん
03/06/08 00:00ID:???001712
03/06/08 00:08ID:???cryptで暗号化した文字の最初の2文字が邪魔でした。
助かりました。
0018nobodyさん
03/06/08 00:18ID:???tetxareaに入れてかえすスクリプトですが、
ソースもhtmlのタグと勘違いして、
変になるんです。
=====================
| #!/usr/bin/perl |
| |
| | ←テキストエリア(ソースが表示される)
| |
| print "<html><body> |
|====================|
print "aaa"\n; ←テキストエリア外で、タグとして読んでしまう。
こうなるんですが、対処法はないですか?
<>などを変えないでできる方法ってないですか?
0020nobodyさん
03/06/08 00:31ID:???あ、違いました。
ソースファイルの中の</textarea>を
実際に出力している</textarea>と勘違いしているようです。
これを、見た目の変化を変えずに表示できませんか?
0021nobodyさん
03/06/08 00:33ID:???<を<に、>を>に変える。嫌なら諦める。
002221
03/06/08 00:33ID:???<を<に、>を>に変える。
0024nobodyさん
03/06/08 00:39ID:???あ、その方法がありましたね。
それでやてみます。。。
でも、すべて変えるとめんどそーなので
</textarea>のところのみにしときます。
ありがとうございました。
0027nobodyさん
03/06/08 00:45ID:???http://www.google.co.jp/search?q=%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B5%E3%82%A4%E3%83%88%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0&ie=UTF-8&oe=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0029nobodyさん
03/06/08 01:13ID:???0032nobodyさん
03/06/08 01:36ID:XzEWy/kWhttp://atashi.net/inu/ja/software/msnp_status.txt
これってどういうモノなのでしょうか?
MSNの何かのようですが,どういうモノなのか知りたいです。
それでは宜しくお願いします。
0033nobodyさん
03/06/08 01:36ID:???サーバは、レンタルサーバ?
最悪、損害賠償を請求される場合があります。
悪い事言わないから、
もうちょっと分かるまで勉強してから動かすか、
諦めるかしなさい。
0034nobodyさん
03/06/08 01:42ID:???質問は適当なスレでやってください。
URL削ればわかるだろうに
ttp://atashi.net/inu/ja/software/
msnp_status.cgi version 1.02
MSN Messangerのオンライン状況を表示するためのものです。
0038nobodyさん
03/06/08 14:10ID:???志ねヴァカ。
とりあえず、そのHTMLのソースに
<script>(中略)</script>
なんてあったらどうなるか分かっているの?
とりあえず、>を>に、<を<に、&を&に位はやっとけ。
ついでに"も"に。
置換の順序も分からん馬鹿はいないと思うので、略。
0039nobodyさん
03/06/08 14:23ID:???エェー、危ないのでcryptパスワード認証つけて、ファイルの作成、編集ができるようになっているから、
<script>はないと思うけど、でもしたほうがいいかな。。。
疑問に思うんだけど、>とかしても、実際には<って表示されるんだけどなぜ?
>とかってするとただの特殊記号とみなすの?
0040nobodyさん
03/06/08 14:24ID:???疑問に思うんだけど、&gt;とかしても、実際には<って表示されるんだけどなぜ?
&gt;とかってするとただの特殊記号とみなすの?
0042nobodyさん
03/06/08 14:27ID:???0044nobodyさん
03/06/08 14:29ID:???htmlで<などを表示するときに>などを使うから、
タグではなくなるってことか。。。
0046nobodyさん
03/06/08 14:34ID:???$_ =~ s/>/>/g;
$_ =~ s/&/&/g;
$_ =~ s/"/"/g;
なんで、これでできない・・・・・・
ダブルクォーテーションとアンドはできるのに・・・
0047nobodyさん
03/06/08 14:37ID:???前の処理で<にしたものが(ry
0048nobodyさん
03/06/08 14:37ID:???ちゃんと書けないんなら全角にでもしとけ。
0049nobodyさん
03/06/08 14:38ID:???超・初心者な質問だから他へ・・・と思ったらここが初心者スレだった罠。
でも、もう少し頭を使ってくれよ
0051nobodyさん
03/06/08 14:41ID:vz1j93aYWinXP HOME EDITION(←スペルちがってたらすいません)でアクティブパール5.8なんですが、
unlink(<*.txt>)でうまくいかないんですが、Winだからですか?
0052nobodyさん
03/06/08 14:41ID:???# タグを特殊記号に変換
$_ =~ s/&/&amp;/g;
$_ =~ s/</&lt;/g;
$_ =~ s/>/&gt;/g;
$_ =~ s/"/&quot;/g;
print;
}
こんなんでできました。
下3つの順番はどうでもいいですよね?
0053nobodyさん
03/06/08 14:43ID:???こう書くとワイルドカードが使えるようになるの?
005553
03/06/08 14:44ID:???005853
03/06/08 14:50ID:???005951
03/06/08 14:51ID:???フォルダが読み取り専用になってた。
でも、みてみたら、どのフォルダも(PC内)読み取り専用だった・・・。
しかも、解除できない。関係ある?
0060nobodyさん
03/06/08 14:54ID:???006261
03/06/08 15:05ID:???スクリプトは削除対象のファイルと同じディレクトリで実行させてるよね?
006351
03/06/08 15:08ID:???ありがとう。
すごくあふぉなことやってた。↓の階層にファイルあるのに消そうとがんばってた。
消す前に、chdirで移動したら消せた。
お騒がせしてすみませんでした。
0064直リン
03/06/08 15:10ID:+3TQ1ee90065nobodyさん
03/06/08 15:10ID:???0066nobodyさん
03/06/08 17:40ID:???名前#123
↑で123だけ抜き出す方法が知りたいです。
0067nobodyさん
03/06/08 17:54ID:???ここはなんで調べもしないで来る人が多いのか?
初心者だから分からない、ではなくて調べてないから分からない。
って質問ばっかりだぞ。
0072nobodyさん
03/06/08 18:03ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
0074nobodyさん
03/06/08 18:09ID:???0075nobodyさん
03/06/08 18:10ID:???自分のサイト作って次はCGIだーって思ってる奴が迷い込んで来るんだよ。
質問者は>>1読まないしね。読んだとしても1行ぐらいじゃないかな。
0076nobodyさん
03/06/08 18:11ID:???split(/#/, $name, 2);にしないと$nameが"名前#12#3"とかなっていたら$tripが"12"になってしまうけどいいの?
0077nobodyさん
03/06/08 18:13ID:???>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
これを強制させるのはどうだ?
例えば>>66にこれを書かせると
1:自分はこう言う事がしたい。
2chのトリップみたいのを付けたいです。
2:それでこんな風にやってみたが・・・
何もしてません。
3:それだとこんなエラーが出て上手く行かなかった。
何もしてないのでエラーはありません。
となって、自分で全く調べてないって少しは自覚できるんじゃないかな。
0079nobodyさん
03/06/08 18:16ID:???ここは「Perl初心者」のためのスレだろう。
"努力・常識のかけらも無いアホ"の"質問にすらなっていない独り言"で埋まってしまうのはいかんだろ。
0080nobodyさん
03/06/08 18:17ID:???if($FORM{'FROM'} =~ /([^\#]*)\#(.+)/){
my $main_message = $1;
my $handle_pass = $2;
my $change_salt = substr($handle_pass, , 1) . "H";
$handle_pass = substr(crypt($handle_pass, $change_salt), -8);
if($main_message ne ""){
$FORM{'FROM'} = "$main_message </b>◆$handle_pass <b>";
}else{
$FORM{'FROM'} = "</b> ◆$handle_pass <b>";
}
}
0082nobodyさん
03/06/08 18:20ID:???$sharp = index($name);
$sharp++:
$trip = substr($name,$sharp);
ではダメ?
無駄が多い?
008382
03/06/08 18:22ID:???$sharp = index("$name","#");
$trip = substr($name,$sharp++)
これでいいや;
0084nobodyさん
03/06/08 18:25ID:???0086nobodyさん
03/06/08 18:29ID:???$i=0;
$j=$i++;
としたとき、$iは1になるけど$j=0になることは知っているよね?
もちろんそれでいいならいいんだけど。ただ、あとで$sharpを使わなければ意味ないなぁと思って。
0087nobodyさん
03/06/08 18:33ID:???0088nobodyさん
03/06/08 18:40ID:???008982
03/06/08 18:43ID:???次からとるから+1だったな
0091nobodyさん
03/06/08 18:50ID:???$trip = substr($name,$sharp+1);
#ここでトリップ生成
}
0092nobodyさん
03/06/08 18:52ID:???そりゃできるだろ。
if(($sharp = index($name,'#')>=0){
$trip = substr($name,$sharp++);
#ここでトリップ生成
}
では動かんよ。
0093nobodyさん
03/06/08 18:53ID:???括弧の対応があわないね(汗
if(($sharp = index($name,'#'))>=0){
$trip = substr($name,$sharp+1);
#ここでトリップ生成
}
0095nobodyさん
03/06/08 19:06ID:???0096nobodyさん
03/06/08 19:40ID:???あ、いや、そういうことじゃない。
$trip = substr($name,$sharp+1);
が
$trip = substr($name,$sharp++);
だと動かんでしょ?って>>82に言いたかった。
009982
03/06/08 20:43ID:???ぃやぃや、こちらこそ「は?」
なにを指してるんだこいつは
0101ラヴ
03/06/08 21:07ID:Sf/nGZf1#学籍番号
#氏名
print(" a =?");
chomp( $a = <STDIN>);
print("演算子?");
chomp( $op = <STDIN> );
print(" b = ?");
chomp( $b=<STDIN> );
if($op eq '+') {
$c=$a + $b;
print (" $a + $b = $c\n");
} else {
if($op eq '-'){
$c=$a - $b;
print ("$a - $b = $c\n");
} else {
if($op eq '*'){
$c = $a * $b;
print ("$a * $b = $c\n");
} else {
if($op eq '/'){
$c = $a / $b;
print ("$a / $b = $c\n");
}
}
}
}
のフローチャートはどうやって書いたらいいのでしょう??
0102無料動画直リン
03/06/08 21:10ID:+3TQ1ee90108nobodyさん
03/06/08 22:05ID:???>>80
> &jcode::tr(\$FORM{'FROM'}, '#', '#');
Jcode.pm に入れ替えたらエラーになた。(s/jcode/Jcode/g したあと)
でも、Parse したときに、Shift_JISに変えているんだから、
s/#/#/g; にしちゃった。
0109nobodyさん
03/06/08 22:09ID:???どうすればいいでしょうか?
英数なら大丈夫です。
0110nobodyさん
03/06/08 22:15ID:???0113nobodyさん
03/06/08 22:23ID:???超超超特別サービスでおまいに説教を送ってやろう。
普通は叩かれるだけなのに説教を貰えるとは幸せと思え。
@まずどうやって生成した文字列なのか。
どのような過程を通り、どう言ったアプリケーションで文字列に直しているのか書くべきである。
A
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
さらにこのスレのルールとして以上の事を書かねばならない。
B
これ決定的。
スレ違いだから他に行って下さい。
記述やコーティングのスレだから。
0117nobodyさん
03/06/08 22:33ID:???じゃあ、
>>112
> >>111
> あってるよ
合ってないのになんでそういうこと言うの?
$name = "hoge#hage";
$sharp = index("$name","#");
$trip = substr($name,$sharp++) ;
print $trip,"\n";
と
$name = "hoge#hage";
$sharp = index("$name","#");
$trip = substr($name,++$sharp) ;
print $trip,"\n";
の結果比べてご覧。
#なんで切れ気味なの?
011882
03/06/08 22:34ID:???違うねぇ、スマン、見間違えてた
0119nobodyさん
03/06/09 02:42ID:KAhSj8Gh($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$month = ($mon + 1);
if ($sec < 10) { $sec = "0$sec"; }
if ($min < 10) { $min = "0$min"; }
if ($hour < 10) { $hour = "0$hour"; }
if ($mday < 10) { $mday = "0$mday"; }
if ($month < 10) { $month = "0$month"; }
$date = "$month/$mday/$year $hour\:$min\:$sec";
これで実行すると、2003年が103年となってしまいます。
2003年に正しく修正するにはどうしたらいいでしょうか?
0120_
03/06/09 02:54ID:???0121nobodyさん
03/06/09 02:58ID:???0122nobodyさん
03/06/09 03:01ID:???>>119
2003って表示させたいなら
$year += 1900;
下二桁「03」って表示させたいなら
$year = sprintf("%02d",$year%100);
を追加すればいいんでね?
0123nobodyさん
03/06/09 03:09ID:???($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
の$yearは1900年からの経過年数
0124nobodyさん
03/06/09 11:48ID:s9oH3tCTjcode.plを使っていて
WARNING: UtfToLocal: could not convert UTF-8 (0xd6a5). Ignored
というようなエラーが出た方はいらっしゃいませんか?
特にUTFは使っていないのに、必ず出てきてエラーになってしまいます。
ファイルはshift_jisで、それを読み込んでeucに変換しているのですが・・
このエラーはネットで探しても見つからないので
ご存知の方がいらっしゃいましたらよろしくお願いします。
0125nobodyさん
03/06/09 12:41ID:???0127124
03/06/09 12:54ID:s9oH3tCTDBとのコネクト時のことだったみたいです。
申し訳ありありませんでした。
jcode.plにも、そのメソッドを検索して、存在しないから
内部的なものかとおもっていました。
Posgresqlに文字コードをEUCを指定して接続する方法はあるのでしょうか?
DBIを使っています。
interbaseのibperlを使っていた頃は、Charsetでできたのですが・・
0128無料動画直リン
03/06/09 13:10ID:GjkKVS2A0130nobodyさん
03/06/09 14:01ID:QAgTJ6O8安心して24時間お買い物ができる!
セルビデオ店が近くにないお客様も気軽にお買い物を楽しめます。
http://www.net-de-dvd.com/
安心確実
お支払は安心の代金引換です
振り込んだのに商品が届かない等
の心配は無用!
http://www.net-de-dvd.com/
0131nobodyさん
03/06/09 19:15ID:???どちらを使用した方が、処理速度・負荷の面で有利なのでしょうか?
0132nobodyさん
03/06/09 19:26ID:???0133nobodyさん
03/06/09 20:52ID:???$in{id} = 8;
$in{file1name} = "hoge.jpg";
$in{file1name} = "fuga.jpg"
rename($ImageDir.$in{file1name}, $ImageDir."photo1_id".$in{id}."jpg");
rename($ImageDir.$in{file2name}, $ImageDir."photo2_id".$in{id}."jpg");
とやっても、renameされません。
パス付きファイル名をrenameに渡してもダメなのでしょうか?
だとしたら、同じことを実現するにはどうすればいいのでしょうか?
0134nobodyさん
03/06/09 21:32ID:???・ フィアル名が正確かどうかprintで出力して確認
・ エラーがあれば、エラー内容を出力
エラー内容は$!に入ってるので、
rename $file1,$file2 or die "rename Error : $!"; で見てみればいい。
0136nobodyさん
03/06/10 02:08ID:0JHS1DHo半角カナとかの1バイト文字と、1バイト文字も含めた全ての文字列との比較させて、その結果によって処理を振り分けるスクリプトを作りたいんで。
ちょっと説明が難しいんですが、知ってる方いたら教えて下さい。
substrではダメなんです。
0137nobodyさん
03/06/10 03:04ID:???2バイトも一文字として認識してほしいって事?
そんな関数ないっぽいです。
モジュールなら、どこかにあるかも。
極論で言わせてもらえば、jperl使えって事になってくるかな。
0138nobodyさん
03/06/10 03:07ID:???0139nobodyさん
03/06/10 03:16ID:???たぶん極論・・・
って言うか、俺的に極論かな・・・?
日本語文字列で問題がおきてる。
↓
jperl使え。 終了。
これが、黄金パータンでしょ?(w
0140nobodyさん
03/06/10 07:44ID:???sjisじゃできんが(2バイト文字と1バイト文字が重複する)、eucならできる。
perlメモの「日本語を扱う」に書いてある。がいしゅつ
0141nobodyさん
03/06/10 09:10ID:???2:CGI::Sessionモジュールを試用してテスト中、
クライアントからセッションIDを取得できなかった場合のテストをやってみたら...
3:サーバにセッション情報を保持したファイルが残って、更新されることも消えることもなかった。
該当のセッションを使用してのアクセスがないので更新されないのはあたりまえなのですが、
もう使われることのないセッション情報を消す管理用メソッドとかないのでしょうか。
0142nobodyさん
03/06/10 14:45ID:H1NA4Acv"person" => "tanaka",
"adana" => "tanachan",
"adanaid" => 5,
};
$ORG[1] = {
"person" => "takada",
"adana" => "takachan",
"adanaid" => 2,
};
$ORG[2] = {
"person" => "imai",
"adana" => "imachan",
"adanaid" => 3,
};
@tmp = sort { (${ORG[$a]->{adanaid}} <=> ${ORG[$b]->{adanaid}}) } 0 .. $#ORG;
foreach (@tmp) {
print 'person='. $ORG[$_]->{person}. "\n";
print 'adana='. $ORG[$_]->{adana}. "\n";
print 'adanaid='. $ORG[$_]->{adanaid}. "\n";
}
はわかるのですが(以前こちらで教えていただいたのですが)
そうではなく、@ORGを、${ORG[?]->{adanaid}}でソートした結果を、
再び@ORGとして得るにはどうすればいいのでしょうか?
(ただし、一個一個person、adana、adanaid などとせずに。。。実際は項目が多いもので)
foreach my $key (keys %{$ORG[0]}){
\$ORG[0]->{$key}
}
↑この辺をどうにかするよな気がするのですが・・・
0143nobodyさん
03/06/10 15:16ID:???よくわかんないけど、こんな感じ?
@tmp = sort { (${ORG[$a]->{adanaid}} <=> ${ORG[$b]->{adanaid}}) } 0 .. $#ORG;
foreach (@tmp) { push(@temp,$ORG[$_]); }
foreach (@temp){
while(($i,$j) = each(%$_)){
print qq|$i = $j\n|;
}
}
0145nobodyさん
03/06/10 18:37ID:???XML::Parser::Liteで読めるようになったけど書き込めない・・・。
0146通行人さん@無名タレント
03/06/10 18:53ID:???foreach my $man(@ORG){
#print_man
foreach my $atti(keys %{ $man }){
print $atti, ' => ' ,$man->{ $atti }, "\n";
}
print "\n";
}
0148nobodyさん
03/06/10 20:13ID:???foreach my $person (@ORG) {
foreach my $attr (sort keys %$person) {
print $attr, ' => ', $person->{$attr}, "\n";
}
print "\n";
}
0149nobodyさん
03/06/10 23:10ID:???0150nobodyさん
03/06/10 23:15ID:???(∞ ) …出来ないんじゃないか?
| |
0152nobodyさん
03/06/11 01:07ID:b6wCYV2GsubInputPage {
print "Content-type: text/html; charset='Shift_JIS'\n\n";
$fname = $FORM{'name'};
print <<END;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><body>
<strong>$fname</strong>さん<br>
</body></html>
END
}
subResultPage {
print "Content-type: text/html; charset='Shift_JIS'\n\n";
print <<END;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head><title>名前入力</title></head>
<body>
<strong>$fname</strong>さん
</body></html>
END
}
↑ResultPage内の $fname が空になってしまうのですが、
InputPage内の $fname に格納したもの(これは表示される)を
ResultPageの中の $fname に受け継がれるようにするには
どうしたらいいのですか?
0153無料動画直リン
03/06/11 01:10ID:xrcrQEEf0154nobodyさん
03/06/11 01:19ID:???http://www.indigostar.com/perl2exe.htm
>>152
表示されるよ?
ちなみにsubの後にスペースが無いのは関係ないよね?
0156nobodyさん
03/06/11 01:34ID:b6wCYV2G>>154
subは関係ないです。
>>155
全くその通りです。
if($FORM{'mode'} eq 'enter') {
InputPage();
}
elsif($FORM{'mode'} eq 'result'){
ResultPage();
}
ってやってます。
どうやったら表示されるようになりますか?
0158nobodyさん
03/06/11 02:04ID:???0161nobodyさん
03/06/11 02:09ID:???0162152
03/06/11 02:10ID:b6wCYV2Gたびたびすいません、ネタじゃなくてまじわからんです。
$fname = '名無し';
if($FORM{'mode'} eq 'enter') {
InputPage();
}
elsif($FORM{'mode'} eq 'result'){
ResultPage();
}
これだと$fnameに「名無し」がはいちゃうし・・
0163nobodyさん
03/06/11 02:14ID:???myやlocalをつけなければグローバルになるはずだから、そのままでも受け継がれるはずだけど・・・
サブルーティンを呼び出す順番は正しい?
0164nobodyさん
03/06/11 02:15ID:???入っちゃいけないの?(´・ω・`)
そういう風に自分で設定してるんだよ(´・ω・`)マジデ マジデ
$fname = $FORM{'name'};
if($FORM{'mode'} eq 'enter') {
InputPage();
}
elsif($FORM{'mode'} eq 'result'){
ResultPage();
}
これじゃだめなの?(´・ω・`)
0165nobodyさん
03/06/11 02:18ID:???0166nobodyさん
03/06/11 02:22ID:???<strong>$FORM{'name'}</strong>さん<br>
0167nobodyさん
03/06/11 02:29ID:???InputPage()とResultPage()は一度に両方とも呼ばれることはないんでしょう?
0168152
03/06/11 02:42ID:b6wCYV2G感激しております。
if($FORM{'mode'} eq 'enter') {
InputPage();
}
elsif($FORM{'mode'} eq 'result'){
ResultPage();
}
else {
EntryPage();
}
exit;
EntryPage()のフォームで読み込んだものをInputPage()で表示し、
その後、InputPage()でボタンを押すと、ResultPage()に移って表示
って感じなんです。
やっぱり表示されないです・・・
何かうまい方法ないですかねぇ
0169nobodyさん
03/06/11 02:45ID:???0170152
03/06/11 02:59ID:b6wCYV2GInputPageは入力のページですよ。
名前を表示してその下に入力フォーム
0172nobodyさん
03/06/11 03:01ID:???0173_
03/06/11 03:03ID:???0174nobodyさん
03/06/11 03:04ID:???こんな初歩的なことで躓いてるようじゃ全部晒したほうが早いわ
0176152
03/06/11 03:10ID:b6wCYV2G試しましたよー
>>172
分ける必要は無いんだけど、その方がわかりやすいかなーと思って
やっぱり、ひとつのページにまとめる事にしました。
ご迷惑をおかけしました。
考えてくださった方々ありがとうございました。
0180nobodyさん
03/06/11 03:20ID:???そのままの意味。
perlccはPerlのソースをCのソースに変換するものだから、実行可能なものにするためにはCコンパイラが必要。
一連の処理をまとめてやってくれるから(実はPerlスクリプトやバッチファイルだったりする)Perlのソースを直接実行可能な形式にしているようにみえるけど。
Windowsの場合はVC++6.0ならOKだった。他のコンパイラは試していない。
0183nobodyさん
03/06/11 03:39ID:???>perlcc hello.pl
>a.exe
Hello World.
0184nobodyさん
03/06/11 06:42ID:u2aqyjyIすみません、一つ質問させてください。
HTMLファイル内のアンカータグで指定されているURLを全てエンコードして返すコードを書きましたが、どうも思う
ように動いてくれません。問題のコードは下記となっております。
-----------------------------------------------------
while(<FH>){
if($_ =~ /\<a.*?href.*?\=.*?\>/ig){
my $tmp = $_;
while($tmp =~ /(.*\<a.*?href.*?\=)(.*?)(\>.*?)(\<|\n)/ig){
my $tmp1 = $1; my $tmp3 = $3;
my $tmp2 = main::url_encode($2);#エンコードルーチン
$tmp2 =~ s/\%20//g; $tmp2 =~ s/\%22/\"/g;
$index_file .= $tmp1 . $tmp2 . $tmp3;
}
}
else{
$index_file .= $_;
}
}
-----------------------------------------------------
1行に2つ以上のアンカータグがあった場合を考えてwhileを使用しておりますが、その部分の正規表現に問題が
あるというところまでわかっていながら、全く前進せぬまま朝になってしまいました。情けないです。
ここの正規表現の区切りとなるものが曖昧なことから、うまく認識してくれず、整形後のHTMLファイルがおかしく
なってしまっているのだと思われます。
もし宜しければ、教えてください。
すみませんが宜しくお願いいたします。
0185nobodyさん
03/06/11 07:22ID:???正規表現道場@2ch Part2
http://pc2.2ch.net/test/read.cgi/php/1038146241/432-n
このへんでグダグダやっているようだが
0186nobodyさん
03/06/11 11:58ID:???}
と、
for ($i=0;i<=$#tmp;$i++){
}
って、何が違うのでしょうか?
0187nobodyさん
03/06/11 12:20ID:???前者は@tmpの中身を順番に参照する。
後者は0から$#tmpまで$iがカウントアップしていく。
前者は数字とは限らないが、後者は確実に数字。
0188nobodyさん
03/06/11 12:47ID:???したら、
glob failed (child exited with status 127) at index.cgi line 863.
といわれてしまったのですが、
どうすればいいのでしょう?
glob関数は使ってないはずなのですが・・・
0191nobodyさん
03/06/11 16:26ID:???スマートな方法はありませんか?
今はこんなやり方をしてるんですけど…
$_="0123aa456789";
m/([a-z]+)/;
$str = $1;
0193nobodyさん
03/06/11 16:40ID:Gw/QAyIn($str) = /([a-z]+)/;
0195_
03/06/11 17:19ID:???0196194
03/06/11 18:07ID:???0198nobodyさん
03/06/11 19:14ID:???処理系依存の関数ってけっこうあるし。
0199nobodyさん
03/06/11 20:11ID:fefOLsV8送れる(どっちを表示するかはメーラーがきめる)と聞いたのですが
sendmailにどういう風に渡したらいいんでしょうか?
Content-Type: multipart/alternative;を使うらしいとこまでは
わかったんですが…
(プログラムを動かそうとしているサーバには、モジュールは入れられないみたいです)
どなたか御存じの方がいらっしゃったら、よろしくおねがいします。
0201nobodyさん
03/06/11 20:16ID:???$a = "あ";
print $b;
このとき、当然ですが「いうえお」しか表示されません。
「あいうえお」と表示したい場合はどうすればいいですか?
$aを$bの前に持ってくるというのはナシで。置換しかないですかね?
0202YUIS
03/06/11 20:28ID:oL0No0ho↓↓↓
http://www.dvd-yuis.com/
0203nobodyさん
03/06/11 20:35ID:???print eval($b);
$aや$bにコマンドを入れられてたら、かなり危険な状態になるのであまりお勧めできない。
0204_
03/06/11 20:44ID:???0205nobodyさん
03/06/11 21:02ID:OIUswXrqprint eval($b);
↑何も表示されない。
print eval{$b};
↑「いうえお」しか表示されない。
アルェー?
0206nobodyさん
03/06/11 21:09ID:???すまん。
俺の記憶違いだった。
0207nobodyさん
03/06/11 21:25ID:???$a = "あ";
print eval($b);
0209_
03/06/11 21:35ID:???0210nobodyさん
03/06/11 21:38ID:???シングルクォートじゃなくても良いけど$bの内容が「""」とか「qq!!」と文字列リテラルとしてエバれるようになってりゃいい。
0211nobodyさん
03/06/11 23:03ID:???$b ='"(split(/<>/))[0]いうえお"';
print eval($b);
だと
いうえおと表示されます。
(split(/<>/))[0]にはある文字列がはいっています。
0212nobodyさん
03/06/11 23:26ID:???evalがどういう働きをするものか勉強しなおしてください。
あなたの期待している通りにならない事がわかります。
0213188
03/06/11 23:39ID:???ありがとうございます。なるほど。
ところで、こういう場合、考えられる原因ってなんでしょうか・・・?
いちお、「tmp*」のパーミッションは666にしてます。
0215nobodyさん
03/06/12 00:07ID:???フォームから
<input type="file"〜(以下略
と言う風に入力してもらいcgiでcgi-libを使用してデコード、とまでは
できたのですが、どのようにして拡張子を取得するべきか・・・
複数のファイルをアップロードする場合、どのようにして拡張子を取得するのでしょうか?
(今現在、プログラムが手元にないのであまり詳しく状況を書けなくて申し訳ありません。)
0218君のBodyはNobody
03/06/12 01:23ID:???Webでアンケートを作成し、その結果をCSVファイルにしました。
それをWindowsマシンにダウンロードして、Excelで開くと
日本語部分が文字化けをしてしまいます。
一応、SJISコードに変換してからCSVを作成しているのですが...
やり方として、根本的なことを分かっていないがために
何か間違っているような気がします。
恐れ入りますが対処方法を教えてください。
0219sage
03/06/12 01:30ID:SEaNTt27どのようにSJISに変換している?
0220nobodyさん
03/06/12 01:31ID:???0221nobodyさん
03/06/12 01:31ID:WFfieXIn0222nobodyさん
03/06/12 01:37ID:???0223君のBodyはNobody
03/06/12 01:38ID:???こういう説明で十分なのか不安なのですが
&jcode'convert(*form,'sjis');
というようなコードを使っています。
0224nobodyさん
03/06/12 01:57ID:???ちなみに俺は素人さんです。
・腹の立つほど複雑な処理を数日考えて作りました。
・記述の量はかなり多いです。
・強引に作ったので処理はめちゃめちゃで見れた物じゃないです。
・多分半年後の自分は、解読出来ません。
・さらに、メンテしにくくバグが出たら大変そうな仕組みです。
・ついでにデータファイル(txt)の書き換えもめんどくさそうです。
しかし!
上記のダメダメな処理が出来た直後に。。。
もっと効率が良くて、見やすくて、メンテしやすくて、スマートな処理を思いつきました。
・でも、ハッキリ言って書き換えるのめんどいです。
・データ(txt)も全部書き換えです。
・データの書き換えも含むと1日では出来なさそうです。
・しかも苦労して作ったダメの処理を破棄するのは抵抗があります。
普通はそんな時どうするんですか?
ダメな処理を強引に使いますか?
プログラムは苦労するものなのだと割り切って作り直しますか?
多分、処理は使い捨てではなく、ちょくちょく直しながらそれなりに使うと思います。
・そこら辺の常識を玄人さんに聞きたいです。
0225nobodyさん
03/06/12 01:58ID:???0226nobodyさん
03/06/12 02:03ID:???0227君のBodyはNobody
03/06/12 02:15ID:???ちなみに、Print文で空のファイルに書き込みをしています。
print FILE $data;
みたいにです。
0229nobodyさん
03/06/12 02:34ID:???良いと思う処理方法が見つかったなら、ソースは書き換えるべき。
データファイルは、Perlで新しいフォーマットに書き換えるスクリプトを作ればいい。
俺は、そうしてる。
いや、そうするべき。
0230nobodyさん
03/06/12 02:49ID:???スパッと気分を変えて書き直したいと思います。
って言うか、もう始めてます。
綺麗な記述&処理のほうが後々イライラせずにすみそうだし。。。
データはperlに直接埋め込む方式に変更したので書き換えスクリプトは作れなさそうです。
まったく変な構造を持ったデータでして…。
では、ありがとうございました。
0232nobodyさん
03/06/12 03:47ID:???作ったのかい?
ま、書きかえってのはそのうちやらないといけない時がくるわな。
0233nobodyさん
03/06/12 04:07ID:???0234224,230
03/06/12 04:13ID:???実は俺、以前にもここに来た事があったりして…
モンスターデータが当初の予定より複雑になった(量も多くなった)ので他の記述との折り合いが悪く、
強引に組み込んだらぐっちゃぐちゃになってしまった次第です。
素人な俺は、なぜか強引に作ってしまいスグぐっちゃに。。。恥
0235nobodyさん
03/06/12 09:54ID:???たぶん処理系に激しく依存すると思うが、おそらくディレクトリエントリに格納されている
そのままの順番(ファイルを作った順番)ではないかと。
0236188
03/06/12 11:13ID:???>>214
「直しても」ってどういうことですか?、
unlink(<tmp*>);って直しようないかと思うのですが・・・
Perlのバージョンとプラットフォームは必ず書くこと。
そのエラーはglob()したときにシェルを子プロセスを起動したが、その子プロセスが正常終了しなかった、といっている。
何故かはそのエラーからは分からない。
File::Globも試すこと。
>>237
unlink(<...>)でも全く問題ないよ。間違った解答をするのはやめてほしい。
0239nobodyさん
03/06/12 13:16ID:???それ以外でやってみてから言え。
0241nobodyさん
03/06/12 14:32ID:???(実行されていない部分は翻訳されていない?)
それとも一旦スクリプト全体が翻訳されて実行されるんでしょうか?
require するライブラリなどはどの時点で翻訳されるんでしょうか?
(翻訳ってのは機械語に解釈って意味で使ってます)
処理の分岐がたくさんある場合にそれぞれサブルーチン化するんですが
これは外部にライブラリとして出した方がいいんでしょうか?
0242nobodyさん
03/06/12 15:57ID:F+7kv9WZverは5.xだったと思います。よろしくお願いします。
0243236
03/06/12 16:58ID:???ちょっと今そとなので、Perlのバージョンは5.*ということしかわからないのですが、
(プラットホームはコバルト)、
そういえば、lsコマンドをperlから実行できない設定になってました。
きっと、それと同じ理屈ですよね?
セキュリティポリシー的に、シェルコマンドをperlから実行できないようになってるという。
0244nobodyさん
03/06/12 17:10ID:???巨大テキストから一部分を一つのCSVとして出力しています
ieで実行するとダウンロードダイアログが開くのですが
その時ファイル名が「〜.cgi」になってしまいます
この「〜.cgi」を任意に変えられないでしょうか?
具体的には
1.getcsv.cgi にアクセス
2.ダウンロードダイアログが開く
3.ダウンロードファイル名が「data.csv」になっている
のような事がしたいのです
0246nobodyさん
03/06/12 18:50ID:???0249nobodyさん
03/06/12 19:08ID:OAyD+tHP動作させていましたが、このたびWindowsXP+ActivePerl5.6.1-635
で動作させようとしましたが、いまいち変な動作で頭を抱えています。
スクリプトはTrees↓です。
http://www.rescue.ne.jp/cgi/trees/
変というのは、一見動作はするのですが、「新しい話題」で新規書き込み
をしようとすると、
「.は削除されていますので、コメントの投稿はできません. 」
というメッセージでエラーになります。
調べてみると、1340行付近の
if ($in{'resp_number'} ne '' && -s $in{'resp_number'}==0) { &error("File Not Found","$in{'resp_number'}は削除されていますので、コメントの投稿はできません."); }
の&&の後の条件でひっかかってしまうようです。
ちなみに、新規書き込みの時には$in{'resp_number'}の中には「.」のみが入っています。
ふつーのif文なのに、linuxで動作してActivePerlでNGなのです。
0250nobodyさん
03/06/12 19:17ID:???perl -M-ops=system,open -e 'open(IN, "<hoge"); system("ls")'
man Safe
man Opcode
man ops
0253188
03/06/12 19:46ID:???Pelrのバージョンは、5.00503で、
Apache/1.3.26 (Unix) でした。
>>243で自分が言ったことで、間違いないでしょうか?
0254nobodyさん
03/06/12 20:26ID:???>>248を補足。
Perlは疑似インタプリタ言語。
実行の度にコンパイルして実行すると言う手順を踏む。
従って、先にコンパイルしておく全ての言語と比較して低速になる。
0256nobodyさん
03/06/12 20:29ID:???意味がわからない。
openもsystemも使いたくなければ使わなければいい。
もし、>>242が鯖管だったとしたら、
その程度の能力しかなくて鯖なんか扱うなとマジで忠告する。
0258nobodyさん
03/06/12 20:38ID:???読みました。
$message =~ s/\n/<br>/g;
みたいな簡単な構文じゃ無理なんですね。
私にはまだ理解できそうにないです。
0259nobodyさん
03/06/12 20:43ID:???少々逆説的だが、
あれを読んで理解できないと匙を投げるくらいの動機しかないなら、
むしろはじめからやらない方がいい。
よって、やらないでいるのは結果的に正解。
0260nobodyさん
03/06/12 20:51ID:???さじを投げたのではなくて、もっと勉強しなければいけないな、と思ったという意味だったんですけどね。
なんかマイナスに解釈されたようですが、お気を悪くさせたようですみません。
0263nobodyさん
03/06/12 21:37ID:xj4xPJ4f-s 消しても同じ結果なんですが…。
0264nobodyさん
03/06/12 22:01ID:???>return($newls2[0]); # 最高番号検出
さすがレスキュー・・・・
0265nobodyさん
03/06/12 22:27ID:???何個か数字があってその中から最高値を取り出せって言われたら
オレもソートさせちゃうけど・・・楽だし。
自分で、一個ずつ比較させる処理書いてもいいけど・・・
0266nobodyさん
03/06/12 23:27ID:???0267nobodyさん
03/06/12 23:47ID:xj4xPJ4fActivePerl5.8.0最新版でもNGでした。
誰か、暇な方、試して頂けないですかね…
0268nobodyさん
03/06/12 23:53ID:???0269nobodyさん
03/06/12 23:54ID:???FlashCGIつかっているのですが、こっちと、トリプが合いません。
新サバではないとおもいます。。。
はじめの2文字って「H.」から何かに変わったんでしょうか?
0274nobodyさん
03/06/13 00:28ID:???A > B ←これはAが大きいと真をかえすのだ
0275nobodyさん
03/06/13 00:35ID:nrl/A00ghttp://www.k-514.com/
0276nobodyさん
03/06/13 00:41ID:???実際のところは計測しなきゃわからないが。
0277nobodyさん
03/06/13 00:44ID:???0278nobodyさん
03/06/13 00:58ID:???0280nobodyさん
03/06/13 01:49ID:???$max = $_ if($_ > $max);
}
これが一番早くてメモリも使わず?
0281nobodyさん
03/06/13 01:57ID:???0282nobodyさん
03/06/13 02:08ID:???0283nobodyさん
03/06/13 02:12ID:???はて? perlgutsにもperlembedにもinterpreterと書いてあるが何か?
>>279
こういう恣意的なデータも取れるんだよ。
use Benchmark;
@ar = (1 .. 5);
timethese(10000, {
sort => '@br = sort { $b <=> $a; } @ar',
loop => '$max = $ar[0]; for (@ar[1..$#ar]) { $max = $_ if ($_ > $max);}'
});
Benchmark: timing 10000 iterations of loop, sort...
loop: 2 wallclock secs ( 2.23 usr + 0.01 sys = 2.24 CPU)
sort: 3 wallclock secs ( 1.98 usr + 0.00 sys = 1.98 CPU)
0284nobodyさん
03/06/13 02:19ID:???0285
03/06/13 08:01ID:???0286nobodyさん
03/06/13 08:01ID:???0287nobodyさん
03/06/13 09:29ID:???外部ファイルにして、requireするにせよ、useするにせよ、
perlは、皆コンパイルするということなんですが、
以下のようにするより、
use Hoge;
if (...) {
kore; # koreはmainの関数
} else {
are; # areはHoge.pmの関数
}
以下のようにした方が負担が減るということでしょうか。
if (...) {
kore;
} else {
use Hoge;
are;
}
0288287
03/06/13 10:01ID:???前提です。そして、ifになる確率が50%はあるとして。
0289nobodyさん
03/06/13 10:19ID:???useの場合は一緒じゃない?
requireなら、そうやったほうがいい。(require文が実行された時点で読み込むから)
0290287
03/06/13 10:31ID:???うん、こういうの書いた覚えあるんで、正しい判断だったんだと
わかってほっとしますた。
0291nobodyさん
03/06/13 11:18ID:???-----BEGIN PGP MESSAGE-----
Version: PGP 6.5.8ckt - ja http://www.hizlab.net/pgp/
qANQR1DDDQQDAwKzdZAaYlhVL2DJvuMRq1Krlrlnei+qaIGlODje1KRbdRDVTD1/
h7dQ6RfnS3GkGv2RNdvpZgVvgQqkSXcM3N8o9AkvtrmRtO3BsJJ1id5RArQwjmEE
kVXhF6Y5HdeQfOOTRjTMV2kS0i27sza8Gv+g+uFFTozzmsJ2ffbmrUi/K4MjsNnN
yh/mrKF/MkenFZqjnQobAHmjqzYxj8VMyx31Ar1GM4g/2UiEtAErfz//cJCJ0zsB
akVGj67i/wWnQoZgYVxe1sSyT/0=
=+BHl
-----END PGP MESSAGE-----
0292nobodyさん
03/06/13 11:41ID:???Namazuの仕組みを調べればいいんでしょうが、もっと簡単に
モジュール組み込んで、テキストファイル検索するみたいに、
バリバリ、正規表現検索がしたいのれす。
なにか情報の載っているサイトでもいいですから教えてくらはい。
0293nobodyさん
03/06/13 12:41ID:1CoOWAYzCGI.pmはmultipart/form-dataで送られたきたデータを受け取ると、
即座に一時フィルを作成するようなんですが、
このファイルを削除するか、ファイルを作成しないようにする方法はないですか?
0294nobodyさん
03/06/13 12:50ID:???Wordファイルの仕組みを調べれば、簡単じゃないことが分かるよ。
とりあえずバイナリエディタで開いてみ。
Namazuを使いたいってことなら、wordファイルからテキスト部分を抜き出して
インデックス作ればいいからそっちのやり方だと簡単かも。
>>293
全然CGI.pmの中身も見ずに反応するけど、
最後にファイル削除されないの?
ファイルを作成しないってことはメモリに全部蓄えるつもり?
予測可能なファイル名になっちゃうのなら問題だろうけど、
予測不可能なファイル名になってない?
0295nobodyさん
03/06/13 13:24ID:???use Benchmark;
$count= 100;
@array= (0 .. 5000);
timethese($count, {
'code1'=> q{
$max= $array[0];
for (1 .. $#array){
$max < $array[$_] and $max= $array[$_];
}
},
'code2'=> q{
@array2= sort {$b <=> $a} @array;
$max= $array2[0];
},
'code3'=> q{
$max= (sort {$b <=> $a} @array)[0];
},
'code4'=> q{
($max)= sort {$b <=> $a} @array;
}});
0296nobodyさん
03/06/13 13:43ID:U7lWej0Vhttp://endou.kir.jp/moe/linkvp.html
0297nobodyさん
03/06/13 14:45ID:???ActivePerlならWin32::OLEで、WordファイルをCOMオブジェクトとして開けば、
Wordオブジェクトのメソッドを呼び出せる。
ActivePerlじゃないならOLE::Storageで頑張る。
0298292
03/06/13 16:14ID:???wordファイルをバイナリエディタで開いて解析しようとしたが、
ちょっと漏れには無理だと悟って聞いたのです。大分前の話。
word2txtでwebを漁ってもぱっとしなかったし・・・
Namazuは、wordファイルも検索するって知ってる?つまり、
テキスト部分を抜き出すエンジンを備えているんじゃないかなぁ。
調べてみます。
>>297
うーん、ちょっとOLE::Storage見てみたけど、難しそうです。
Win32::OLEとかこれ使って、川合さんや極悪さんがExcelファイルを
簡単に扱えるモジュール書いてくれているんですが、やはり、word
は難しいんでしょうね。
0299nobodyさん
03/06/13 17:49ID:???> >>293
> 全然CGI.pmの中身も見ずに反応するけど、
> 最後にファイル削除されないの?
> ファイルを作成しないってことはメモリに全部蓄えるつもり?
> 予測可能なファイル名になっちゃうのなら問題だろうけど、
> 予測不可能なファイル名になってない?
それが、削除されないんですよ。
new CGIした時点で一時ファイルが作られて、
exit(0) or dieしても消えないんですよ。
どんどんファイルが増えていくのはちと問題ありかと。
0301nobodyさん
03/06/13 18:18ID:???その現象Windowsではなるよね
アップした際のファイルのファイルハンドルが開きっぱなしなのが原因
$q = new CGI;
$upfile = $q->param('upfile');
$tmpfile = $q->tmpFileName($upfile);#一時ファイル名取得CGItemp12345みたいな
〜処理〜
eval{close($upfile);}; #一応ファイルハンドル閉じる
unlink($tmpfile); #一時ファイル削除
0302nobodyさん
03/06/13 18:27ID:???保険として残ってたら削除ってことで。
ちなみにclose()をevalで囲っておかないと添付ファイルがない場合
特定のPerlのVerではエラーするよ
0303nobodyさん
03/06/13 18:29ID:???Linuxだが、
man: ??????????????????????
Failed to open the message catalog man on the path NLSPATH=<none>
No manual entry for CGI
0304299,293
03/06/13 18:31ID:???>>301
> >>299
> その現象Windowsではなるよね
> アップした際のファイルのファイルハンドルが開きっぱなしなのが原因
> $q = new CGI;
> $upfile = $q->param('upfile');
> $tmpfile = $q->tmpFileName($upfile);#一時ファイル名取得CGItemp12345みたいな
> 〜処理〜
> eval{close($upfile);}; #一応ファイルハンドル閉じる
> unlink($tmpfile); #一時ファイル削除
Thanks、解決しますた。
無料鯖なんで詳しく知らないけど、
環境変数見る限りではApache/1.3.27 (Unix) らしい。
でもunlink($tmpfile);しないと消えないんだよな・・・
0306nobodyさん
03/06/13 19:35ID:???わからないのですが。わかる方います?
0307nobodyさん
03/06/13 19:36ID:???0309nobodyさん
03/06/13 19:45ID:???#そのまま・・・
Benchmark: timing 500 iterations of code1, code2, code3, code4...
code1: 4 wallclock secs ( 3.98 usr + 0.00 sys = 3.98 CPU) @ 125.63/s (n=500)
code2: 5 wallclock secs ( 5.05 usr + 0.00 sys = 5.05 CPU) @ 98.97/s (n=500)
code3: 2 wallclock secs ( 1.37 usr + 0.00 sys = 1.37 CPU) @ 364.70/s (n=500)
code4: 1 wallclock secs ( 1.36 usr + 0.00 sys = 1.36 CPU) @ 367.65/s (n=500)
#@arrayをランダムに
Benchmark: timing 500 iterations of code1, code2, code3, code4...
code1: 2 wallclock secs ( 2.60 usr + 0.00 sys = 2.60 CPU) @ 192.23/s (n=500)
code2: 8 wallclock secs ( 7.98 usr + 0.00 sys = 7.98 CPU) @ 62.64/s (n=500)
code3: 4 wallclock secs ( 3.95 usr + 0.00 sys = 3.95 CPU) @ 126.71/s (n=500)
code4: 4 wallclock secs ( 3.93 usr + 0.00 sys = 3.93 CPU) @ 127.13/s (n=500)
#code1 を $max= $array[0]; for (@array){ $max < $_ and $max= $_ } に修正
Benchmark: timing 500 iterations of code1, code2, code3, code4...
code1: 1 wallclock secs ( 1.73 usr + 0.00 sys = 1.73 CPU) @ 289.02/s (n=500)
code2: 8 wallclock secs ( 8.03 usr + 0.00 sys = 8.03 CPU) @ 62.29/s (n=500)
code3: 4 wallclock secs ( 3.92 usr + 0.00 sys = 3.92 CPU) @ 127.62/s (n=500)
code4: 4 wallclock secs ( 3.90 usr + 0.00 sys = 3.90 CPU) @ 128.11/s (n=500)
0310nobodyさん
03/06/13 20:24ID:???いまさら言うのもアレだが、2chみたいにPATH_INFOを使って
hoge.cgi/fuga.jpgのようにすれば、IEなどを騙せ・・・たと思うけども。
0311188
03/06/13 21:06ID:???で、glob使わないで、
unlink(<tmp*>);と同じことする方法ってないですか?
0313nobodyさん
03/06/13 21:29ID:???普通に考えて、配列にはforeachが最速なんじゃないの?
$max = $array[0];
foreach my $array (@array) {
$max < $array and $max = $array;
}
0314nobodyさん
03/06/13 21:29ID:???0315nobodyさん
03/06/13 21:37ID:???$path = ".";
opendir(DIR, $path) or die;
unlink grep { /^tmp.*/ and -f "$path/$_" } readdir(DIR);
closedir(DIR);
0317315
03/06/13 22:02ID:???書いてから気が付いた。ごめん、適当に修正してくれ。
0318315
03/06/13 22:10ID:???unlink map { "$path/$_" } grep { /^tmp.*/ and -f "$path/$_" } readdir(DIR);
0319nobodyさん
03/06/13 22:14ID:???0324nobodyさん
03/06/13 22:35ID:???2ch互換のBBSを作るくらいしかメリットは無いかな
0327nobodyさん
03/06/13 22:52ID:???0328nobodyさん
03/06/13 22:58ID:???トリッパーで十分だ、
ノシ
0329nobodyさん
03/06/13 23:11ID:???0330nobodyさん
03/06/13 23:11ID:???0331nobodyさん
03/06/13 23:12ID:???→→→
0332nobodyさん
03/06/13 23:15ID:???0333329
03/06/13 23:27ID:???0335311
03/06/14 00:24ID:???丁寧にありがとうございます。
で、
$path = "../image/photo";
opendir(DIR, $path) or die;
unlink map { "$path/$_" } grep { /^tmp.*/ and -f "$path/$_" } readdir(DIR);
closedir(DIR);
とやったのですが、結果を見ると、消えてないんですよね・・・
なんでなんでしょう?スクリプトも間違いがあるとは思えないし、
別にcgi自体は正常に終了してるしからエラーログも見れないし、
$path のディレクトリも存在してるし・・・
いったい何が原因なんでしょうか?
恐縮ですがもう少しおつきあいねがえれば幸いです。
0337nobodyさん
03/06/14 00:28ID:EElS1+7WでもCGIの設置くらいしかしたことありません。
1から勉強しようと思います
で、参考書籍のスレに行ったんですがなんか微妙なので
こっちで手っ取り早く教えてください
ソースはメモ帳で書けるんですよね?
お勧めの本おしえてください。
プログラムはやったことないに等しいです
(HTMLはある程度書けます。それとHSPくらいなら・・・)
宜しくお願いします
0338nobodyさん
03/06/14 00:30ID:???・print map { "[$path/$_]" } grep { /^tmp.*/ and -f "$path/$_" } readdir(DIR);
等としてみて本当に拾えているか確かめる。
・unlink 後に print $!; してみる。
unlinkの後に$!を見てみる。
空ならunlinkは成功しているよ。
…というか、CGIスクリプトなのか。共用サーバでは実験しないでね。
CGIスクリプトは、途中でdieしても、HTTPヘッダさえ出力してあれば問題ないように見えることもあるから、注意してね。
0341nobodyさん
03/06/14 00:38ID:???いいんだよ。それ正規表現だから。
>>337
ソースはメモ帳でOK。ただ扱えるサイズに制限があったような?
フリーのテキストエディタを使うといいよ。プログラミングに便利な機能がたくさんある。
0342337
03/06/14 01:25ID:EElS1+7WHTML書くとき使ってるエディタ使うことにします
本はどうしようかな…
やはり見てから決めたほうがいいかな。
0344nobodyさん
03/06/14 05:08ID:CEUIIJh6VBAならできるかもしれないけど。
0346nobodyさん
03/06/14 07:32ID:FbHmkvIrhttp://homepage3.nifty.com/coco-nut/
0348nobodyさん
03/06/14 13:13ID:???0349nobodyさん
03/06/14 15:23ID:???sub sub{
}
と
sub sub($){
}
にはどういう違いがあるんですか?
0352nobodyさん
03/06/14 22:33ID:???プロンプトみたいに、撃つ回数
平均時間、最短時間、最長時間
を得ることができますか?
リファレンスみると、生きてるか死んでるか、しかわからないみたいなので・・・
アクセスログのファイルのファイルハンドルをFとすると
@line=<F>;
のようにするのは、よくないとどこかで見たのですが
ファイルサイズが小さい場合でも駄目なのでしょうか?
もしよかったとして、どれくらいのサイズまでなら大丈夫なのでしょうか?
もし過去ログにあるのならば、どのあたりの過去ログにあるかを教えて欲しいです。
よろしくお願いします。
0355nobodyさん
03/06/14 23:03ID:???小さきゃかまわないよ。
どのくらいのサイズまで大丈夫かなんて、環境によって違うので分からない。
「みんなはどれぐらいで線引きしてるか」の答えなら得られるかもしれない。
>>356
レスありがとうございます。
なるほど、確かに環境によってかわりますよね。
では、どのくらいの大きさで区別をなさってるのでしょうか?
私は30〜50k程度のファイルでする予定です。
0359nobodyさん
03/06/14 23:33ID:???0360nobodyさん
03/06/14 23:33ID:???なんで差が出るかの理由を考えろ。
その方が早い。
0361nobodyさん
03/06/14 23:35ID:???かなり小データ以外は一行筒読んでます。
0362nobodyさん
03/06/14 23:36ID:MAEKWf+y[an error occurred while processing this directive]
というエラー文が.sthmlファイルの中に出てくるんですが、
この文章を自由な文面に変更したり出来るんでしょうか?
0363nobodyさん
03/06/14 23:42ID:???ソートするとか、順序を入れ替えるとかしたいなら、一括で
またまたレスありがとうございます。
>>359
なるほど、1行ずつのほうがいいですか。
変更はすぐできるのですが、15〜20kくらいのファイルでもだめでしょうか?
>>360
1行に記録するデータの項目がある場合と無い場合があるからです。
例えていったら、掲示板で名前だけ書く人と、名前もメアドも両方書く人がいる、みたいな。
0365nobodyさん
03/06/15 00:01ID:???大きさだけじゃない。
例えば、速攻で作らなきゃならない、使い捨てのスクリプトを占有サーバで実行するなら
数十MBでもやるかもしれない。
レスどうもです。
有料ですがレンタル鯖なので他の人に迷惑がかからないように
1行ずつ処理した方がよさそうですね。
ありがとうございました。
0367nobodyさん
03/06/15 02:55ID:???0369nobodyさん
03/06/15 04:19ID:???プロセス番号($$)のファイル名を作成させて管理する形式でユニークに
しようかと思っております。
プロセス番号で管理すれば、完全にユニークになると考えて宜しいのでしょ
うか。
まだまだ初心者のため、自信がありません。
どうか教えていただければありがたいです。
0371nobodyさん
03/06/15 05:34ID:???FFFTPで表示されてる、サーバーにあるディレクトリの作成日時と
(stat("dir"))[9] 使って取得した日時(unixtime)が一致してない・・・・・
なぜだろう
0372nobodyさん
03/06/15 06:24ID:m8nOAT8Lでしょうか。どうもうまくいきません。
0374nobodyさん
03/06/15 10:52ID:???$hoge = "test";
&$hoge;
sub test{
}
0375nobodyさん
03/06/15 17:55ID:fAURPzIq機能してませんよね。以下↓
http://www.keddy.net/~gekiya77/ore_plus_v02-04-16/
原因が分かるのならば、教えて下さいませ。
0380nobodyさん
03/06/15 19:32ID:???パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
0382nobodyさん
03/06/15 19:48ID:???0383nobodyさん
03/06/15 20:01ID:???0385nobodyさん
03/06/15 20:27ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
煽りや荒らしは放置で
次の方どうぞ。
0386nobodyさん
03/06/15 20:36ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
煽りや荒らしは放置で
次の方どうぞ。
0387nobodyさん
03/06/15 20:49ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
煽りや荒らしは放置で
次の方どうぞ。
0388nobodyさん
03/06/15 20:50ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
煽りや荒らしは放置で
次の方どうぞ。
0389nobodyさん
03/06/15 21:03ID:m8nOAT8Lご返答有難うございます。
やりたいことは>>374さんのようなことなのですが、
このように実行すると、
Bad name after main:: at -.cgi
と出てしまいます。
use strictをはずせば回避はできるのですが、
いろいろと試してみたいと思います。
ご親切に有難うございました。
0390nobodyさん
03/06/15 21:04ID:QzYzFnUNhttp://www1.free-city.net/home/s-rf9/page004.html
http://www1.free-city.net/home/s-rf9/page005.html
0391nobodyさん
03/06/15 21:20ID:???%funcs = (
hoge => sub {return 1},
hage => sub {return 0}
);
$name = 'hage';
print $funcs{$name}->(), "\n";
0393nobodyさん
03/06/15 22:17ID:???出てしまいます。strictはずせばいけるのですが、、、
先生方、もしお分かりでしたら教えてください、、、
0394nobodyさん
03/06/15 22:43ID:???それはソフトリファレンスだからではないか?
変数の部分は文字列が入っている?
回避方法としては、
1.プログラムの構成を考え直す(ソフト・リファレンスを使わない)
2.no strict;を直前に入れる。
3.eval を使う。
などが考えられる。
0395nobodyさん
03/06/15 22:45ID:???>>1
>【投稿する際の注意】
>質問するときは内容をよく吟味してから投稿してください。
>
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
>
>最低でも1と3が無いと誰も答えられないよ。
0396nobodyさん
03/06/15 22:48ID:???そのとおりでございます。
変数の部分には文字列がはいっております。
リファレンスから勉強しなきゃ駄目ですね。
本当にご親切に有難うございました。
0397nobodyさん
03/06/16 00:08ID:CSJJat6/もし可能でしたらやり方を教えてほしいです。
0399nobodyさん
03/06/16 00:35ID:???755で作成されてしまいました。
ラクダ本を読んでみたところ
>数値MODEで指定したパーミッション(を現在のumask値で修飾したもの)を持つ
とあるのですが、umaskで修飾とはどういうことなのでしょうか?
原因の分かるかたがいらっしゃいmしたらよろしくお願い致します。
以下の様にやっています
mkdir( './dir', 0777 ) or die( "ディレクトリを作成できません\n" );
0400nobodyさん
03/06/16 00:56ID:???print umask; # 現在値
my $umask = umask 0; # umask を 0 にし、前の値を退避
mkdir ...
umask $umask; # 元に戻す
see also: http://www.google.co.jp/search?q=umask&hl=ja&lr=lang_ja
0403nobodyさん
03/06/16 01:49ID:DMh466I+$content =~ s/([a-zA-Z0-9\.\-\_]+@[a-zA-Z0-9\.\-\_]+)/<a href=\"mailto:$1\">$1<\/a>/g;
↑この正規表現で、$content内に”(sage@hoge.com)”(←カッコは全角)
という文字が含まれていた場合、最初のカッコ部分で文字化けしてしまいます
・・・というか、IEでは<a>タグの"<"部分が文字化けしてそれ以降の
</a>部分までのHTMLが表示されてしまい、NN6ではsage@hoge.comの前に
余計な文字がくっついたものにリンクが貼られている状態になってしまいます
文字化けせずに、”sage@hoge.com”だけがマッチするようにするには
どうしたら良いでしょうか?
0405nobodyさん
03/06/16 02:35ID:cMLQJvQF探し方が悪いのかもしれませんが…
ファイルオープン時に、対象ファイルがないと『Internal Server Error』が表示されるのですが、
このエラーの変わりにメッセージを表示、もしくはHTMLで作成したエラーページにジャンプ
させたいと思っています。
そこで、まずはメッセージの表示から挑戦したのですが、上手く行きません。
$fname1 = "ファイルのパス/ファイル名";
open(FILE, "$fname1") or die "File Open Error.\n";
open(FILE, "$fname1") || die "File Open Error.\n";
open(FILE, "$fname1") or &Error "File Open Error.\n";
open(FILE, "$fname1") || &Error "File Open Error.\n";
以上のどの方法でも『Internal Server Error』が表示されています。
ファイルのパス/ファイル名は、HTMLフォームに入力された内容を取得しているのですが、
存在するファイル名を指定すれば、正常にファイルの入力は行われます。
以上、説明の不備等あるかもしれないのですが、よろしくお願いします。
0407nobodyさん
03/06/16 03:22ID:X/Zl1g96バッファをクリアするにはどうすればいいのでしょうか?
0408nobodyさん
03/06/16 03:29ID:???レス有難うございます。
> sub Errorのほうではちゃんとヘッダとか出力してますか?
&Errorって、dieの代わりに使う…ってモノじゃ無いんですね…
どうも的違いの事をやってしまっているようですね。
もう少し勉強してから質問するようにします。
なんにせよ、解決に向かって一歩進んだような気がします。(気のせい?)
本当に有難うございました!
0409405
03/06/16 03:40ID:???下記のようにすることで、無事にエラーページに飛ぶ事が出来ました。
open(FILE, "$fname1") or &Error;
sub Error{
print "Location:エラーページのURL\n\n";
}
>>406さんにヒントをもらえたおかげです。有難うございました!
また、板汚し失礼いたしました。
0410nobodyさん
03/06/16 03:45ID:???これでどうだ?
文字化けしそうな時は、スペース1個入れてごまかしてみた。
$content =~ s|(?<=[\x81-\x9f\xe0-\xef][\x40-\x7f])([\w\.\-]+@[\w\.\-]+)| $1|g;
$content =~ s|([\w\.\-]+@[\w\.\-]+)|<a href="mailto:$1">$1</a>|g;
0411nobodyさん
03/06/16 04:06ID:???ごめん。間違い。
↓こうしないと失敗するかも。
$content =~ s|((?:[\x81-\x9f\xe0-\xef][\x40-\xfc])*(?:[\x81-\x9f\xe0-\xef][\x40-\x7f]))([\w\.\-]+@[\w\.\-]+)|$1 $2|g;
$content =~ s|([\w\.\-]+@[\w\.\-]+)|<a href="mailto:$1">$1</a>|g;
0412_
03/06/16 04:23ID:???0413nobodyさん
03/06/16 08:18ID:???Cとかjavaとか、Linux、word、一太郎などまであるわけですが、perlはなぜか
聞かない。
0414nobodyさん
03/06/16 08:44ID:???2003年6月16日(月)8:44
という文字列から
「6月16日(月)」と「8:44」
を取り出すにはどうしたらよいか教えていただけませんか?
よろしくお願いします。
0415nobodyさん
03/06/16 09:06ID:???$hiduke='2003年6月16日(月)8:44';
@hiduke=$hiduke=~m/(\d+月\d+日\(.+?\))(\d+:\d+)/;
print "@hiduke";
0416nobodyさん
03/06/16 10:42ID:QXmqryyphttp://www.dtek.chalmers.se/groups/icfpcontest/
これで優勝すると「無制限に自慢する権利」を得ることが出来ます。
http://slashdot.jp/developers/03/06/13/1610225.shtml?topic=58
0417nobodyさん
03/06/16 10:52ID:01UxcTvVエディタで見るとちゃんと改行されて見れますが
log.dat内でも改行される様に
するのはどすればいいのでしょうか
すんません。初歩的質問で
よきお知恵を
例えばこんなのです
$log = $ENV{'HTTP_REFERER'};
open(LOG, ">>./log.dat");
print LOG "$log\n";
close(LOG);
0418nobodyさん
03/06/16 11:04ID:???意味不明。
log.dat内でも見られるってどういう意味?
改行っつったら、文字コードの話か、<br>の話か。
ともかく落ち着いてわかりやすく説明してくれ。
0419nobodyさん
03/06/16 11:38ID:01UxcTvVすんません。ちょっと落ち着いてみます。
えーと
FTPとかでlog.datを落としてメモ帳で見る、もしくは
その場でメモ帳とかで開くとlog.datがバイナリなので
改行されず見難いです。
まあ普通にエディタ使えばいいじゃんと
言われればそうなんだけど
出来ないのかなぁ と
うぐ、なんか説明へただぽ
0420nobodyさん
03/06/16 11:41ID:???激しくスレ違いだな。
改行コードの問題だ。
素直にエディタ使え。
0421nobodyさん
03/06/16 11:43ID:???うむ、たしかにちとスレ違い。
まあ、どうしてもメモ帳が使いたいなら、SJISにして書き込むなり
なんなりしたまい。
果てしなく意味のない行為だとは思うが…。
0422nobodyさん
03/06/16 11:51ID:???バイナリ?だって、そこが勘違いの元じゃないかな。
HTTP_REFERRERは、飛んでくる前のページだから、普通のテキスト
ファイルのはず。改行コードがLFだけだとしても、windows PCだと
行がつながらないはず。Macだと?逆に、CRだけだと、windows PC
で見ると行がつながる。とっちか確かめて、
s/\r/\r\n/とか、s/\n/\r\n/とかすりゃいいんじゃ?
0423nobodyさん
03/06/16 11:53ID:???たくさんあるファイルの1行目だけ表示したいんですが、
perl -ne 'print if $. == 1;'
だと1つのファイルだけしか処理できないんで困ってます。
よろしくおながいします。
0425nobodyさん
03/06/16 11:57ID:AbGOHEQTすみません、普通にGETとはどういうことでしょうか…?
それが分からなくて困ってます。
0428nobodyさん
03/06/16 12:07ID:???http://www.google.com/search?num=100&hl=ja&inlang=ja&ie=Shift_JIS&safe=off&c2coff=1&q=perl+http+get&lr=lang_ja
0430nobodyさん
03/06/16 12:18ID:8IGausxnありがとうございます
0433nobodyさん
03/06/16 13:34ID:???$a = 0;
if (!$a)
真でいいんですよね。
では↓こういう式の時は
if (!($a==0 && $b))
変数が
$a = 1 $b = 1 の時は 偽
$a = 1 $b = 0 の時は 真
$a = 0 $b = 1 の時は 偽
$a = 0 $b = 0 の時は 偽
でいいのかなそれとも
$a = 1 $b = 1 の時は 真
$a = 1 $b = 0 の時は 真
$a = 0 $b = 1 の時は 偽
$a = 0 $b = 0 の時は 真
こっちでしょうか? よろしくお願いします。
0437nobodyさん
03/06/16 14:08ID:???自分で書いたものではなくて試そうにも中に実際中に何が
はいっているのかも解らず1つ1つ解決していこうとは思っているのですが、
検索したり、リファレンスみたりしてるのですが、こういった例が見当たら
なかったので質問しました。よろしくお願いします。
0439nobodyさん
03/06/16 14:32ID:???ローカルにテスト環境を作って試す。
これ常識。
マジで。
0441nobodyさん
03/06/16 14:41ID:???まあマジレスすると
$a=1;
$b=1;
if (!($a==0 && $b)){
print "ok\n";
}
こんな感じにして、4回変数を書き換えればテストは出来る。
記述が正しいかの動作確認だけなら、一々スクリプト全体を
見直す必要は無い。
0443nobodyさん
03/06/16 17:25ID:0o9Ehb4h$addr = $ENV{'REMOTE_ADDR'};
でIPアドレスを取得するように設定したのですが
友人に送ってもらったメールのIPアドレスと自分で送ってみたものが
同じIPアドレスになってました。
なんでー???
0447nobodyさん
03/06/16 17:45ID:???$port = getservbyname('http', 'tcp');
$iaddr = inet_aton($host);
$sock_addr = pack_sockaddr_in($port, $iaddr);
socket(SOCKET, PF_INET, SOCK_STREAM, 0);
connect(SOCKET, $sock_addr);
select(SOCKET); $|=1; select(STDOUT);
print SOCKET "GET /$path HTTP/1.0\r\n";
print SOCKET "\r\n";
@get = <SOCKET>;
こんな感じで
0448443
03/06/16 18:05ID:0o9Ehb4h住んでる所は友人は関東で私は中部だしプロバイダーも違うし。
$addr = $ENV{'REMOTE_ADDR'}; の箇所以外に
IP取得に干渉するものがあるんでしょうか?
もちょい試行錯誤してみます。
0449nobodyさん
03/06/16 18:43ID:???↓のようにすると、sleep(1)×配列の個数ぶん待った後
一気に出力されます。。
1文字づつ1秒間隔で出力したいのですが、、どこがまちがってますか?
@data = ("あ","い","う","え","お","か","き","く","け","こ");
print "Content-Type: text/html\n\n";
print "<html>\n";
print "<title>self</title>\n";
print "<body>\n";
for($i=0; $i<=$#data; $i++){
print "$data[$i]<br>\n";
sleep(1);
}
0451nobodyさん
03/06/16 19:42ID:???どういうことでしょうか?
ローカルで動かしているんですが、
AddHanderもして、
拡張子もcgiで、ちゃんとスクリプトのはずですが。。。
0452nobodyさん
03/06/16 19:47ID:???REMOTE_ADDRを記録して、それが同じだったということはREMOTE_ADDRが同じだったということではないですか?
>>451
CGIは全部実行した後出力するんだよ。たしか。
0453nobodyさん
03/06/16 19:51ID:???0455nobodyさん
03/06/16 19:56ID:???俺にもよく分からんけど、この辺とか
ttp://www.google.co.jp/search?q=cache:yNlP1fhIQ48J:tohoho.wakusei.ne.jp/lng/199802/98020500.htm+%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%83%AA%E3%83%B3%E3%82%B0+cgi&hl=ja&lr=lang_ja&ie=UTF-8
0456nobodyさん
03/06/16 20:40ID:???スクリプトで、mt-load.cgiを実行したときに1行ずつ表示されてたんだけどなぁ。
nphでもなさそうだし・・・
0458nobodyさん
03/06/16 21:34ID:???ほんとだ、localついてて見落としてた。。。
でも、sleepもないし、nph-*.cgiでもないのに・・・
どういう仕組みなんでしょうか?
0459nobodyさん
03/06/16 21:38ID:???イイナァ
0461nobodyさん
03/06/16 22:06ID:???あああ鬱。
0462458
03/06/16 22:08ID:???どうやったらできるんでしょ。。
ネタとか言わないで・・・
0463nobodyさん
03/06/16 22:26ID:???0464nobodyさん
03/06/16 23:52ID:???いろんな串さしてみて試せば?
0465nobodyさん
03/06/16 23:55ID:???$| = 1;
@data = ("あ","い","う","え","お","か","き","く","け","こ");
print "Content-Type: text/plain\n\n";
for($i=0; $i<=$#data; $i++){
print "$data[$i]<br>\n";
sleep(1);
}
exit;
これでやってみれ。
0467nobodyさん
03/06/17 00:02ID:???0470nobodyさん
03/06/17 00:14ID:???htmlについてもよく考えてみれ。
ブラウザがソースを受け取り、解釈してからレイアウトを決めて
どの時点でどういう順番で表示するか保証はないんだぞ?
0471458
03/06/17 00:14ID:???IEだと無理です。
0472458
03/06/17 00:17ID:???1行ずつ表示する文字をdatなりに保存して読み出したいので、cgiがいいんですけどね〜。。
javaはソース見え見えなのがいやだなぁ。。
0474458
03/06/17 00:20ID:???え???
俺、ローカル(Win)でやると、
あ<br>
い<br>
ってのが一気に表示されて、
レンタルサーバ(linux)だと、
ファイルのダウンロードになった
0475nobodyさん
03/06/17 00:31ID:???とりあえずJavaとJavaScriptは別モンだゴルァ!とお約束の突っ込み。
CGIでは、表示するぶんだけの文字列とそれを表示するためのJavaScriptを出力して
実際の表示はJavaScriptに委ねる、って意味なんだけど。
まあ、可能かどうかは分からんが。
0476nobodyさん
03/06/17 00:39ID:fNA5EU9/foreach文の中で次のループに移るコマンド(for文のcontinueみたいなやつ)
はあるのでしょうか?
御教授くださいませ。
0477nobodyさん
03/06/17 00:40ID:???0481nobodyさん
03/06/17 01:02ID:???まさか、CGIで よ う こ そ とか、下らない事やりたい訳じゃないよね。
JavascriptやFlashが無難だと思うけど・・・。
0482nobodyさん
03/06/17 01:06ID:???見るほうはさっさと表示されたほうがありがたいだろうに
自分のセンスでおもしろいカッコイイと思ってもみんながそうとは
0483nobodyさん
03/06/17 01:08ID:3tOJ9ih6SSIでCGIを呼び出そうとして失敗したときに
[an error occurred while processing this directive]
というエラー文が.sthmlファイルの中に出てくるんですが、
この文章を自由な文面に変更したり出来るんでしょうか?
出来ればリンクタグに変えたいんですが・・・
0486nobodyさん
03/06/17 01:13ID:QhMbf/ikmy $file = '/dir/*';
my @list = glob("$file");
このようなイメージでglob内ワイルドカードを
変数化することは可能でしょうか。
0488nobodyさん
03/06/17 01:22ID:???そのやり方じゃダメなの?
それより、何でスカラー変数をいちいち "" で囲むんだろう。
たまにリストでそれやってハマってる人がいるけど、なんかそういう参考書があるのだろうか。
0490486
03/06/17 02:09ID:???$file = '/dir/*';
my @list = <$file>;
はいかないのに
$file = 'dir/*';
my @list = </$file>;
はいったので、すごい疑問に感じ、ここでglobについて
質問させていただきました。
雰囲気を壊してしまいすみませんでした。
0491nobodyさん
03/06/17 06:23ID:???<$file>と書いた場合は、$fileがファイルハンドルと解釈されてるだけだよ。
<>演算子は、中身によって行入力になったりグロブ演算子になったりと、紛らわしい。
だからPerl5以降では、glob()を使ったほうがいい。
0492nobodyさん
03/06/17 07:06ID:???ファイルを開き、記録された記事番号とパスワードを取りだし
入力されたパスワードと選択された記事をそれぞれ比較して
該当した記事以外を記録しなおすという処理を作ったんですが
いろいろいじってるうちになんだか変な動作するようになりました。
入力したパスワードが正しいとなぜが一番違いの記事のパスワードと比較します。
入力されたパスワードが間違ってると、その記事のパスワードと比較します。
何が悪いんでしょう?
0493nobodyさん
03/06/17 07:07ID:???$del = 0;
local($no,$key) = split(/,/,$line);
if( ( $FORM{'delete'} eq $key ) ){
if ( $no eq $FORM{'target'} ) {
$del = 1;
}
if ( $del == 0 ) {
push (@line2,$line);
}
}
else {
&error("キーが違います。");
}
}
0494492
03/06/17 07:08ID:???0495nobodyさん
03/06/17 09:48ID:???ものを作っています。その際、ファイルハンドルなどはインスタンスごとに
違うものにしたいのですが、どのようにすればよいのでしょうか?
滅茶苦茶な例なのですがC&Perlで言うと下のようなイメージでやりたいと思っています
my $seif = shift;
$self->{handle} = fopen( …
0497>>492
03/06/17 13:30ID:XeNVFdef{
$del = 0;
local($no,$key) = split(/,/,$line);
if( ( $FORM{'delete'} eq $key ) ){
if ( $no eq $FORM{'target'} ) {
$del = 1;
}
if ( $del == 0 ) {
push (@line2,$line);
}
}
else {
&error("キーが違います。");
}
}
字下げくらいしろ。
見易さが違うだろうが。
っといいつつ、俺はPerlに関しては初心者だからまだ分からんがな。
今アクセスログやってんねや。んじゃ
0498nobodyさん
03/06/17 13:36ID:???その書き方はおかしいだろう。
記事番号$noはユニークだろうが、パスワード$keyは同じ値が
ありえるはず。
評価の順番が逆だ。
これでどうだ?
foreach $line (@lines) {
local($no, $key) = split(/,/,$line);
if ( $FORM{'target'} eq $no) {
if ( $FORM{'delete'} ne $key ) { &error("キーが違います。"); }
} else {
push (@line2, $line);
}
}
書き直しただけで、上記は再考の余地あり。
最初のほうで一致しても最後までループ処理が続いてしまって無駄。
0499新着
03/06/17 14:12ID:nJC3WMH60500nobodyさん
03/06/17 14:23ID:???cryptの暗号化についてです。
cryptによる暗号化は、サーバーによって結果が異なるのでしょうか?
自分のローカル環境とinfoseekの鯖では同じ結果になったのに、
友人のFreeBSDの鯖では結果が異なりました。
ラクダ本も見てみたのですが、詳しく載ってないみたいで。
以下がソースです。
#!/usr/local/bin/perl
$salt = 'sa';
$key = 'hogehage';
$crypt = crypt($key,$salt);
print "Content-type: text/plain\r\n\r\n";
print "salt=$salt\n";
print "key=$key\n";
print "crypt=$crypt\n";
ローカルの結果が、
salt=sa
key=hogehage
crypt=saaqOoONNsWPU
友人の鯖での結果が、
salt=sa
key=hogehage
crypt=$1$sa$YaIYjBa3kyQD6Oqo6pfMi.
でした。
もし可能なら、暗号化した後の結果が同じにしたいのですが、
どなたか方法をご存知ないでしょうか?
0501nobodyさん
03/06/17 14:34ID:???0502nobodyさん
03/06/17 14:37ID:???0503nobodyさん
03/06/17 14:40ID:???cryptはOSによって暗号化のアルゴリズムが異なることがある
ttp://hasunuma.pobox.ne.jp/support/cyclamen.cgi?log=perl&tree=r18
こんなのを使う手もあるし
ttp://www.mikeneko.ne.jp/~lab/perl/des/
0504500
03/06/17 14:56ID:???どうやら友人の鯖ではMD5がなにか関係しているようですね。
ライブラリの紹介もありがとうございました。
試してみたところ、これを利用すれば同じ結果になりました。
ありがとうございました。
0505nobodyさん
03/06/17 15:37ID:in7oUIeX$LOCATION[$values[0]] = {
"locationname" => $values[1],
としているのですが、
@locationlist = split(/_AND_/,$in{'locationid'});
#($in{'locationid'}は「1_AND_3_AND_7」のカタチで入ってきます。)
for($i = 0; $i <= $#locationlist; $i++){
$HtmlLocationList .= $LOCATION[$locationlist[$i]]->{locationname} . "***":
}
で、表示されるのでが「***」の部分だけで、
$LOCATION[$locationlist[$i]]->{locationname}の部分が表示されません。
なぜなのでしょうか?
0506nobodyさん
03/06/17 16:03ID:???というものから、「<font color="#FF9900">◆</font>リニューアルオープンいたしました!」を取り出したいのですが、
$JSAll =~ m/document\.write\(\"(.*)\"\)\;)/;
で。$1を得ようとすると、
/document\.write\("(.*)"\);)/: unmatched () in regexp at index.cgi line 34.
といわれてしまいます。
どうしたらちゃんと動くのでしょう?
そもそも、 unmatched ()ってどういう意味なのでしょう?
0507nobodyさん
03/06/17 16:37ID:???()の数があってない。
板違いだが、1行目のJSすらエラーだな。
0508nobodyさん
03/06/17 16:37ID:AMyzcYWt$str =~ s/^\w+\.\w+\(\"(.*)\"\)$/$1/;
0509nobodyさん
03/06/17 16:38ID:???↓↓↓
http://www.dvd-yuis.com/
0510nobodyさん
03/06/17 16:41ID:vHbufOUB@array = split(/\t/, $str);
foreach $value (@array){
$flag = 0;
foreach (@result){
if($_ eq $value){ $flag = 1; }
}
if($flag == 0){
push(@result,$value);
}
}
重複した要素を除く処理を作ったんですけど無駄はありますか?
0511nobodyさん
03/06/17 16:49ID:???ツッコミどころが多すぎてどこからつっこんでいいかわからん。
無駄以前に、思い通りの動作しないだろ。
0513_
03/06/17 16:51ID:???0515nobodyさん
03/06/17 16:52ID:???漏れもそんなに詳しいわけじゃないが、こんなんは駄目か?
$str = "abcdabcdef";
@array = split(/\t/, $str);
foreach $value (@array){
$hoge{$value} = '';
}
foreach $value(keys(%hoge)){
push(@data,$value);
}
0516nobodyさん
03/06/17 17:19ID:???@a = split(//,$a);
for (@a) {
$a{$_} += 1;
}
@a = sort keys %a;
0518nobodyさん
03/06/17 17:33ID:???@resultはどこから沸いて出たんだ?
$strにタブがないのにタブで区切ってどうするんだ?
0519nobodyさん
03/06/17 17:33ID:???0520nobodyさん
03/06/17 17:34ID:UJvendEvその処理が、全体のパフォーマンスに影響するのかな?
影響しないなら、考えるのが無駄。
0521nobodyさん
03/06/17 17:50ID:vHbufOUB@resultは宣言してないだけ、
タブが勝手に消えるのは2ちゃんねるの掲示板の仕様
>520
パフォーマンスのこともあるけど、
もっといい方法があるならそれを見て勉強になるし。
0522nobodyさん
03/06/17 17:53ID:GIfprx1bサブルーチンのなかで、サブルーチン書くのはなんか悪いことありますか?
グローバル変数つかうのと、一連の処理をすべて、同じブロックに入れるのはどれがいいでしょうか?
0523nobodyさん
03/06/17 18:16ID:vgoejlvM正規表現で使う「=~」の「~」つまりチルダですが、これってチルダでいいですか?
というのは私の持っている本ではこの波が真ん中に来ていて、チルダに見えないんですよ。
実際これはチルダで委員ですか?
0524nobodyさん
03/06/17 18:27ID:???サブルーチンの中にあるサブルーチンを
どこか別のサブルーチンから呼び出す時に
面倒だ罠。
0527506
03/06/17 18:31ID:???ありがとうございます。
ところで、
$srt = 'document.write("<font color=#FF9900>◆</font>ホームページがリニューアルオープンいたしました!")';
$str =~ s/^\w+\.\w+\(\"(.*)\"\)$/$1/;
print $str;
とやったのですが、
なんにもprintされません。確かに正規表現はあってるかと思うのですが・・・・・
わかるかたいらっしゃいますか?
0530523
03/06/17 18:59ID:SJassQej動きました。
別のところでエラってました。スマソ
0531nobodyさん
03/06/17 19:00ID:???ここの掲示板のソースみてみれ・・・ワラタ
0532nobodyさん
03/06/17 19:24ID:???0533nobodyさん
03/06/17 19:48ID:???っていうエラーを見るんですが。
BEGIN not safe after errorsってどういう意味ですか?
0536nobodyさん
03/06/17 20:39ID:???0537525
03/06/17 21:58ID:???10回*30秒くらいみたのですが、わかりませんでした・・・
どうみても正しいようにしか見えないのですが、
どうしてこんな結果になるのでしょう・・・
どうか教えてください。。。
0538nobodyさん
03/06/17 22:13ID:???--- test.p ---
$srt = 'document.write("<font color=#FF9900>◆</font>ホームページがリニューアルオープンいたしました!")';
$str =~ s/^\w+\.\w+\(\"(.*)\"\)$/$1/;
print $str;
---
> perl -wc test.p
Name "main::srt" used only once: possible typo at test.p line 1.
test.p syntax OK
>
0539nobodyさん
03/06/17 22:24ID:???http://www.kt.rim.or.jp/~kbk/perl5.doc/perldiag.html
0540458
03/06/17 23:41ID:???おっしゃられたとおり、私の環境がおかしいにしても、mt-load.cgiのは正常に表示されるんです。。
だれか、教えてくださいまし・・・・
0541nobodyさん
03/06/17 23:48ID:???そのしつこさを別の方向に向ければいいのに。
正常に動くスクリプトがあるなら、いらない部分をガンガン削って、どの部分でそれを表現してるか調べてみるとかあるだろ。
レス遡るのもマンドクセ。
0543座敷荒氏
03/06/17 23:50ID:NkO+IDyDShellに結果を渡すようにしたいのです。
Perlでtestコマンドを実行してから結果を
どうやってShellに引き渡せばいいのでしょうか?
最終的には1ではなく100や255エラーを返すようにしたいのですが。
0544525
03/06/18 00:00ID:???それは、たぶんですが、
文法は間違いないということですよね?
なぜ、$strが空になってしまうのか、教えていただけませんか?
(それともデバッガになれてないので勘違いしてるのかしら)
0545nobodyさん
03/06/18 00:05ID:???あってもない自分の脳内知識をお互いに自慢してる。
横から見てるとハライテーヨ
0547nobodyさん
03/06/18 00:24ID:???Name "main::srt" used only once: possible typo at test.p line 1.
(main パッケージの srt という名前の変数は一度しか使われていません。
誤字の可能性があります。(test.p の 1 行目))
0550nobodyさん
03/06/18 00:41ID:???(・∀・)ノ" またあとで見に来るよん
0551506
03/06/18 01:07ID:???しかし、デバッガって便利なんですね。使ってみよう。
いままでKCatchしか使ってなかった。
0552nobodyさん
03/06/18 01:15ID:???0553506
03/06/18 02:39ID:???実は、「document.write("<font color=#FF9900>◆</font>ホームページがリニューアルオープンいたしました!")';」
というのは外部jsなんです。(SSIが使えないので、SSI Includeみたいに使おうとしている))
なので、↓の1行目で、jSファイルを読み込んでその文字列まるまるを返してます。
$topics = &responce_filesubstance($PathTopicsJS);
jcode::convert(\$topics, sjis);
$topics =~ s/^\w+\.\w+\(\"(.*)\"\)$/$1/;
ところが、そうすると、
$topicsが「document.write("<font color=#FF9900>◆</font>ホームページがリニューアルオープンいたしました!")';」
のままで置換してくれなくなってしまいました。どうすればいいのでしょう?
一応、responce_filesubstanceも書いておきます。
sub responce_filesubstance{
my($PathFile) = $_[0];
my($filesubstance);
#ファイルを開いて読み込む
open (IN,$PathFile) or die "cannot open $PathFile:$!";
flock(IN, 1);
while($LineTmp = <IN>){
$filesubstance = $filesubstance . $LineTmp;
}
close IN;
&jcode::convert(\$filesubstance, "euc");
#結果
return $filesubstance;
}
0554nobodyさん
03/06/18 02:45ID:???なんで外部JSをそのまま使わないの?
SSIなくても普通に使えるでしょ。
0555506
03/06/18 02:52ID:???JSの中身を更新できるスキル?があれば十分なのですが、
HTML知らないお客さんに納品するものなので、
外部JSの中身をコンパネで動作できればなと、。
0556nobodyさん
03/06/18 03:37ID:???置換する直前に$topicsを一度はき出して中身を確認したら?
eucに変換したモノをまたShift_jisに変換するのって意味あるのん?
0558492
03/06/18 06:06ID:???半角スペースで入れたら字下げ消えた(´Д`)
>>497
ありがとう、確かに処理の順番逆だったね(´∀`)
で、やってみたころ
相変わらずエラー表示が出ます
変数を表示させたところ
パスワードはマッチするようになりましたが
0559nobodyさん
03/06/18 09:34ID:???消えないようにするには、どうすればいいの ?
0560nobodyさん
03/06/18 10:18ID:???0561nobodyさん
03/06/18 10:19ID:???全角でもいいけど、えらっちゃうしね。
スペースを 変換してくれれば楽なのに…。
0563nobodyさん
03/06/18 10:54ID:???ファイルを読み込んでくれる関数はないですか?
0564nobodyさん
03/06/18 11:42ID:???JavaScriptスレで聞いてこい。
0566nobodyさん
03/06/18 15:57ID:yTFW11Glピクセル以上書くと折り返し表示してくれなく、80ピクセル以上に
テーブルが伸びてしまいます。
全角文字や半角カナ文字は80ピクセル以上だと自動改行してくれるのに
半角英数字だと改行してくれないのはなぜなのでしょうか?
また、改行できる方法を知ってる方がいましたら教えてください。
0569566
03/06/18 16:03ID:???掲示板などのスクリプトの中にperlで
半角英数字が連続したときに自動改行してくれる
構文など有るんでしょうか、と書きたかったのです。すみません。
0570DBMのBSD DB(Berkeley DB)はMySQLより早いのか?
03/06/18 16:04ID:kZ9NfMGd上記ダウンロードより
DBMのフィールドを自分で作る(分割する)と、
Berkeley DBは、MySQLより早いのか?
この件についてどなたか、教えて下頂けませんか?
0571nobodyさん
03/06/18 16:05ID:???板違いも甚だしくてワロタ
<td style="width: 80px;table-layout:fixed;">
とか。
ブラウザ依存だから期待せぬように。
s/([a-zA-Z0-9\-_\?\.]{5})/$1\n/g;
かな。この場合5文字で改行。
0573nobodyさん
03/06/18 16:34ID:???0574nobodyさん
03/06/18 16:46ID:???2バイト文字が混在した文字列を途中で分割するのはわりと面倒なので、
そういうのは普通ブラウザの表示に依存させてしまうことが多い。
んで、>>566の質問については板違いにつき、ここでは答えない。
0575nobodyさん
03/06/18 17:45ID:???で、得られたファイル名前、ディレクトリ名前を配列に代入したいんですが
どうすればいいでしょうか?
0577nobodyさん
03/06/18 19:49ID:fCn6DpDdIEだけが機能してくれない、Opera、Mozilaは問題ないんだけど、
誰かわかりません?、オナガイします、マジでひとつ。
#!/usr/bin/perl -w
print <<"END";
Content-type: text/html
Set-Cookie: DATA=0123456789; expires=Mon, 30-Dec-2020 23:59:59 GMT
END
foreach $var (sort(keys(%ENV))) {
$val = $ENV{$var};
$val =~ s|\n|\\n|g;
$val =~ s|"|\\"|g;
print "${var}=\"${val}\"<br>\n";
}
0578nobodyさん
03/06/18 19:57ID:???print "ぬるぽ\n";
}
こんな感じに半角でインデントして、
>>578
自分へのアンカーをつけてポップアップで読む
0581443
03/06/18 20:24ID:???みなさん色々ありがとうございます。
2日間調べてやっと原因が解りました。
>>463さんが言ったようにサーバー側の設定の問題でした。
$ip = $ENV{'X_FORWARDED_FOR};に変えたら
ちゃんと違ったIPが取得できるようにました。
$useragent = $ENV{'HTTP_USER_AGENT'};でユーザーエージェントも
取得したんですが、私はWindows xpなのにWindows NTになっていました。
こういうもんなんでしょうか?
0583nobodyさん
03/06/18 20:29ID:???Operaだと2000とXPがちゃんと認識されます。
IEだと、2000はNT5.0、XPがNT5.1と識別されます。
って言う話だ。
確かめたわけじゃないが。
ここで配布してあるチャットの個人会話を覗き見する方法わかる?
ファイル名はわかってるんだけど、拡張子がCGIにされてるから見えない…
0585_
03/06/18 20:45ID:???0587nobodyさん
03/06/18 20:56ID:???FTPでログを見る。
管理人にしかできないがな。
0589nobodyさん
03/06/18 21:50ID:???(2chみたいに)
なお、テキストの中には、2つ以上URLがある可能性もあります。
0593nobodyさん
03/06/18 22:22ID:8AjElXD0http://mypage.odn.ne.jp/home/dongrico
0594543
03/06/18 22:45ID:???system("/usr/bin/test -f /path/file"); #ファイル存在確認コマンド
これでfileという名前のファイルの有無を確認できますよね?
0596nobodyさん
03/06/18 23:02ID:???↑のような配列があった時これを "12 5 3 4 1" の部分を見て
下のような数の大きい順にソートするようなスマートな方法は無いでしょうか?
@array = qw[1\tお 3\tう 4\tえ 5\tい 12\tお];
0597543
03/06/18 23:06ID:???そうしたいんですけど家に環境ないんです。
・゚゚・o(iДi)o・゚゚・。
検索はしてみますね〜♪
ありがと〜
他にも助言お願いします。
0599nobodyさん
03/06/18 23:42ID:???余計な改行コードが加えられてしまいます。
お願いします。
$match = 0;
open(votelog,"+<vote.log");
@votelog = <votelog>;
$last = @votelog + 0;
for($num=0;($num<=$last)and($match==0);$num++){
($name) = split(/\,/,$votelog[$num]);
if($namekey eq $name){
$votelog[$num] =~ s/\n//;
$votelog[$num] =~ s/\r//;
($name,$comment,$votenum) = split(/\,/,$votelog[$num]);
$votenum = $votenum+1;
$votelog[$num] = "$name,$comment,$votenum\n";
$match = 1;
}
}
seek(votelog,0,0);
print votelog @votelog;
close votelog;
0600596
03/06/18 23:53ID:???文字が含まれてても普通に
@array = sort {$a <=> $b} @array;
でやってくれるんですね。。
では↓な場合にスマートに数字の大きい順で
ソートする方法あればお願いします。
@aray = qw[a\t12\tあ b\t5\tい c\t3\tう d\t4\tえ e\t1\tお];
0602543
03/06/19 00:25ID:n1s+2eOn以下のどちらの場合もだめでした。
system("/usr/bin/test -f /path/file"); #ファイル存在確認コマンド
system(`/usr/bin/test -f /path/file`); #ファイル存在確認コマンド
どうしてでしょう?
ご助言くださいませ。
syntax error near unexpected token `system(上記)'
と表示されてしまいます。
0603nobodyさん
03/06/19 00:29ID:???確かに test コマンドもシェルではファイルテストに使うが、
Perlerなら
-e "/path/to/file" and print "存在したポ\n";
0608492
03/06/19 00:44ID:???ループ中にエラー処理はさむと
比較しなくていいものまで反応してエラー出してました。
パスワード間違いの場合はリロードさせる(何もしない)事で回避しましたが
エラー表示やっぱ出したいな……。
0610nobodyさん
03/06/19 00:53ID:???用意しろ。最低限の義務だ。
>>599
「chomp」や「binmode」で調べろ。あとこれ読め。
ttp://www.din.or.jp/~ohzaki/perl.htm#CRLF_Unify
>>600
print join '/',
map $_->[0],
sort { $b->[1] <=> $a->[1] }
map [ $_, /\\t(\d+)\\t/ ],
@aray;
0611543
03/06/19 00:55ID:???いま603さんにいわれたとおりに
#! /usr/bin/perl
-e "/path/path/ファイル名" and print "ok\n";
でokが表示されました。
ありがとうございました。
Perlerっていうのもカッコイイ(゚∀゚)~
やっと次に進めます。
まだとっかかりにすぎないけど
がんばります!
0613543
03/06/19 01:20ID:n1s+2eOnあれ?
「-e」というのは「test -e」とはまったく別なんでしょうか?
ファイルが1つの場合は611で成功したのですが、複数のファイルの存在確認をする必要があるため、
if文で一つでもファイルが確認できなかった場合にはエラーを表示するようにしたいのですが。
ファイル存在確認フロ−(下手でごめんなさい)
ファイルA −−
y| n |
↓ |
ファイルB −−
y| n |
↓ |
ファイルC −−
y| n |
↓ ↓
正常終了 異常終了
exit(0) exit(100)
0614603
03/06/19 01:26ID:???-e $_ or die;
}
0615596
03/06/19 01:32ID:???どうもありがとうございます。
が、思った結果とはちょっと違うです。。
しかしなんとなくスマートに書く方法がわかったような気がします。
0616543
03/06/19 01:44ID:???ありがとうございます。
さらに@filesで指定したファイルがすべてあった場合には
exit(0)で抜けて、足りなかった場合にはexit(100)で抜けるような
if文を加えることはできませんか?
0617603
03/06/19 01:47ID:???for (@files){
-e $_ or exit(100);
}
exit(0);
0618543
03/06/19 02:04ID:???あ、できてます!
どうもありがとうございます\(^▽^)/
ただ上記だと「-e $_ or exit(100);」の方が
@filesが存在した場合に返す終了ステータスですよね?
exit(100)はファイルがない場合の異常終了ステータスにしたいので
ご教授頂いたexit(100)とexit(0)を入れ替えればよろしいですかね?
@filesの部分は本でわかっていたのですが
「-e」や「$_」というのはまったくどういうものか
わからなかったので…
0619603
03/06/19 02:07ID:???まア、実際に試せばわかるけど
0620nobodyさん
03/06/19 02:17ID:???自分で調べようとかいう気はないようだな。
>>595でも「ついでに「ファイルテスト演算子」でググれ。」とレス
もらってるのに。
0621543
03/06/19 02:20ID:???あ、本当だぁ。
ごめんなさい。完璧でした。
本当にありがとうございましす。
これでファイルの存在確認の方は
終了コードをシェルに渡すことができると思うので
完璧みたいです。
今度はファイル削除…
同じ要領でいいのだろうけど
そのまえに「-e」や「$_」を理解しなくては…
0622543
03/06/19 02:24ID:???いえ、調べました。
すぐにひっかかったページをみると
一見してtestコマンドのようにみえたので
「-e」はtest -eかと思って、できるだけ略さずに書こうと思ったら
×でした。
それでtestコマンドではないのだろうと考えてお願いした次第です。
0623nobodyさん
03/06/19 03:14ID:???0625nobodyさん
03/06/19 03:31ID:???0626nobodyさん
03/06/19 03:40ID:???0627nobodyさん
03/06/19 04:10ID:???/^ +$/ でも /^\x20+$/ でも /^\040+$/ でも /\Qスペース\E/ でも
ご自由に。
>>626
\s == [ \t\n\r\f]
0628nobodyさん
03/06/19 04:33ID:???5 と言っても色々あるし、Linux でも Win でも何でもいいけど、
少なくとも手元のテスト環境で問題なく動くようになってから
本番機にもっていく事が大事。
0629nobodyさん
03/06/19 11:39ID:???方法をお教え下さいませ。
はてなアンテナ(ttp://a.hatena.ne.jp/)でやっているような、
htmlファイルの中の更新(追加or変更)された部分だけを抜き出して
来る方法です。定番的な一番効率の良いやり方はないでしょうか?
0631nobodyさん
03/06/19 15:15ID:???ブックマークと、URL直打ちを見分ける方法ってありませんか?
JSの力を借りなければなりませんか?
0634543
03/06/19 20:19ID:???昨夜はありがとうございました。
家のLinuxで試して成功したので
本番機でテストしたのですが見事に失敗…
以下のように表示されていました。
syntax error near unexpected token `$_ or'
慌てて本番機のPerlのVersionをみてみたらVersion 4でした。
家のテスト環境はVersion 5だったのですが、これが原因でしょうか?
手持ちの本はVersion 5を前提に書かれていますが
エラーを返してきた部分については
特別Versionについては触れられていませんでした。
0636nobodyさん
03/06/19 20:48ID:???ある意味驚きだな。
0638nobodyさん
03/06/19 21:04ID:???俺のプロバスペースもPerl4だぞ。
>637
$_は使える。
0640nobodyさん
03/06/19 21:07ID:???うん、myは使えない。
かなり不便。
$a ||= 1;もできない。
省略形はかなりピンチかもしれないから、「-e $_ or exit(100);」は
「unless(-e $_){exit(100);}」とかにした方がいいかもしれない。
0641nobodyさん
03/06/19 21:13ID:???and/or/not 演算子は Perl4 には無かったような記憶が。
if/unless 修飾子は使えた筈。
あと組み込み関数も split とか括弧を省略出来ないものが多い。
一番いいのは赤ラクダ本を手に入れる事だが、
とりあえずコレ読んどけ。>543
http://www.namazu.org/~tsuchiya/perl/info/perl-ja_124.html
0642nobodyさん
03/06/19 21:34ID:???5に慣れてから4コンパチで書くのは辛いな
0643nobodyさん
03/06/19 22:58ID:7O2enBqmPerlで
SDBM_Fileを使ってるんですけど、
MDBM_Fileにそのまま変えられますか?
SDBMになくてMDBMにある制限みたいなものってあるでしょうか?
0644nobodyさん
03/06/19 23:06ID:QrRxrm0Kmy $abc = 255;
&bbb(\$aaa);
}
なんか変になるんですけど、これって有効にならないんですか?
0645nobodyさん
03/06/19 23:06ID:QrRxrm0Ksub aaa{
my $abc = 255;
&bbb(\$abc);
}
これ。
0646nobodyさん
03/06/19 23:13ID:7O2enBqm何が変になるのかわからん限りはなんとも・・・。
きたれ!
http://ex.2ch.net/test/read.cgi/entrance/1055942024/
ファイアーエンブレム風のネトゲツクローヨ
0649nobodyさん
03/06/19 23:25ID:7O2enBqmなにか心当たりが?
0653nobodyさん
03/06/19 23:34ID:???0654恐らく
03/06/19 23:37ID:???{
print "なんか変\n";
}
0655645
03/06/19 23:43ID:???どっか他の所で重大な間違いをしてたっぽいので、しっかりデバック取ってきます。
0656543
03/06/20 00:38ID:???できました。
下の記述でfileが無い場合は100で
fileがある場合は0で終了するようになりました。
------------------------------
#! /usr/bin/perl
@files = ("/home/path/file",);
for (@files){
unless(-e $_){exit(100);
}}
exit(0);
------------------------------
今度はファイル削除用のを作ります。
これまで相談して気になるのは、
なぜ皆さんがsystemコマンドを使わなかったのか
ということです。
お話していなかったのですが、実際のオペレーションでは
ファイル存在確認の後、ファイル削除をおこなうので
systemコマンドであればcommandを書き換えるだけで済むのかなぁと。
なにか理由があるのでしょうか?
0657nobodyさん
03/06/20 00:45ID:???簡単に言えば、systemを使わないのは特に必要ないから
それとちょっと気になるんだけど
>>621に書いてあった
>これでファイルの存在確認の方は
>終了コードをシェルに渡すことができると思うので
シェルという語が出てきてるけど、どんなことやってるの?
シェルからperlプログラムを実行して戻り値を受け取るわけ?
0658nobodyさん
03/06/20 01:20ID:???1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
これから質問する奴は
1:○○
2:△△
3:××
と書け。それ以外は皆放置しろ。
どうせ>>1も読まない奴はスレ違い・板違いがほとんどだしな。
0659nobodyさん
03/06/20 01:24ID:2h2vJ76G1:○○
2:△△
3:××
0660nobodyさん
03/06/20 01:45ID:???1:○○
2:△△
3:××
0661543
03/06/20 02:40ID:???>シェルという語が出てきてるけど、どんなことやってるの?
>シェルからperlプログラムを実行して戻り値を受け取るわけ?
まさしくそのとおりです。
657さんのいうとおりの動作をさせたいのです。
それを前提にしても
汎用性という意味(?)でsystemコマンドよりも
656記載のもののほうがよろしいでしょうか?
0662nobodyさん
03/06/20 03:31ID:???1:○○ だめよ、こんなところで
2:△△
3:××
0663nobodyさん
03/06/20 04:00ID:PsiyBD1J$bst .= 'W' unless($bst =~ /W/);
の意味が分から無くて困っています。
CGIゲームで、このプログラムにより、
攻撃力が1だけ上がるのですが、
10位上げたいので。
ポイントは戦闘中だけ上がると言う事なので、
難しいんだと思いますが。
0664nobodyさん
03/06/20 04:04ID:???$bstがWにマッチしなければ、$bstにWを追加
$bst .= 'W' unless($bst =~ /W/);
0665nobodyさん
03/06/20 05:04ID:???2:それでグーグルとか使って検索をやってみたが・・・
3:それだとなぜかグロ画像ばかりが出て上手くイかなかった。
0667nobodyさん
03/06/20 07:53ID:???> 1:自分はエロエロ画像が見たい。
> 2:それでグーグルとか使って検索をやってみたが・・・
> 3:それだとなぜかグロ画像ばかりが出て上手くイかなかった。
print (1:!~ /○○/ || 2:!~ /△△/ || 3:!~ /××/) ? 'スルー\n' : '回答してみる\n';
# 結果表示
スルー
↓次の質問ドゾー
0668nobodyさん
03/06/20 08:28ID:???if (0) {
> 1:自分はエロエロ画像が見たい。
> 2:それでグーグルとか使って検索をやってみたが・・・
> 3:それだとなぜかグロ画像ばかりが出て上手くイかなかった。
}
0669nobodyさん
03/06/20 14:41ID:CDccIPBDどこが悪いのかわかりませんでしょうか?
for ($i=0;$i<=$num;$i++){
$ORG{$i} = {
"orgname" => $values[$orgmaster_name2seq{orgname}],
"number_per_class_max" => $values[$orgmaster_name2seq{number_per_class_max}],
"langlist" => $HTMLlanglist,
};
}
my $template = HTML::Template->new(filename => './tmpl/search_result.html');
$template->param(
ORGLIST => \@ORG
);
print $template->output;
---------------------------------------------
以下、テンプレファイル。
<!-- TMPL_LOOP NAME="ORGLIST" -->
<!-- TMPL_VAR NAME="ORGNAME" --></a></td>
<!-- TMPL_VAR NAME="LANGLIST" --></td>
<!-- TMPL_VAR NAME="NUMBER_PER_CLASS_MAX" --></td>
<!-- /TMPL_LOOP -->
0670nobodyさん
03/06/20 15:00ID:59oEJQW+cookies フォルダの中に格納されません。
クッキーの有効期限を指定していないからでしょうか?
とするとどこにクッキーの情報は格納されているのでしょうか?
print "Set-Cookie: name=$id; \n";
0671nobodyさん
03/06/20 16:34ID:Me43kE/Lで、時間を1分単位にしようとしてるのですが、まったく分かりません。
いくらCGI内を探しても見つからず・・・・・
教えて頂けませんでしょうか?
0673nobodyさん
03/06/20 19:12ID:???http://pc2.2ch.net/test/read.cgi/php/1047806915/
のほうがいいんじゃん?
0676nobodyさん
03/06/20 19:35ID:???[]と{}の違いわかる?
0677nobodyさん
03/06/20 20:58ID:kJiV021K人います?。コンパイルはできるんだけど実行の時にあれやら
コレやらが足りないっていわれるんだよね。
つーか、いまいちよくわかんないなぁperl2exeって。
0678nobodyさん
03/06/20 21:01ID:1Z33Vqhm貴方のお店&サイトを効果的に宣伝できます!
お店の足取りが悪い・・・。私のサイトにはあまり人が来ない・・・。などお悩みの方は、
ぜひおすすめです。手軽&簡単しかも日本中に宣伝できますので、
大幅なアクセスアップが期待できます。
[料金について]
1日110円で宣伝&クーポン券の発行が出来ます。
年間契約で申込された場合、40,000円になります。
6ヶ月契約で申込された場合、25,200円になります。
3ヶ月契約で申込された場合、12,600円になります。
http://www.c-gmf.com/h17103.htm
ぜひ一度お試しになってみてはいかがでしょうか?
0679nobodyさん
03/06/20 22:06ID:Vg4M86DU#おはよう
#こんにちわ
お元気ですか?
#こんばんわ
おやすみなさい
と中に書かれているテキストの中の文字を、改行を<br>に変換して、
#で区切って配列に入れたいのですが・・・。
どうすればできるのでしょうか・・・( ・ω・)
0680nobodyさん
03/06/20 22:14ID:???内容もさることながら、質問の仕方もカスのような気がしますが。
1. \nを<br>に変換する。
2. splitにて、#区切りの配列を生成する。
3. shiftする。
のような手順でしょうかね。
0681nobodyさん
03/06/20 22:18ID:jiB8qm8t$text = <<'_END_';
#おはよう
#こんにちわ
お元気ですか?
#こんばんわ
おやすみなさい
_END_
$text =~ s/\n/<BR>/g;
@text = split(/#/, $text);
0682679
03/06/20 22:31ID:Vg4M86DUスイマセン、精進しまつ(;;)
>>681
ナルホド!! ・・・と思ってやってみたのですができない・・・。
$message = "./aisatu.dat";
open(FILE,"$message");
$text = <FILE>;
$text =~ s/\n/<br>/g;
@text = split(/#/,$text);
print "@text\n";
一行目の文字列しか出力されないです・・・( TÅT)
0683nobodyさん
03/06/20 22:33ID:jiB8qm8t$text = <FILE>;
これだと、1行しか読めません。
$text .= $_ while(<FILE>);
でいいと思います。
0684nobodyさん
03/06/20 22:52ID:Vg4M86DU.+゜(・∀・)+゜. 全部読んでくれました。
改行が<br>に変換されないのが気になるところですが・・・
あとは自分で調べてみます。
(TдT)ノシ アリガトウです
0685nobodyさん
03/06/20 22:53ID:???あー。
自分で調べるか、がんばれ。
改行コードがヒントだ。
0686直リン
03/06/20 23:10ID:Q1+dqLU80687nobodyさん
03/06/21 10:55ID:wNdBDwZ11:サムネイル画像の生成を行いたいです。
2:GDを使う方法を試してみたのですが、
3:標準で使える設定にはなっていないようで、エラーになりました。
何か手段はないでしょうか?
・ライブラリを同じとこに置いて使う??
(あまりよくわからないのですが調べててこんな方法があるのかな?
と思いました。)
・自分で画像縮小のアルゴリズムを組む。(ちと自信は無いですが)
ちなみにjpeg/png/(gif) などで行いたいです。手助けお願いします。
0689無料動画直リン
03/06/21 12:10ID:AstYoKnr0690687
03/06/21 12:57ID:wNdBDwZ1(GD,PerlMagickはインストールっぽいので。)
jpegだけでも縮小処理をしたいです。(他 gif/png)
0692687
03/06/21 15:21ID:fPD3+uod0693nobodyさん
03/06/21 15:22ID:zsFEWp+Jあきらめれ。
0695687
03/06/21 16:32ID:fPD3+uodたとえば require "GD"; ってのではやっぱし動かないんですよね?
さっきGDの中身を見てたんですが、一部わからない所もありました。
誰か同じことを考えて、インストール無しで使えるGDを公開してる人って
居ないんですかねぇ・・・
0696_
03/06/21 16:42ID:???0697nobodyさん
03/06/21 17:26ID:VyXOk/2cchomp($temp);
print "$tempが入力されました\n";
}
これだとABCDと入力したら ABCDが入力されました、と出て、
while ($temp = <STDIN>) {
$temp2 = chomp($temp);
print "$temp2が入力されました\n";
}
これだとなぜか、1が入力されました、としか出ないのはなぜですか?(´・ω・`)
教えてエロイヒト
いろいろな本を読んで、またはGoogleで検索して、それでも分からない場合に人に聞きましょう。
chomp()の仕様を答えるのは簡単だけど、そうやって何もかも人に聞くつもりならプログラミングなんて手を出さないほうがいい。
>>698
Perlのchop()も同じ仕様だよ。
というか、なぜそこでPHPが、しかも(関係あるとはいえ)別の関数が出てくるのやら。
0700687
03/06/21 18:11ID:wNdBDwZ1ttp://homepage1.nifty.com/smastani/hp/smastani/pc/thumbn.html
コチラに掲載されているようなことをやろうと思っています。
copyResized以外はGD.pmを見ることで理解が出来たのですが。。。
0701603
03/06/21 18:12ID:???0705698
03/06/21 18:36ID:???元質問者がPHPスレに誤爆してたのでPHP+Perl使いと推測。
そして違いを挙げてみた。
それだけなので怒っちゃいやん。
0706nobodyさん
03/06/21 18:43ID:???WindowsにMySQLをインストールして使う場合、
DBIとDBD::MySQLか
DBIとDBD::ODBC+MySQL ODBC Driverを使いますよね。
問題はDBD::ODBCを使った場合。
$dsn = 'DBI:ODBC:test';
こんな風にデータソースを指定しますが、testっていうデータベース名を
先にODBCドライバにつくる必要がありますよね?
でも、ODBCドライバに作成するときには、それと同時に
ユーザ名やパスワードも入れるじゃないですか。
つまり、testっていうODBCデータソースには、データベース名と
ユーザ名とパスワードがすべて含まれてるってことですよね。
なのに、そのあとそのdsnを使ってDBにつなぐときは、
$dbh = DBI->connect($dsn, 'test', 'test');
という風に、またユーザ名とパスワードを指定する必要があるわけです。
ここが納得できないんですよ。だったらODBCドライバのところでは
ユーザ名やパスワードを入れたくないんですが。
今実験してみたところ、やっぱりODBCドライバのユーザ名とパスワードの欄には
何も入れなくても(または適当にいれても)、正常にDBに接続できています。
なんで?
0707_
03/06/21 18:43ID:???0708nobodyさん
03/06/21 18:44ID:???chomp();なんかで躓くのが、PHPやってるとは思えんが( ´_ゝ`)
でもまぁ、質問スレに無能なコテは要らんわな。
質問厨がイヤならスレ見なけりゃいいんだから、アフォな煽りなんかすんなっての。
で、>>702
そのミスの仕方から察するにとほほ見ただろ?(゚∀゚)
あそこだけを信じるなよ。
0710nobodyさん
03/06/21 19:08ID:???print LINE $line "\n";
とかいて、
そのCSVファイルをWIn上で開くと、
Winの改行は\r\nのはずなのに、問題なくみれてしまうのはなんでなんでしょうか?
0711直リン
03/06/21 19:10ID:AstYoKnr0713nobodyさん
03/06/21 20:17ID:???flock (LOCKF, LOCK_EX);
みたいにするのって、
flock(DAT, 1);
flock(DAT, 2);
flock(DAT, 4);
flock(DAT, 8)
とただやるのに、比べて、どんな利点があるんでしょうか?;
0715nobodyさん
03/06/21 21:03ID:???ぜーんぶつながっちゃって困った和さ。
0716nobodyさん
03/06/21 21:04ID:???とかKcatchとか、
エラーをブラウザに出力してくれるものって、
初心者にはどれがおすすめですか?
あと、これって使っても、エラーをとらえきれなくて、
結局生エラーログにしかのってない、っってことも、ありますか?
(どーもいろいろためしてみたら、そのように思えるのですが)
0717nobodyさん
03/06/21 21:28ID:aWFirrKrhttp://mypage.odn.ne.jp/home/dongrico
0719nobodyさん
03/06/21 22:11ID:???サーバー自体のエラーは捕捉出来ない。
(CGI(perl)が返すヘッダーのエラーとか)
perl自体のエラーは詳しく知らんがたぶん100%捕捉できるだろう。
0722nobodyさん
03/06/22 00:04ID:???for ($i=m;$i<=n;$i++){
push (@tmp_ORG,$ORG[$i-1]);
}
@ORG = @tmp_ORG;
てなもんでしょうか?
いや、便利な関数とかあるのかなと思ったもので
0724nobodyさん
03/06/22 00:54ID:RPCqHkE2はヘボイという事でしょうか?
0725nobodyさん
03/06/22 01:11ID:???ヴァカ抜かすな。
KCatchが補足できないエラーはきちんとKCatchのページに書いてある。読め。
あ、もう一つ補足できないエラーがあるな。
お前のねじれた脳味噌から生じた論理エラーだ。
0726nobodyさん
03/06/22 01:37ID:???漏れのHPのKENTWEBのチャットを設置してうまく動作したのを確認して
次はスタイルシート埋め込み。
DLしたら分かるけどwtalk2.cgiの200行目付近にHTMLに出力する記述があるからそこに次の一行を追加。
print OUT "<Link Rel=\"stylesheet\" Type=\"text/css\" Href=\"../../lib/memory.css\"><Blockquote><Blockquote><Blockquote><Blockquote>\n"
もちろん適当に入れたのでなくてそれらしくHEADタグの中に普通に埋め込み。こっちでは203行目ってことになるな。
で、文法チェッカーでみると、いじった筈のない205行目の
print OUT "参加者($num):$member<hr>\n<!--START-->\n";
でエラー。OUTを宣言する必要がありますか?とか言いおる。
かなり分かりにくいと思うので整理。
1.自分はKENTWEBで配布されている「WebTalk」というチャットスクリプトにスタイルシートを埋め込みたい。
2.<Link Rel="〜のタグを埋め込む為、wtalk2.cgiの203行目に↑のスクリプトを追加。
3.なぜかエラー。500InternalServerErrorらしい。んで早速文法チェッカー走らせてチェックさせたらいじった筈のない直後の205行目で文法エラー。OUTを宣言する必要がないとかなんとか。
だれか助けて><。
0728nobodyさん
03/06/22 01:53ID:???ODBCのドライバの設定は必須ではない。必要なパラメータは全部connectストリングに埋め込む事もできる。
>>726
情けなくなるくらいヘボだな。追加した文の文末に「;」が無い。
この位の事でとうとうと泣き言並べ立てて恥ずかしくないか?
0729728
03/06/22 01:55ID:???0730nobodyさん
03/06/22 02:08ID:7kmjTzsL(゚Д゚)ポカーン
ネタ・・・だよな?いくらなんでもここまで初心者はないよ・・・な?な?
0731nobodyさん
03/06/22 02:21ID:???それ以前に、エラーすら書かない奴がとにかく多い。
なんとか聞き出してみれば、500エラーとか抜かすし。
エラー書けっつーのはちゃんと>>1にも書いてあるんだがなあ。
0732nobodyさん
03/06/22 04:03ID:UMFBhruU2:gzipを使ってみました。
3:どこかのサイトにもあったのですが、既に圧縮されている
画像などに関しては圧縮されないみたいでした。
100kbに対して100b程度減りはしました。
画像の転送量を減らす手段は他にありませんでしょうか?
0734nobodyさん
03/06/22 06:17ID:???CGIで作成したファイルですが、パーミッションを変更(666や777)してもFTPから削除できません…。
スーパーユーザーではないので、所有者の変更をする事も出来ません。
rootで無い限り、どうする事も出来ないんでしょうか?
#CGIから削除するしかない?。それともサーバーによるものでしょうか?
#ちなみに、ディレクトリの場合は削除する事ができました。
0735nobodyさん
03/06/22 08:36ID:???chown ore:ore hoge.cgi
して、自分のファイルにしちゃう。
0736nobodyさん
03/06/22 10:55ID:???みたいに、ハッシュ配列を関数に渡したとき、
その引数を関数内で得るにはどうすればいいのでしょうか?
普段ならmy ($foo, $bar, hoge) = @_; とするところの話しです。
0737nobodyさん
03/06/22 11:01ID:???>>735 他人のファイルの所有者変更できるのは特権が要るだろうが。ボケッ
0738nobodyさん
03/06/22 11:30ID:???sub query_condition(%)
{
my $h = shift;
$h->{key};
}
query_condition(%house);
0740nobodyさん
03/06/22 11:54ID:???sub query_condition{
my ($lineid, $staname) = @_;
とやったら、
Can't use global @_ in "my" at search.cgi line 370.
と言われたのですが、
このエラーメッセージの意図がわかりません。
なんでこんなこといわれなきゃいけないんでしょうか?
0745nobodyさん
03/06/22 12:30ID:???0747nobodyさん
03/06/22 13:33ID:???有難うございます。
ディレクトリのパーミッションが775だったのが原因みたいです。
そのディレクトリも、CGIによって作成したものなんですが、
一生懸命0777を与えてるんですが、どうしても777になってくれません(;ω;)#775になってしまう。
ちなみに、その上のディレクトリはFTPから作成したもので、書き込みもOKです。
サーバーの設定で、ディレクトリ作成時に一般の書き込み許可させないって事とかあるのでしょうか…
兎に角、もうちょい頑張ってみます。
0748nobodyさん
03/06/22 13:39ID:???出来るものもある。System-IIIとか。
>>747
CGIでパーミッション変えればいい。
つーかユーザ権限でCGI実行できないヘボイところはとっとと見限ったほうが良い。
0750nobodyさん
03/06/22 15:47ID:wDjVUYGM$STA[$i]->{staname}
($iには0から10くらい入ってる)
には文字列があてはめられてるのに、
for ($j=0;$j<=$#STA;$j++){
push (@TMPSTALIST,$STA[$j]);
}
foreach (@TMPSTALIST){
$HTMLStaLine .= $TMPSTALIST[$_]->{staid}."/" .$TMPSTALIST[$_]->{staname}|;
}
で、何も表示してくれないんですが、なぜなんでしょうか?
0751750
03/06/22 15:47ID:wDjVUYGM$HTMLStaLineをprintしてます。
0752732
03/06/22 16:18ID:qinZbGMm2:gzipを使ってみました。
3:どこかのサイトにもあったのですが、既に圧縮されている
画像などに関しては圧縮されないみたいでした。
100kbに対して100b程度減りはしました。
画像の転送量を減らす手段は他にありませんでしょうか?
0753nobodyさん
03/06/22 16:23ID:???Perlのコーディングによる問題ではない。
よってスレ違い。
0756アラー氏 ◆.GAf6ZDA2c
03/06/22 17:16ID:???http://homepage3.nifty.com/arashi/index.html
0758nobodyさん
03/06/22 19:47ID:???メモリもクリアされるんでしょうか?
0759nobodyさん
03/06/22 20:05ID:???どこからも参照されなくなった時点でクリアされる。
逆に言えば、何かから参照されている限り、スコープを外れてもメモリの内容は残る。
たとえば、以下のようにサブルーチン内でmyした変数のリファレンスを返すということもできる。
$var = hoge();
print $$var; # うんこ
sub hoge {
my $abc = 'うんこ';
return \$abc;
}
0760nobodyさん
03/06/22 20:29ID:S8oOZHOQ複数の検索エンジンに、キーワードを投げて
その結果をまとめてから出力というものを書いています。
それで、UNIX上のApacheでcgiを走らせているので
`wget $URL`;
$html = `w3m -dump_source $URL`;
そして、ファイルに$htmlを保存
などを試してみましたが、
wgetの方はURLが長すぎてダウンロード自体に失敗して、
w3mの方は、端末で同じコマンドを打つ分には成功しますが、
実行しても、何もファイルに書き込まれていなくて上手く取得ができません。
どうか、ご教授お願いします。
0763750
03/06/22 20:50ID:Rv0SCDPi0764nobodyさん
03/06/22 20:51ID:???申し訳御座いませんでした。
0765nobodyさん
03/06/22 21:09ID:???foreach (@TMPSTALIST){
$HTMLStaLine .= $_->{lineid} . "/" . $_->{staname};
}
どういう結果が欲しいのかわからんのでこれだけ。
0766750
03/06/22 21:35ID:a19vkXUc#SELECT始まり!
$HTMLStaLine .= qq|<select name="staid" size="10" multiple>\n|;
for ($i=0;$i<=$#GlobalLineidList;$i++){
#沿線名表示!
$HTMLStaLine .= qq|<option value="">----- $LINE[$GlobalLineidList[$i]]->{linename} -----</option>|;
undef @TMPSTALIST;
for ($j=0;$j<=$#STA;$j++){
if ($STA[$j]->{lineid} == $GlobalLineidList[$i]){
push (@TMPSTALIST,$STA[$j]);
}
}
#seqでソート
@TMPSTALIST = sort { (${TMPSTALIST[$a]->{seq}} <=> ${TMPSTALIST[$b]->{seq}}) } 0 .. $#TMPSTALIST;
#沿線に属する駅名一覧を表示!
foreach (@TMPSTALIST){
$HTMLStaLine .= qq|<option value="|.$TMPSTALIST[$_]->{staid}.qq|">|.$TMPSTALIST[$_]->{staname}.qq|</option>\n|;
}
}
#SELECT終わり!
$HTMLStaLine .=qq|</select>\n|;
0768nobodyさん
03/06/22 21:59ID:???丁寧な説明有難うございます。
調子にのてもう一つお聞きしたいのですが、
リファレンスを受け取った側で、undefすると
呼び出し元もクリアされるのでしょうか?^^;
$var = hoge();
print $$var; # うんこ
undef($var); <- hogeの$abcは要らないのでクリアしたい
その後の処理…
sub hoge {
my $abc = 'うんこ';
return \$abc;
}
sub { return \%dekai_data; }
大きな値とか返した場合、クリアする必要はあるでしょうか
0769750
03/06/22 23:46ID:MaT7PvCU用は、
$STA[$i]->{lineid}
$STA[$i]->{staname}
($iには0から10くらい入ってる)なのに、
push (@TMPSTALIST,$STA[$j]);
すると、
$STA[$i]->{lineid}
は値が入ってるのに、
$TMPSTALIST[$i]->{lineid}
には値が入ってないのです。
pushした直後でも。。。
0770-
03/06/22 23:48ID:pFJThKfu「クーポン屋の仕事は簡単!」
「HPにバナーを貼ればOK!」
「年商3000万円も夢じゃない!」
「あなたの努力次第です。」
http://www.c-gmf.com/index1.htm
0771750
03/06/22 23:53ID:???@TMP = sort { (${TMPSTALIST[$a]->{seq}} <=> ${TMPSTALIST[$b]->{seq}}) } 0 .. $#TMPSTALIST;
とやるところを、
@TMPSTALIST; = sort { (${TMPSTALIST[$a]->{seq}} <=> ${TMPSTALIST[$b]->{seq}}) } 0 .. $#TMPSTALIST;
とやっていたのが原因でした。
$TMPSTALIST[$i]->{lineid}には値がちゃんと入っていたようです。
0772nobodyさん
03/06/23 01:40ID:8VAV54DKどなたかお助けください。
1:Perlからサムネイル(縮小)画像を作りたいです。
2:GDやPerlMagickなどがあることを知り、使おうと考えました。
3:私の使っているサーバにはインストールされていません。
・インストール無しで使える、画像縮小のモジュール
・画像を縮小するための具体的なアルゴリズム
・インストールが必要なGD,PerlMagickモジュールの改造方法
のような情報を求めています。
(jpeg/png/gifなどについて行いたいです。(1つしか出来なくても構いません))
色々調べてはいるのですが、GD,PerlMagickのものばかりで
良い情報が見つけることが出来ませんでした。何卒、よろしくお願いします。
0773nobodyさん
03/06/23 02:07ID:???いや、もう無理だって答えでてるでしょ?
自分で作る気がないなら何度質問しても無駄。
むしろ、君がインストールしないで使えるモノを作って公開する方が良い。
0774_
03/06/23 02:09ID:???0775nobodyさん
03/06/23 02:13ID:???要するに自分で画像処理をすれば良い。
ttp://www.st.rim.or.jp/~syamaura/gifanime/gifabout/gifabout.html
こういう感じのページ探して、自前でやるとよろし。
#ファイルフォーマットをまとめたページ(英語)がどっかにあったのだけど、
#URL失念してるので貼れない。スマソ。
多分この先はスレ違いになるのでプログラム板等に移動した方が良い。
#が、今画像処理スレはない
0776nobodyさん
03/06/23 02:41ID:???自分はロリポップでIMAGE::MAGICKを使い、デジカメ写真を画面大、
200ピクセルくらい、80ピクセルくらいの3つに一気に縮小している。
その時、ローカルサーバーにIもMAGE::MAGICKをインストールし、
ロリポップが檄重のときはローカルで縮小し、サーバーに上げるルーチンも作ったけど、
その方法も一案では。
ローカルサーバーへのインストールは
http://yassu.no-ip.com/linux/httpd.htm
などを参照。
0777nobodyさん
03/06/23 11:54ID:???>>776
ああ、そうか。ローカルに入れれば何の問題もないよな。
よかったな、>>772, >>687
これでモジュールを入れられないとかいう泣き言を言わなくてよくなったぞ。
0778nobodyさん
03/06/23 11:55ID:???perl -e '$cnt = 100; while($cnt > 0) {sleep 1; print "."; $cnt--;}'
どこがいけないのでしょうか。
0779nobodyさん
03/06/23 12:20ID:QgEnyxPf手始めにPerlで書かれた簡易チャットのソースをコピーして使っています。
微妙にスレの趣旨と違うかもしれませんが、どうか教えて下さい。
チャットの発言内容を書き込んでサブミットボタンを押した時、その内容をcgiファイルに送る。
その後、発言内容のテキストボックスを空にしたいのです。
ジャバスクリプトでサブミットボタンにonClickを付けてファンクションを呼び出し、
そのファンクション内に発言内容のテキストボックスのvalueをnullにする仕様にしたら、
チャットのログ部分に「null」とそのまま出てしまいました。
どなたか解決策をお願いします。
0780nobodyさん
03/06/23 12:28ID:???「動きません」じゃ分からん。
どう動かないのか(エラーが出る、フリーズする、こういう結果がほしいのにこうなってしまう等)を
必ず書くこと。
>>779
微妙にどころか、まるっきりスレ違いというか板違い。
0783nobodyさん
03/06/23 13:01ID:???>780ではないが、この初心者スレでは、それ以外の場合でも「動かない」と表現する奴がいる。
というか多い。
それくらいわかるだろ。
バッファリングを止めても変わらないか?
0784nobodyさん
03/06/23 13:24ID:???0785nobodyさん
03/06/23 13:28ID:???0787nobodyさん
03/06/23 16:14ID:???スクリプトの最初の方で
if ($mode eq 'regist') { ®ist; }
elsif ($mode eq 'find') { &find; }
:
とズラズラ書き並べるのはカッコ悪いのですが
何か恰好良い方法はありませんか?
0789787
03/06/23 16:29ID:???use CGI;
$q = new CGI;
$mode = $q -> param('mode');
とかしますよね。でもサブルーチン使ったとしても
どこかに
> if ($mode eq 'regist') { ®ist; }
> elsif ($mode eq 'find') { &find; }
> :
みたいのはどこかに絶対あるわけで
これがなんとかならないかな とか
SWITCH:
{
if ($mode eq = "regist" ) (®ist;last SWITCH)
if ($mode eq = "find" ) (&find;last SWITCH)
:
}
こうやれば多少はましかな‥
でもズラズラ書くのは変わらないので恰好良くないな とか。
0790nobodyさん
03/06/23 16:36ID:???0791nobodyさん
03/06/23 16:38ID:???eq = てなんどい。
Perlにかっこよさを求めるのはおろかな気が。
サブルーチンごとに分けずに、
if($mode eq 'assa'){
処理
処理
}
ってしたら?醜いけど。
0793nobodyさん
03/06/23 16:41ID:???こうすると一つで済むよ。
eval(&$mode);
このスクリプト(?)の指摘禁止ね :-)
0794787
03/06/23 16:42ID:???>Perlにかっこよさを求めるのはおろかな気が。
これが全てですね。 適当に実装しますです。
0795nobodyさん
03/06/23 17:20ID:vdloYxxu0799nobodyさん
03/06/23 19:03ID:???ローカルでは問題ないんですが、共有鯖だとどうかな、と。
まぁ、あげてみて試してみます。
同じことをテキスト保存でやったら、ファイルサイズは20`くらいなんですが、遅い。
どうしようか・・・。
0800nobodyさん
03/06/23 19:11ID:???通常、索引編成ファイルのキーや値は、任意でないかぎりメモリに入る事はないよ。
Perlだと、確かにDBMファイルとの接続速度は遅いけど、データは読込んでないから、大丈夫。
796とか798の言ってることは相手にすんな。
0804nobodyさん
03/06/23 23:46ID:???リファレンスと配列を使うとか、無名のサブルーチンで、ハッシュを使うとか書き方あると思うけどねィ・・・
んで、カッコいいよりも見やすい記述を心がけるべきだと思ったり・・・
0807nobodyさん
03/06/24 00:20ID:???if
elsif
elsif
elsif
で処理速度は落ちないんだけど、見た目が、、、
0808nobodyさん
03/06/24 00:26ID:???見た目を気にするならSwitchもどき使えばいいんであ?
ttp://tech-web.net/perlmania/perlsyn3.html
0810nobodyさん
03/06/24 00:41ID:???0811nobodyさん
03/06/24 03:06ID:???単純な質問かもしれませんが、どうか教えてください。キーワードが考え付かず、
ググっても見つけられませんでした。(←力不足っす。。)
0812nobodyさん
03/06/24 03:31ID:???TMTOWTDI.
# substr
($A, $B) = (substr($A, 2), substr($A, 0, 2));
# unpack
($B, $A) = unpack 'A2A*', $A;
# 置換1
$A =~ s/^(..)//;
$B = $1;
# 置換2
$A =~ s/^(..)/($B = $1, '')[1]/e;
# 回りくどい方法
@tmp = split //, $A;
$B = join '', splice @tmp, 0, 2;
$A = join '', @tmp;
0813nobodyさん
03/06/24 03:31ID:???s/^(.{2})//;
$1;
こんなんじゃダメかね、ダメだね。文字だもんね。
あんたのやろうとしてることは、関数で出来るよきっと。
普段そうゆう処理しないから名前は知らんけど。
どっかのサイトの関数一覧をどうぞ。
上の正規表現で十分ならそちらをどうぞ。
081452
03/06/24 03:37ID:???# unpack
($B, $A) = unpack 'A2A*', $A;
コレ使わせてもらいました。
0815nobodyさん
03/06/24 04:16ID:???0817nobodyさん
03/06/24 06:44ID:???アルゴリズムを見れば、どの関数を使うべきか直感的に分かるから。
たくさんコードを書いてると自然に身についてくる。
0818nobodyさん
03/06/24 07:03ID:???分かりやすい名前付けた方が後々分かりやすいって聞くけど、
その名前が思い付かないとき…。
漏れコーディングより、名前で時間くう…。
こんな漏れって変でつか…?
0819nobodyさん
03/06/24 07:31ID:???少なくとも 5.8.0 には標準で Switch.pm がある。
use Switch;
switch ($val) {
case 1 { print "number 1" }
case "a" { print "string a" }
case [1..10,42] { print "number in list" }
case (@array) { print "number in list" }
case /\w+/ { print "pattern" }
case qr/\w+/ { print "pattern" }
case (%hash) { print "entry in hash" }
case (\%hash) { print "entry in hash" }
case (\&sub) { print "arg to subroutine" }
else { print "previous case not true" }
}
0823nobodyさん
03/06/24 09:26ID:2JWEavap「500 Internal Server Error」が出てしまう時がある。
httpdのログを見る限りエラーメッセージが出てるんだけど・・・
回避方法って無いですかね?
0824nobodyさん
03/06/24 10:41ID:???クラス名・変数名に迷ったら書き込むスレ
http://pc2.2ch.net/test/read.cgi/tech/1046541730/
こんなスレもあるでよ
0825818
03/06/24 10:44ID:4jjnB7QK初耳です。
こっち行きます。
0827nobodyさん
03/06/24 11:05ID:???ネーミングで困ることは少ないな
大抵そういう、どうでもいい変数で困る事が多いし
0828nobodyさん
03/06/24 11:11ID:2JWEavap分からないなら、しゃべんなって。
な。
0829nobodyさん
03/06/24 11:19ID:???お前はあの文章がわかんのか、とか思ったら本人だったので鬱
0830nobodyさん
03/06/24 11:23ID:???0832nobodyさん
03/06/24 12:32ID:???0833nobodyさん
03/06/24 13:40ID:???0834nobodyさん
03/06/24 13:59ID:???0835nobodyさん
03/06/24 14:10ID:RsywTEy7つまり値を参照するときはフィールド番号(って言うんですか?)で指定しなければいけません。
$record[2]みたく。
できれば、フィールド名で参照したいんですけど、それって無理なんですか?
連想配列みたいになれば言うことないんですが。
$record{'DATE'}って感じに参照したいんですけど、DBIだけでは無理?
どの解説サイトみても、「配列でかえります」までしか説明されてませんでした。
0836nobodyさん
03/06/24 14:29ID:???表示する時2ちゃんねるみたいに
1&750-800みたいに途中を飛ばして表示するとして
ログがレス順1から順に並んで保存されてるとすると
2-749まで空読みして飛ばしますよね?
これって無駄に思えますが何か良い方法ありませんか?
レスを逆順に800,799・・・保存する方法も考えましたけど
これだと表示時に表示するレスの分だけメモリ消費して
こちらも無駄かなと思ってしまうんですが。
全レス表示したら全レス分配列必要だし。
前者だとレスが多いスレだとCPU負荷がかかるし
後者だとメモリを多く消費してしまうし、何か他の選択が
ないでしょうか?
0838nobodyさん
03/06/24 14:38ID:???1レス1ファイル形式(w
0839nobodyさん
03/06/24 14:48ID:???http://member.nifty.ne.jp/hippo2000/perltips/dbimemo.htm
よく読んで毛
0840nobodyさん
03/06/24 15:07ID:py7llED6http://endou.kir.jp/yuminet/link.html
0841nobodyさん
03/06/24 15:10ID:???1000回の空読み <<<<< ファイルのopen
というか、
1000回の空読み <∞< perlのオーバーヘッド
何をするにもCPU負荷はかかるけど、
定量的に考えないと。
あと、これはバリ私見&経験則だけど、
最近のマシンは一般的なwebサーバー用途で考えると、
バランス的にCPUだけの性能が突出してます。
仮に、1Gメモリー積んでCPUがPIII 1Gぐらいのとき、
先ず、CPUが足りなくなる前にメモリーが足りなくなります。
(これは、webサーバーやRDBMSがメモリー食いすぎというのも理由だが)
なので、CPUとメモリーはトレードオフの関係にあるときは、
メモリー優先で基本的にはOK。
0843nobodyさん
03/06/24 19:55ID:???0845nobodyさん
03/06/25 00:40ID:???0847nobodyさん
03/06/25 01:18ID:Ai+C7V0g<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM action="test.cgi" method="POST">
%%errmsg%%
E-mailアドレスを入力して下さい。<BR>
<INPUT size="30" ="text" name="email" value="%%email%%"><BR>
確認のため、再度入力してください。<BR>
<INPUT size="30" type="text" name="confirm" value="%%confirm%%"><BR>
<BR>
<INPUT type="submit" value="送信"></FORM>
</BODY>
</HTML>
これを変数化したものを
$html =~ s/\%\%.+?\%\%//gs;
このように「%%〜%%」を全て取り除くはずなのですが、
なぜか$html =~ s/\%\%.+?\%\%//gsi;
でないといきませんでした。%%%%に大文字も小文字も無いとは思いますが、、、
どうしても腑に落ちないため、質問させていただきました。
宜しければどうかご教授ください。宜しくお願いいたします。
0850nobodyさん
03/06/25 06:35ID:???$html =~ s/%%.+?%%//g;
で、動かないかい?
それはさておき、%%strings%%で書き換えるHTMLテンプレートをよく見かけるけれども、
鬱陶しくなぁい?
%sにしてsprintfで一気に書き換える方が楽そうに思えるけれども。
それはさておき、正しいHTMLを描きましょう。
0851nobodyさん
03/06/25 11:07ID:???必ず</p>で閉じましょう
0853nobodyさん
03/06/25 16:44ID:???</p>は省略可能だけど、それを意識して省略しましょうね。ということでよろ。
>>852
そだよ。そんなに頻繁にテンプレを変えるのは少々難ありだと思うけれども。
0854nobodyさん
03/06/25 17:48ID:???テンプレは変わるだろ。システム変わらずともデザインが変わることは多々ある。
あとDOCTYPEの指定がないのに省略可能と言い切るのはすごいな。
0855nobodyさん
03/06/25 18:36ID:???のですが、これは文字コート゛の問題なのですか?
普通はどう解決しますか?
0858nobodyさん
03/06/25 19:49ID:???これで表示される。Shift-JIS だと「表」のコードが \x95\x5c となる。
\x5c(\) が perl だと特別に解釈される文字なのでおかしくなる
0859855
03/06/25 20:04ID:???0860nobodyさん
03/06/25 20:18ID:???↓
明らかに突飛な解決策が提示される
↓
「調べろ」とアドバイス
↓
同情した奴がマジレス
↓
自己解決
まったく噛み合ってないな(w
0861ayaya
03/06/25 20:35ID:???アドレスです!http://www.loveshelter.tv/まで!沢山きてね(^o^)丿
待ってまーす
0862nobodyさん
03/06/25 20:49ID:+p8CFadctest::func();
この呼び方で、どちらでも動くようにfunc()をコーティングしたいんだけど、
いい方法知らないすか?
0863nobodyさん
03/06/25 21:02ID:UMoE3ZS2JavaScriptのescapeのように、あいうえお<->%u3042%u3044%u3046%u3048%u304A
といった感じで変換したいのです。
$value =~ s/(\W)/'%' . unpack 'H2' , $1/eg;
とやっただけではムリでした。
どのようすればいいのでしょうか?
0864nobodyさん
03/06/25 21:12ID:???取得する時間って24*60*60しないとちゃんと取得できないの?
0866nobodyさん
03/06/25 21:40ID:???1.与えられた引数とは全く関係なしに、決まった結果を返す。
2.与えられた第一引数を調べ、それがオブジェクトかそうでないかを判断する。
ref $_[0] でなんとかなるだろ。
0867nobodyさん
03/06/25 21:42ID:???本読め。
-M で取得できるのは、最終更新日からの日数だと明記してある。
秒に変換したいなら、*24*60*60しないとどうしようもないわな。諦めろ。
0869nobodyさん
03/06/25 23:52ID:???今一つ爽快感に欠けるのは、-Mについて聞くのが
どのくらい愚かなのか実感が無いからだな
0872864
03/06/26 04:34ID:???bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
0873nobodyさん
03/06/26 04:35ID:bmlG3tt5文字が文字化けの原因となってしまいます。
具体的には、「当代島」と打つと、「套島」、「当島」と打つと
「島」となってしまいます。
入力フォームも間違えなくEUCなのですが、不明です。
どうかご教授いただけますでしょうか。
0874nobodyさん
03/06/26 05:46ID:???0876nobodyさん
03/06/26 09:31ID:???0877nobodyさん
03/06/26 11:55ID:UmMKROoY0878nobodyさん
03/06/26 12:17ID:???当代島 - C5F6 C2E5 C5E7
套島 - C5 E5 C5E7
当島 - C5F6 C5E7
島 - C5 E7
なんか2バイト目と3バイト目が欠けてる気が。
0879nobodyさん
03/06/26 12:46ID:???0881nobodyさん
03/06/26 15:21ID:lH1PokLv受信に添付されたファイルを使えばいいので何となくわかるのですが、
i - shot の場合、メール内のアドレスを解析してそのサイトから
画像を取ってくるようなプログラムはどのようになるのでしょうか?
0883873
03/06/26 16:07ID:???ソースを載せますと
my (%form, $buffer, @pairs);
if ($ENV{'REQUEST_METHOD'} =~ /^post$/i){ read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else{ $buffer = $ENV{'QUERY_STRING'}; }
@pairs = split(/&/,$buffer);
foreach (@pairs){
my ($key,$value) = split(/=/,$_);
$value =~ tr/+/ /;
$key =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C", hex($1))/eg;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$form{$key} = jcode::convert(\$value,'euc', 'euc','z');
}
このようにformで受け取ったものを%formに入れているのですが、
ここで問題の「当代島」の入っている$form{address}を表示させる
と例の文字化けが発生してしまいました。
スクリプト内で「当」がきたらエスケープする処理をしてもよいの
ですが、もう少し効率的な方法を考えたいと思います。
こんな駄目質問にも応えていただいた皆様には本当に感謝しており
ます。
0884_
03/06/26 16:23ID:???0885nobodyさん
03/06/26 16:33ID:???jcode:converが怪しい
0886nobodyさん
03/06/26 16:41ID:???>jcode::convert(\$value,'euc', 'euc','z');
3つ目にeucを指定してEUCtoEUCじゃ、実際に変換が行われるのは
zオプションの半角カナ→全角カナ変換だけだろ
jcode::convert(\$value,'euc', '','z'); じゃないのか?
0887nobodyさん
03/06/26 16:43ID:???なんか理由あるのかね?
0889nobodyさん
03/06/26 17:12ID:???0890nobodyさん
03/06/26 17:23ID:???多分 kent-web とかの配布スクリプトが hex 使ってるから
>889
同じ
速度が違う
0891nobodyさん
03/06/26 17:37ID:???申し訳ありませんがご助言をお願いできませんでしょうか。
1: Perlスクリプトで色んなサイトのhtmlソースを一気に取得してきたい。
2: それでこんな風にやってみました。
※メインのスクリプトにて
foreach(@url_list){ # @url_listに各サイトのurlが入っている。
@source = &get($_);
(いろいろな処理)
}
※サブルーチン(別ファイル)にて
sub get{
(socketを使ってソースを取得し、@backに格納)
return(@back);
}
3: うまくいかないサイトがちらほらあります。
<付加的情報>
・問題なく取得できるサイトも多くある。
・Hostヘッダは送っている(=バーチャルホストが原因ではない?)。
・うまくいかないサイトでも、サブルーチン内ではそのソースをprintできる。
(=実は取得できている?)
<自分の考え>
・特定のサイトの時だけ、メインのスクリプトに@backが帰って来ない?
・特定のサイトの時だけ、そもそもサブルーチン内で配列に格納されていない?
0892891
03/06/26 17:38ID:???足りない情報などあったらすべてお答えしますので、
何とぞよろしくおながいします。<(_ _)>
0894nobodyさん
03/06/26 17:54ID:???HTMLの文字コードがEUCだからって、EUCが送られてくるとは
限らないよ。たまたまIEなんかはそういう実装になってるだけで。
あと、単にブラウザが文字コードを判定ミスしてるってことはない?
Content-Type行を、
print "Content-Type: text/html; charset=EUC-JP\r\n\r\n";
みたいにしてみ。
0895nobodyさん
03/06/26 18:09ID:???0897nobodyさん
03/06/26 18:26ID:???0898891
03/06/26 18:29ID:???ありがとうございます。しかし申し訳ありません。原因は凡ミスでした・・・。
891の「(いろいろな処理)」のほうがマズかったようです。
質問する前にもっとしつこく調べてみるべきでした。本当にすみません。
0899nobodyさん
03/06/26 18:52ID:???おいおい、解決したから満足ですさようならーってのはナシでしょ。
善意とは言え、他人の手を煩わせたんだから、
その凡ミスを晒して他の初心者に貢献するのが
ギブアンドテイクっていうもんじゃないか?
0902nobodyさん
03/06/26 20:03ID:???とか。
0905nobodyさん
03/06/26 20:36ID:fBG4qVY6サーバーの負荷はファイルの読み書き何byteに対してフォームデータ送信何byteと同じぐらいでしょうか?
0908nobodyさん
03/06/26 21:12ID:8elJoZcAホスト12-231-187-185.client.attbi.com
名前:
E-mail:
内容:
こちらでリロードしてください。 GO!
分からないことがあったら2ちゃんねるガイドへ。。。
プロキシー制限は、2ちゃんねるビューアを使うと回避できることがあります。
ワラタ
0910nobodyさん
03/06/26 22:00ID:0WiiLc+a横に連結した1つの jpeg 画像ファイルを出力するプログラムを書け。
また、指定した位置に連結できるようにもせよ。
どなたか作っていただけませんか?
0911nobodyさん
03/06/26 22:07ID:XYA3PmxJ0912nobodyさん
03/06/26 22:07ID:8elJoZcA偉そうにマルチポストか。死ね。
0914nobodyさん
03/06/26 22:31ID:???まじれすすると、モジュール要るし、
貴方にはソレを入れるとか、もしくはソレを使えるサーバーも用意できないと思われる。
もうちっと勉強してきなさい。
0915nobodyさん
03/06/26 22:33ID:8elJoZcA>まじれすすると、モジュール要るし、
自分の低レベルをカミングアウトせんでも・・・。
学生のうちに離散コサイン変換位覚えとけ。
0916nobodyさん
03/06/26 22:54ID:???>>914じゃないけど、俺も面倒だからモジュール使うかなあ。必須だとは思わんけど。
> 学生のうちに離散コサイン変換位覚えとけ。
プログラマで10年飯を食ってるけど、文系なのでそういうの苦手。
0918891
03/06/26 23:08ID:???本当にバカですみません。どういう凡ミスかを簡単に申しますと、
htmlソースの<body>から</bocy>までの間だけ切り取ろうとしていた部分で
$_ =~ /^<body/i → $_ =~ /<body/i のように直したという感じの話です。
ちなみに実は他にも問題山積みであまり解決していないので
>解決したから満足ですさようならー
という状況でもなかったりするのですが。
0921nobodyさん
03/06/26 23:29ID:???0923nobodyさん
03/06/26 23:33ID:???0924nobodyさん
03/06/26 23:37ID:???0925nobodyさん
03/06/26 23:55ID:???関係ないけど、
> どういう凡ミスかを簡単に申しますと、
と書いた次の瞬間に↓
> </bocy>
なんか性格出ててちょっと好感度アップ。
0926nobodyさん
03/06/26 23:58ID:???昔、月の満ち欠けのレンダラーを何を思ったかPerlで書いた事があったが、
恐ろしく遅かったのを覚えてるな。
ただの球体なのに、500x500程度の画像に数分かかってた。
まぁ俺のアルゴリズムが自己流で糞だったのもあるけど。
でもCで書き直したら一瞬で計算できたよ。
0927nobodyさん
03/06/27 00:55ID:???$!に permission deniedが入っていました。
やったことをまとめるとこの様な感じです
・renameの第二引数には既に存在しているファイルを指定し上書きしたい
・第一、二引数のファイルは共に存在する
・両ファイル共に読み取り専用のチェックは入っていない
openでの書き込みやmkdirなどその他のファイルシステム関数は普通に使えます。
Windowsなのでパーミッションは要らないと思っていたのですが
この場合どこに原因があるのでしょうか?
どうかよろしくお願い致します
0929nobodyさん
03/06/27 06:01ID:???0930nobodyさん
03/06/27 07:24ID:???自分も同様な処理で同じエラーが出たが、
アクセス権を考えるのが面倒くさいので、
存在しているrename先ファイルをunlinkした。
0932nobodyさん
03/06/27 09:45ID:???超初心者な質問です。
if だと何かが真なら…って分岐になりますが、
「これら全てが真なら」とか「全てが偽なら」って記述をスマートに書くにはどのように書くのが一般的なのでしょうか?
頭悪いので
if(){
if(){
if(){
}
}
}
こんな記述使ってます。
見にくいです。
0933nobodyさん
03/06/27 09:47ID:???andじゃ駄目なの?
if($a == 1 and $b == 2 and $c == 3){
全てが真の時の処理;
}else{
一個でも違ったら;
}
0934932
03/06/27 11:05ID:???頭が悪いのか、andとか、全然使いこなせないんです。汗
0936374
03/06/27 11:22ID:???0937nobodyさん
03/06/27 11:36ID:???0940nobodyさん
03/06/27 12:57ID:???if文をまとめたぐらいでは体感的な速度差はない。
ただ、日頃から>>932のようなコーディングをする人は、自分でも理解できなくなるような
スパゲッティコードを書いたり、非常にパフォーマンスの悪いアルゴリズムを使ったりと
間違った方向に進みがち。
まあ何にせよ、基本はきっちりと押さえとけってこと。
0941nobodyさん
03/06/27 13:01ID:???したあと、
$houselist[あれこれ]->{id}
が重複するものを、
@houselist から取り除く(※)にはどうすればいいのでしょう?
※取り除くというか、1つだけ残したいです。
0942nobodyさん
03/06/27 13:21ID:???こんな感じかのう
@check = ();
@houselist = grep { !$check{$_->{id}}++ } @houselist;
0943nobodyさん
03/06/27 13:22ID:???0944nobodyさん
03/06/27 13:35ID:???>>934が言っているように、ほとんど体感は無いけどね。
ただ、漏れは仕事の都合上、xGB単位のファイルの処理とかするんだけど、
そうなってくると、細かいところでかなり違ってくる。
といっても、1時間が55分に短縮されるとか程度だけど。
どっちかってーと、>>934の言うとおり、わかりやすく書く、ってことが
重要かと。
0946nobodyさん
03/06/27 13:40ID:???∧∧
ヽ(=゚ω゚)ノ″
〜( ×)
(=゚ω゚)ノぃょぅ U U
0947nobodyさん
03/06/27 13:42ID:gWCPnMBPsub func{
$str = $_[0];
foreach(@list){
if(/$str/){
$result = $_;
}
}
return $result;
}
みたいに検索条件を変数にしたい時はどうすれば良いのでしょうか?
0948942
03/06/27 13:42ID:???0949nobodyさん
03/06/27 13:44ID:???正規表現じゃなくてindex使え。
0951374
03/06/27 14:01ID:???print s//uc join('',unpack('A1 x4 A1 x7 A1 x4 A1', <<EOT))/e && $_,"\n";
Just another Perl Hacker
EOT
0952nobodyさん
03/06/27 14:03ID:???0955nobodyさん
03/06/27 14:32ID:???変数を正規表現に使うときは、メタ文字が入っているとうまくいかないから、
quoteする。
metaquote($str)または\Q$str\E
全部にマッチしちゃうってのは、/^$str$/してないから、一部にひっかかって
るんじゃないかな。
0957947
03/06/27 14:39ID:???>>955の書き込みを見る前にindexでとりあえずの解決しました。
for($i = 0;$i < @list;$i++){
$idx = index($list[i],$str);
if($idx ne -1){
$result = $i;
}
}
としました
ありがとうございました。
>>955さんのが原因かと思われるのでそちらも勉強してみます。
感謝です
0958950
03/06/27 14:55ID:???要は正規表現を使って(変数に入った)文字列を検索したかったのね。
0960nobodyさん
03/06/27 15:07ID:???一覧のうち1部だけが文字化けするって、
何が考えられますか?
なお、スクリプトは、EUC(スクリプト中の処理も全てEUCで処理してます)、
CSVはSJIS、HTML吐き出しもSJISです。
文字化けしてしまってるところは、EUCになっちゃってます。
0961nobodyさん
03/06/27 15:14ID:???文字コード変換を自動判別に頼ってるため、Shift_JIS文字列をEUC
と見間違えるんだと思う。
CSVの1レコードとかテーブル全体を一括で文字コード変換するか、
明示的に変換元と変換先の文字コードを文字コード変換ルーチンに指示
するかすれば問題は起こりにくくなる。
あと、いわゆる半角カナが多いShift_JIS文字列もEUCと誤認識
しやすい(場合によっては区別が付かない)。
0962nobodyさん
03/06/27 15:15ID:???0964nobodyさん
03/06/27 15:54ID:???この方法の解説は確かperlメモに書いてあった。
だがしかしperlメモ説明がくどいから逆に分かり難いかも。
でも便利だから一度は見ておけば?
0965nobodyさん
03/06/27 17:01ID:???メールソフトと同じように、
$bcc = 'amano@alive.ne.jp, mine@alive.ne.jp';
if (!open(OUT,"| $sendmail -t")) { &error('申し訳ありませんが何らかの原因で処理できません.'); }
#中略
print OUT "Bcc: $bcc\n";
#後略
で問題ないですよね?
実験だと問題なさそうなんですが、
環境に依存するとなんなんで、一応質問・・・
0966nobodyさん
03/06/27 20:05ID:???その sendmail が Sendmail とは限らない。
とか言ってみるテスト。
ようはそのプログラム次第ってこと。
Socket使うとかしてみたら?
その手のモジュールも転がってるし。
0967965
03/06/27 20:21ID:???いや、sendmailのパス入ってます。
sendmailだったら、他の環境によらず大丈夫ってことですか?
Socketの勉強は、まだ少しペンディングにしてるので。。。
0969nobodyさん
03/06/27 20:53ID:???0970nobodyさん
03/06/27 21:05ID:???0971nobodyさん
03/06/27 21:26ID:???それ以外のは知らないけど。
つか、スレ違いぎみな気が。
0972ふつー
03/06/27 22:05ID:???use Net::SMTP;
0973nobodyさん
03/06/27 22:34ID:???なぜみんなヒアドキュメントを使うんでしょう?
print << "END_OF_HTML";
ほげ
ふが
ひげ
END_OF_HTML
っていう風に、最後を、インデントつけれないから、すごくコードがみづらくなって、
個人的にはいやなんですけど。
(なんかのオライリー本にもそんなことかいてあったきがする)
やっぱり、END_OF_HTMLみたいに意味をかけるからいいんでしょうか?
ちなみに自分は、ほとんど
print qq|
ふが
ほげ
|;
ってやってます。
0974965
03/06/27 22:36ID:???(だから、>>971 でqmail の sendmail ってなんだ?と思った)
スレ違いぎみなので、逝って勉強してきます。
0979nobodyさん
03/06/27 23:33ID:???0980nobodyさん
03/06/27 23:36ID:???'
hoge
';
<< 'HOGE';
hoge
HOGE
ちなみに私は前者が多いかな。
インデントがと言うか、楽だから。
0981nobodyさん
03/06/27 23:41ID:???クックブック
0983982
03/06/27 23:43ID:???0984nobodyさん
03/06/27 23:53ID:???0985nobodyさん
03/06/28 00:01ID:???なんてどお?
0986nobodyさん
03/06/28 00:26ID:???0987nobodyさん
03/06/28 00:34ID:???0988nobodyさん
03/06/28 00:37ID:???Perlコーディング 初心者コーナー Part25
じゃないのか?
0989nobodyさん
03/06/28 00:51ID:???0990nobodyさん
03/06/28 01:03ID:???0991nobodyさん
03/06/28 01:08ID:???0992nobodyさん
03/06/28 01:11ID:???0994nobodyさん
03/06/28 01:14ID:???0995nobodyさん
03/06/28 01:15ID:???0996nobodyさん
03/06/28 01:19ID:???http://pc2.2ch.net/test/read.cgi/php/1056730690/
立てたよ
0997nobodyさん
03/06/28 01:28ID:???0998nobodyさん
03/06/28 01:29ID:???0999nobodyさん
03/06/28 01:32ID:???1000nobodyさん
03/06/28 01:32ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。