Perl コーディング初心者質問コーナー Part34

このエントリーをはてなブックマークに追加
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

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

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
2nobodyさん:04/04/05 16:18 ID:???
関連スレ
【Perl上級者コーナーPart01】
http://pc2.2ch.net/test/read.cgi/php/1024741312/
CGI: Common Gateway Interface part 11
http://pc2.2ch.net/test/read.cgi/php/1055597189/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
★三 【 スクリプト改造工房 PART 8 】 ★三
http://pc2.2ch.net/test/read.cgi/php/1077525387/
【 スクリプト改造依頼スレ 】(丸投げ)
http://pc2.2ch.net/test/read.cgi/php/1076831972/
△▲ WebProg 初心者の質問 Part7 ▼▽
http://pc2.2ch.net/test/read.cgi/php/1073460282/
【Perl】ファイルロック(排他処理)について語ろう
http://pc2.2ch.net/test/read.cgi/php/1024795138/
★負荷軽減対策委員会(Perl、PHP)★
http://pc2.2ch.net/test/read.cgi/php/1034645635/
【Perl】掲示板を使ろう!
http://pc2.2ch.net/test/read.cgi/php/988890976/
Perlモジュールについて
http://pc2.2ch.net/test/read.cgi/php/997829243/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
3nobodyさん:04/04/05 16:19 ID:???
4nobodyさん:04/04/05 16:20 ID:???
[過去ログ] 2 of 2

Part16 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/php/kako/1050/10503/1050369328.html
part23 http://pc2.2ch.net/php/kako/1053/10530/1053051519.html
part24 http://pc2.2ch.net/php/kako/1054/10549/1054992610.html
part25 http://pc2.2ch.net/php/kako/1056/10567/1056730690.html
part26 http://pc2.2ch.net/php/kako/1059/10590/1059043704.html
part27 http://pc2.2ch.net/php/kako/1060/10608/1060808783.html
part28 http://pc2.2ch.net/php/kako/1063/10635/1063562491.html
part29 http://pc2.2ch.net/php/kako/1066/10662/1066286828.html
part30 http://pc2.2ch.net/test/read.cgi/php/1069846177/
part31 http://pc2.2ch.net/test/read.cgi/php/1072896288/
part32 http://pc2.2ch.net/test/read.cgi/php/1075545279/ (タイトルに31と誤記) 前スレ
part33 http://pc5.2ch.net/test/read.cgi/php/1078076768/

[ひまぢん氏のミラー]
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
5nobodyさん:04/04/05 16:21 ID:???
[総合]
 ・http://www.excite.co.jp/world/ # 英文のページ多いから一応
 ・Perl Com: http://www.perl.com/
 ・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/
6nobodyさん:04/04/05 16:21 ID:???
 [Document&Tutorial]
 ・Home - Japanized Perl Resources Project: http://perldocjp.sourceforge.jp/
 ・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/
7nobodyさん:04/04/05 16:27 ID:???
初心者の質問は8本目に移行しております。

△▲ WebProg 初心者の質問 Part8 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1078568723/
8nobodyさん:04/04/05 16:28 ID:???
過去ログで読めないスレは s/pc2/pc5/ とすると読めるかも知れません。
9nobodyさん:04/04/05 19:00 ID:???
初歩的な質問で申し訳ないんですが教えて下さい。
所謂、動作が遅いといわれるモジュールを使用する場合、例えばCGI.pmとして、
オブジェクト指向じゃなく関数指向で利用し、
インポートする関数を極力抑えて少なくするのと、
よく見る:standardとして殆どをインポートするのとでは
前者の方が動作は速くなるのでしょうか?
10nobodyさん:04/04/05 19:33 ID:???
>>9
http://www.google.co.jp/search?num=100&q=Apache+Bench&lr=lang_ja
http://perldoc.com/perl5.8.0/lib/Benchmark.html

・使わない関数をコンパイルさせない方が速い。
・メソッド呼び出しより関数呼び出しの方が速い。

理論上は、ね。
11nobodyさん:04/04/05 19:58 ID:???
>>10
ですよねぇ
しかしベンチとったんだけどほっとんど変わらなかったんで聞いたんですが、
まぁ一応これからも関数指向・使う関数のみインポートでやっていきます。
有難うございました。
12nobodyさん:04/04/05 20:36 ID:sKUQSXmG
前スレのレス番ミスがアフォすぎて泣けてきますね。
13nobodyさん:04/04/05 21:27 ID:???
>12
仕事人★のおかげでログが完全復旧せず「空白の一日」が
出来たからじゃない? 専ブラ使っている人が、
「空白の一日」込みのログをそのまま使っていたせいだと思われ。
14nobodyさん:04/04/05 21:47 ID:???
>>11
CGI.pm に限って言えば、現実問題として、誤差の範囲内だと思う
負荷が気になるなら CGI::Lite 使うとかそういう
15nobodyさん:04/04/06 12:17 ID:???
sub loadPass
{
open(FILE,"$PASSFILE");
while(<FILE>)
{
s/[\n\r]*$//g;
my($id,$pass,$writer,$name) = split(/\t/);
$PASS{"$id"} = $pass;
$WRITER{"$id"} = $writer;
$NAME{"$writer"} = $name;
}
close FILE;
}
このようなコードを書いたのですが,
読み込むファイルの最初の行のデータだけが読み込めません。
何が悪いのでしょうか?
1615:04/04/06 12:26 ID:???
ちなみに読み込むファイルの内容は以下のようになっています

id1[TAB]pass1[TAB]writer1[TAB]name1
id2[TAB]pass2[TAB]writer2[TAB]name2
id3[TAB]pass3[TAB]writer3[TAB]name3
id4[TAB]pass4[TAB]writer4[TAB]name4

このうち,id1が読み込めていないようです。
17nobodyさん:04/04/06 13:02 ID:???
↑のソースをコピってやったら俺は読めたぞ

#!/usr/local/bin/perl

$PASSFILE = "data.log";
open(FILE,"$PASSFILE");
while(<FILE>)
{
s/[\n\r]*$//g;
my($id,$pass,$writer,$name) = split(/\t/);
$PASS{"$id"} = $pass;
$WRITER{"$id"} = $writer;
$NAME{"$writer"} = $name;
print "1:$PASS{\"$id\"}\n";
print "2:$WRITER{\"$id\"}\n";
print "3:$NAME{\"$writer\"}\n";
}
close FILE;
18nobodyさん:04/04/06 13:03 ID:???
スマン、勘違い。読めてねぇや。ちとタンマ。
19nobodyさん:04/04/06 13:12 ID:???
#!/usr/local/bin/perl
$PASSFILE = "data.log";
open(FILE,"$PASSFILE");
@data = <FILE>;
foreach $temp (@data) {
my($id,$pass,$writer,$name) = split(/\t/,$temp);
$PASS{"$id"} = $pass;
$WRITER{"$id"} = $writer;
$NAME{"$writer"} = $name;
print "1:\$PASS{\"$id\"} = $PASS{\"$id\"}\n";
print "2:\$WRITER{\"$id\"} = $WRITER{\"$id\"}\n";
print "3:\$NAME{\"$writer\"} = $NAME{\"$writer\"}\n";
}
close FILE;
20nobodyさん:04/04/06 13:13 ID:???
結果。これで読めてるっしょ。

D:\>perl test.cgi
1:$PASS{"id1"} = pass1
2:$WRITER{"id1"} = writer1
3:$NAME{"writer1"} = name1

1:$PASS{"id2"} = pass2
2:$WRITER{"id2"} = writer2
3:$NAME{"writer2"} = name2

1:$PASS{"id3"} = pass3
2:$WRITER{"id3"} = writer3
3:$NAME{"writer3"} = name3

1:$PASS{"id4"} = pass4
2:$WRITER{"id4"} = writer4
3:$NAME{"writer4"} = name4
21nobodyさん:04/04/06 13:24 ID:???
↑がなんでforeachにしてるかわからんが。表示させて確かめれ。俺はこうだ。
$PASSFILE = "data.log";
open(FILE,"$PASSFILE");
while(<FILE>) {
  s/[\n\r]*$//g;
  my($id,$pass,$writer,$name) = split(/\t/);
  $PASS{"$id"} = $pass;
  $WRITER{"$id"} = $writer;
  $NAME{"$writer"} = $name;
  print "\$PASS{\"$id\"} = $PASS{\"$id\"}\n";
  print "\$WRITER{\"$id\"} = $WRITER{\"$id\"}\n";
  print "\$NAME{\"$writer\"} = $NAME{\"$writer\"}\n\n";
}
close FILE;
22nobodyさん:04/04/06 13:25 ID:???
1行目
$PASS{"id1"} = pass1
$WRITER{"id1"} = writer1
$NAME{"writer1"} = name1
2行目
$PASS{"id2"} = pass2
$WRITER{"id2"} = writer2
$NAME{"writer2"} = name2
3行目
$PASS{"id3"} = pass3
$WRITER{"id3"} = writer3
$NAME{"writer3"} = name3
4行目
$PASS{"id4"} = pass4
$WRITER{"id4"} = writer4
$NAME{"writer4"} = name4
23nobodyさん:04/04/06 13:36 ID:???
>15
話とは関係無いんだが

$PASS{"$id"} = $pass;
$WRITER{"$id"} = $writer;
$NAME{"$writer"} = $name;

って

$PASS{"$id"} = $pass;
$WRITER{"$writer"} = $writer;
$NAME{"$name"} = $name;

じゃ無いの?
24nobodyさん:04/04/06 13:37 ID:???
↑ごめんボーっとしてたスルーして。
25nobodyさん:04/04/06 14:06 ID:???
誰かエロい人まとめてー
26nobodyさん:04/04/06 14:19 ID:???
s/[\n\r]*$//g; ってなんだよ・・・
まあいいけど
27未承諾広告※ ◆TWARamEjuA :04/04/06 14:21 ID:???
>>25
zip -9 -o ./loadPasszip ./loadPass.pl
28nobodyさん:04/04/06 16:09 ID:???
ここは質問者の感謝が最近足りていないスレですね。
29nobodyさん:04/04/06 17:57 ID:???
>>26
>>21じゃないけど、なんかおかしい? chompは不安だから自前でやってるんでは?
30nobodyさん:04/04/06 18:02 ID:???
>>29
/g は要らんし、より正確に書くなら \n \r ではなく \x0A \x0D
http://www.din.or.jp/~ohzaki/perl.htm#CRLF_Remove
31nobodyさん:04/04/06 18:04 ID:???
俺はこう書いてるけど。
/\r\n|\r|\n/
何かマズい?
32nobodyさん:04/04/07 02:46 ID:???
いま、UPされたファイルをCGI.pmを使ったりして一度保存し、
それをImageMagickでまた読み込んで編集して保存してるんですが、
これをわざわざ一度保存せず、編集して書き出すことって出来ないでしょうか?
いろいろ調べたのですが、どうもwin環境だからか、何度試しても動いてくれません。

CGI.pmを利用し、アップしたファイルのファイルハンドルが$fileに入ってます。
$img = Image::Magick->new;
$img->Read(file=>\$file);

↑こんな感じで動くと書いてあるサイトがあったりするのですが、
読み込んでくれません。
どのようにすれば可能なのか、また例えばwin環境では無理なのか等、
教えていただけませんでしょうか。
33nobodyさん:04/04/07 03:12 ID:???
34nobodyさん:04/04/07 05:02 ID:???
>>33
えっと、そのページは翻訳しもって一通り読んでます。
で、そのスクリプト例の項目がどう関係あるのかわからないのですが。。
つまり、そんなこと出来ないということでしょうか?
35nobodyさん:04/04/07 06:45 ID:???
>>34
私のところでは、問題発生しました…で強制終了。
ファイルハンドルではなぜか使えない。
36nobodyさん:04/04/07 07:20 ID:???
>>35
ああやっぱりそうですか・・・うちもperlが強制終了しちゃいます。
UNIX系の環境ではどうやら動くようなのですが、
レンタルしてる鯖につっこんで実験ってのはこわくてできないし(強制終了ですからねぇ)
そもそもローカルテスト環境と本番の環境で違うファイルにしなければならないというのは
少々困りものですし・・・。

出来ないなら諦めて今までどおり一旦保存して再読み込みでいくしかないですね。
しかし検索してもこのような問題が出てこないんで、やはり書き方に問題があるような気も。
もうちょっとだけ調べてみます。
3715:04/04/07 09:13 ID:???
>>16-31
なんとか解決できました。
ありがとうございました。
38nobodyさん:04/04/07 16:02 ID:9kyfgT/3
*hoge = 10;
とは、どういう事なのでしょうか?
よく分りません。
よろしくお願いします。
39nobodyさん:04/04/07 16:04 ID:???
>>38
型グロブ
40nobodyさん:04/04/07 16:08 ID:9kyfgT/3
>>39
レスありがとうございます。
型グロブということは存じておりますが、
10を代入した結果、どうなるのか?、なぜそうなるのか?が分らないのです。
41nobodyさん:04/04/07 17:36 ID:???
普通 *hoge = 10 なんてしない。誰だよそんなコード書いてる香具師は。
*hoge = \10ならまだ分かるが。
42nobodyさん:04/04/07 18:04 ID:s+a2EP68
>>41
スミマセン、自分でどうなるかな・・・と。
*hoge = \10
なら型グロブに10へのリファレンスを生成するという事ですか?
型グロブにリファレンスって変な事ないですか?
43nobodyさん:04/04/07 18:55 ID:???
>>42
型グロブはSCALAR, ARRAY, HASHなどのフィールドを持ったデータ。
(スカラー、配列、ハッシュにそれぞれ同じ名前で別の変数を定義できるのもこのため)
*hoge = \10 や *hoge = \%hash は型グロブのそれぞれのデータフィールドへの代入となる。
つまり、上記の代入を行った後は $foo は定数10の別名となり、print $fooは10を表示する。
定数の別名である為、$foo = 1等は10 = 1と等価となり、実行時エラーになる。
もちろん、%hogeは%hashの別名になる。
このフィールドは、直接 *hoge{SCALAR}, *hoge{HASH} として直接参照することも出来る以下略
44nobodyさん:04/04/07 21:03 ID:???
csvのデータをよみこんで、ただ表示するcgiを作ろうと思っているのですが、
表示はされるものの文字コードの処理の仕方がわかりませぬ(´Д`)

よくみかける
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode'convert(*value,'sjis');

$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\n//g;
$value =~ s/\r//g;
$value =~ s/\t//g;
$value =~ s/\,//g;

を使うんだとは思うんですが、教えてください。。
ちなみに今は
if (!open(IN,"$file")) { &error('データベース読取エラー','復旧をお待ちください.'); }
while(<IN>){
($d,$DATE,$NAME,$SEX,$KATEGORI,$TEIKA1,$TEIKA2,$HANBAI1,$HANBAI2,$IMAGE,$KANRI) = split(/,/);
print qq( ・・・・
とかいております。。
よろしくお願いいたします。
45nobodyさん:04/04/07 21:18 ID:???
おkおk。
キミはGETでパラメータを渡したとき、hoge.cgi?a=001+1&b=002&...というのは見たことはあるな?後ろにくっつくウザい文字列だ。
日本語を渡すとわかるが、ワケわからん状態になっているはずだ。
あれを正常な状態に戻す処理だ。

1.$value =~ tr/+/ /;
I am hoge.という文字列をQUERY STRINGに渡すと、I+am+hogeとなる。空白の部分が+になるわけだ。
これじゃ元のデータと違ってしまうから、+を半角スペースに置き換える処理。

2.$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value,'sjis');
%8B%B3%82%A6%82%C4%8C%4E%82%CD%8B%41%82%EAなどの文字列を普通の文字列に直す処理。
後半はjcode.plやらの文字コード変換ツールでsjisに変換している。

3.$value =~ s/</</g; $value =~ s/>/>/g; $value =~ s/\n//g; $value =~ s/\r//g; $value =~ s/\t//g; $value =~ s/\,//g;
キミが書いたときには、同じ記号が並ばずに&lt;とか&gt;ってなってたよな?
HTMLとかで読ませると、キミの書き込みのように記号扱いされてしまうが。
これを実態参照(だっけ?違ったら修正よろ)という。
ようするに、BBSなどで本文にタグとかを書かれると困るから、<や>記号を&lt;とか&gt;に置き換えようってことだ。

クソ適当なんで誰か追記叩き修正フォロー暴言罵倒誹謗中傷お願いします。
4644:04/04/07 22:08 ID:???
>>45
そこんとこの意味はなんとなくわかるんですが
if (!open(IN,"$file")) { &error('データベース読取エラー','復旧をお待ちください.'); }
while(<IN>){
($d,$DATE,$NAME,$SEX,$KATEGORI,$TEIKA1,$TEIKA2,$HANBAI1,$HANBAI2,$IMAGE,$KANRI) = split(/,/);
print qq( ・・・・
のどこにどんな風に記述すればいいですかのう・・(´Д`)
47nobodyさん:04/04/07 23:47 ID:???
>>44
cgiで$fileを読み込んで表示したいだけではないの?
なぜデコードや文字コードの処理がでてくるのやら。
48nobodyさん:04/04/07 23:56 ID:???
>>46
それだけのコードが自分で書けるのに、なぜ分からんのか不思議。
49nobodyさん:04/04/08 00:28 ID:???
>>46
つか具体的にどういう不具合があるのさ
50nobodyさん:04/04/08 01:00 ID:???
出力はSJIS。CSVファイルはEUC。そして文字化け。ってことかの?
それならjcodeの引数をもうひとつ追加すれば解決。
どっちにしろURIエンコードは関係なさそうだね。
5144:04/04/08 04:13 ID:???
>>47-50

いや、うまくいくと思ってたらうまくいかなかったので
なんでかなーと・・。
でももうひとつ引数追加すればいいわけですか。。
やってみるわ〜。
あんがと〜
52nobodyさん:04/04/08 10:14 ID:???
情報を小出しにするとみんなが混乱する凡例でした。

では次の質問ドゾー
53nobodyさん:04/04/08 20:22 ID:???
詰まったので質問させてください。
「ハンドルネーム@〜」って名前を入れられた時に、@以下を切り落としたいんですが
名前によっては上手く切り落とせないんです。

$str = "ファイア@炎";
$str =~ /^([^@^@]+)/;
$str = $1;
print $str;

例えば、この場合「フ」とあとなんか変な文字が$strに入ってしまいます。
入力文字列によっては上手く切り落とせる事もあるんですが・・・
何が悪いんでしょうか?
54nobodyさん:04/04/08 20:41 ID:???
$str =~ s/(@|@).+$//;
5553:04/04/08 20:46 ID:???
>>54
$str = "ファイア@炎";
$str =~ s/(@|@).+$//;
$str = $1;
print $str;

実行した出力結果:
@

切り落とせてないんですが・・・
5653:04/04/08 20:48 ID:???
勘違い。

$str = "ファイア@炎";
$str =~ s/(@|@).+$//;
print $str;

出力結果:
フ(と、変な文字)

やっぱり出力できてないんですが・・・
57nobodyさん:04/04/08 20:58 ID:???
EUCに変換してから処理するのが吉。
たぶん、sjisでやっていると思うんだけど、
ァの二バイト目=0x40、@=0x40っていうところに注目。
58nobodyさん:04/04/08 21:02 ID:???
>>53
$str = "ファイア@炎";
$str =~ /^((?:\x81[\x40-\x7e\x80-\x96\x98-\xfc]|
[\x82-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]|
[\x20-\x3f\x41-\x7e])*)/x;
$str = $1;
print $str;
59nobodyさん:04/04/08 21:14 ID:nuxHv3wJ
pack関数で困ってます。
10進数のIPアドレスを、2進数の文字列に変換したいのですが、

$num2 = unpack("B32", pack("C*", 192,50,218,168)); のIPアドレスの部分を、192,〜の固定でなくて、
ファイルから読み取りたいのですが、そこを $file と指定しても読み取ってくれません。
どう書いたらいいのでせうか・・・
6053:04/04/08 21:17 ID:???
>>58
凄い!それで無事行けました。
perlメモの、「正しくパターンマッチさせる」のsjisへの応用ですよね。

ところで、文字コードを表す部分は分かるんですが、最初の
?: と 最後の修飾詞 x の役目が良く分からないんですが・・・
? は「直前の1文字が0回または1回」ということですが、直前に何も付いてないみたいなんですが・・・
また、x (拡張正規表現)は、持ってるperl本を引いてみた所、「空白文字を無視し、#以降をコメント扱いする」とあります。
でも、空白もコメントも使ってないので、外してみたらマッチしなくなりました。
良ければこれら意味も教えて頂けないでしょうか?
61nobodyさん:04/04/08 21:18 ID:???
62nobodyさん:04/04/08 21:19 ID:???
常識じゃないのか
63nobodyさん:04/04/08 21:27 ID:???
>>60
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlre.html

改行やタブも空白文字 (white space) 。
>>58 は改行されているので /x が必要。
/x を外したかったら
/^((?:\x81[\x40-\x7e\x80-\x96\x98-\xfc]|[\x82-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]|[\x20-\x3f\x41-\x7e])*)/
とするべき。
64nobodyさん:04/04/08 21:46 ID:???
>>59
$fileには何が入ってるの?
6553:04/04/08 21:49 ID:???
>>63
あーっ、分かりました。
とんでもない勘違いしてました。空白文字を含むのは$strではなく、パターンの方ですね。
どうもこういう勘違い多いな自分・・・
これで納得できました。どうも有難うございます。
?: については、本調べてたら載ってました。前方一致、ってことですね。
perl5に追加された拡張構文であり、拡張正規表現の x修飾詞とは別に関係ない。
まぎらわしいけど、何とか覚えました。

これで何とか出来そうです。
・・・なんですが、おまけで書いて頂いた「/xを外したかったら」を実行してみたところ挙動が変です。
何度もすみませんが、こういうのどうしても気になる性質で・・・

$str = "ファイア@炎";
$str = /^((?:\x81[\x40-\x7e\x80-\x96\x98-\xfc]|[\x82-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]|[\x20-\x3f\x41-\x7e])*)/;
print $str;# マッチング判定結果表示
$str = "$1 $2 $3 $_";
print $str;

実行結果:
1

------------------------
マッチングは上手く出来てるようなんですが、その文字列がどこに格納されたのかが分からないんです。
$1 に入ってなかったので、それっぽい変数を色々乗せてみましたが全く当たりません。
いったい、どこに行ったのでしょうか・・・?
66nobodyさん:04/04/08 21:52 ID:???
>>65
マッチング?
$strに代入して何がしたい?
67nobodyさん:04/04/08 21:55 ID:???
もういいよ来るな
何でもかんでも人に聞かずにとりあえず黙って調べてテストしてを繰り返せ
6853:04/04/08 21:56 ID:???
>>66
あ(恥
すみません、単純なコードミスでした。
エラー出して欲しかった・・・ use strictしてもにエラーでなかったし
6953:04/04/08 22:00 ID:???
>>67
でも、本当に簡単なミスでも、指摘されるまで気付かないことだってありますよ。
いくらテストしても、エラー出ないからどの行が悪いのかも見当つかないし。

これで完全に解決できたので、以降書き込みには来ません。
答えてくれた方、有難うございました。
70nobodyさん:04/04/08 22:12 ID:???
> 指摘されるまで気付かないことだってありますよ。

普段どんなデバッグ手法使ってるのか良く分かった。
71nobodyさん:04/04/08 22:12 ID:???
んなもん、やってるうちに簡単なミスなんかしなくなるし
何処でミスしたかもすぐわかるようになるんだよ

一つ質問する

回答どおりしたら解決した
しかし他のわからないことも質問

解決。別の質問

繰り返し

この一連の流れの中に「自分で調べる」を入れろ
せめて2,3時間調べろ
72nobodyさん:04/04/08 22:19 ID:???
たしかに言語と自分の癖が分かってくると、あー糞またあのミスかってなるw
73nobodyさん:04/04/08 22:21 ID:???
>>72
それは財産だ。大事にするヨロシ
74nobodyさん:04/04/08 22:26 ID:???
>指摘されるまで気付かないことだってありますよ

おまいプログラムやめろ
少なくとも共用サーバでスクリプト走らせるのやめろ
7559:04/04/08 22:31 ID:1altNbSl
>>64 IPアドレスが一行づつかれたファイルです。
192.168.0.1
192.168.0.10
192.168.0.100
みたなものです。
76nobodyさん:04/04/08 23:28 ID:???
>>75
$file = '192.50.218.168';
$num2 = unpack("B32", pack("C*", split(/\./, $file)));
77nobodyさん:04/04/09 00:33 ID:PgKEk2Oq
http::liteで、対象のページの一部分だけ取り出す方法はありますか?
例えば、1MぐらいあるHTMLファイルの<title>だけを知りたいので、先頭1000バイトだけ取るとか。
78nobodyさん:04/04/09 00:47 ID:???
>>77
callback を使えばできるんじゃないかという気はするが、試してない
79nobodyさん:04/04/09 01:07 ID:6udLpUMW
cgi-lib.plを使用して、HTMLのフォームから送信したテキストを新たなHTMLページに表示
させるコードが上手く動きません。(perl ver 5.8.0 cgi-lib.pl ver 1.14)

require 'cgi-lib.pl';

&ReadParse;
$namae=$in{'NAMAE'};

print "content-type: text/html\n\n";

print "<html>";
#print $namae;
print "test\n";
print "</html>";

としているのですが、HTMLフォームからテキストを送ると「ページを表示できません」が出てしまい
うまく実行されません。cgi-lib.plをコマンドラインから実行すると、間違いなく動いているのですが、
HTMLから上記CGIを実行すると うまくいきません。
 お分かりのかたいらっしゃるでしょうか
80nobodyさん:04/04/09 01:09 ID:6udLpUMW
スミマセン ↑のコード間違いです

#!/usr/bin/perl
require 'cgi-lib.pl';
&ReadParse;
$namae=$in{'NAMAE'};

print "content-type: text/html\n\n";

print "<html>";
print $namae;
print "</html>";

というコードを書いたのですが、うまくいきません
81nobodyさん:04/04/09 01:21 ID:ruDZ3+hJ
>>80
そのスクリプトのファイル名が myscript.cgi だとして

#!/usr/bin/perl
eval {
  require 'myscript.cgi'; # あなたのスクリプトを読み込む
};
if ($@) {
  print "Content-type: text/plain\n\n$@";
}

というスクリプトを実行するとどうなります?
詳しいエラーを見る事ができるはずなんだけど。
82nobodyさん:04/04/09 01:21 ID:???
>>80
まずWWWサーバのエラーログを調べる

もしエラーログが調べられないときは、そうだな、
とりあえず改行コードでも疑ってみたらどうだ?
83nobodyさん:04/04/09 01:25 ID:???
あと疑うべきは #!/usr/bin/perl の部分とか。
84nobodyさん:04/04/09 01:25 ID:???
>>80
じゃあHTMLが間違ってるんだろ
85nobodyさん:04/04/09 01:36 ID:???
>>77
http::liteはシランが、headerでrange:を送れば鯖が一部だけ送ってくれる。
86nobodyさん:04/04/09 01:58 ID:6udLpUMW
>>81
ありがとうございます。下記のような表示が出たのですがさっぱりです(ちなみにcgiファイル名は「my.pl」

Can't locate my.pl in @INC (@INC contains: /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.
0 /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_pe
rl /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/ve
ndor_perl .) at /var/www/cgi-bin/test.pl line 3.

>>84
HTMLは間違っていないと思います
ちなみに下記
<html>
<meta http-equiv="Content-Type" content="text/html;charset=euc">
<body>
<form method="post" action="../cgi-bin/3-3-1.pl">
名前<input type="text" name="NAMAE"><p>
<input type="submit">
</form>
</body>
</html>

HTMLの文字をperlで変数に格納し、それをHTMLで表示させるだけなのですが
>>83さんもおっしゃるように perlのパスも本体CGIやcgi-lib.pl内のパスも確認したのですが
間違っていないと思うのですが、どうしてうまくいかないものでしょう
87nobodyさん:04/04/09 01:59 ID:6udLpUMW
↑のHTML間違ってました(たびたびでスミマセン)

<html>
<meta http-equiv="Content-Type" content="text/html;charset=euc">
<body>
<form method="post" action="../cgi-bin/my.pl">
名前<input type="text" name="NAMAE"><p>
<input type="submit">
</form>
</body>
</html>
88nobodyさん:04/04/09 02:08 ID:???
test.pl の 3行目にある my.pl なんて見つかりませんよと言われているが?
8979:04/04/09 02:24 ID:6udLpUMW
>>88
うーん おかしいなぁ 確かに指定したはずなのですが

CGIを実行したときのログをみてみたらこんな感じで書いてあった
Argument "NAMAE=ffffff" isn't numeric in subroutine
entry at /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/ModPerl/RegistryCooker.pm line 160.!

もう少し調べてみることにします ありがとうございました

90nobodyさん:04/04/09 04:37 ID:+yDvGh6O
既にヘッダーが送信されているか判断する方法ってありますか?
エラー表示する時に、ヘッダー(content-type)が2重になってしまう場合があるので…。
ヘッダー出力すると同時に、定数か何かでフラグ立てておけば良いんでしょうか?
91nobodyさん:04/04/09 04:39 ID:???
ヘッダーなんてただ標準出力に文字を垂れ流してるだから、判別は無理と思われ。
普通にフラグで判断しましょう。
92nobodyさん:04/04/09 04:42 ID:???
>>91
素早い返答ありがd
フラグ立てることにします。
93nobodyさん:04/04/09 08:40 ID:qDAc9oFc
質問します

やりたいこと:
掲示板の投稿済み投稿内容編集フォームで
改行を<BR>に変換して保存した本文を
<BR>を改行コードになおして
テキストエリアに投稿済みの本文を表示する

こんな風にやってみた:
1.$text =~ s/<BR>/\x0D\x0A/g;
<textarea cols=60 rows=3 name=text value=$text></textarea>
2.$text =~ s/<BR>/\n/g;
<textarea cols=60 rows=3 name=text value=$text></textarea>

両方ともだめでした。
$textの内容が空になります

よろしくお願いします。
94nobodyさん:04/04/09 08:56 ID:???
x <textarea cols=60 rows=3 name=text value=$text></textarea>
o <textarea cols=60 rows=3 name=text>$text</textarea>
95nobodyさん:04/04/09 09:02 ID:???
>>94
できました。
タグ間違いだったとは(:;´.(Θ).`;:)
96nobodyさん:04/04/09 16:05 ID:???
やりたいこと :
csvの中身を表示したい。

こんな風に自分は書いた :

open(FILE, "test.csv");
$data = <FILE>;
close FILE;
($a,$b) = split (/,/,$data);
$i = 0;
while ($i < 5){
print "$a"
$i++;
};

結果。同じ列の文字が繰り返される。。
(whileを使わなかったらずっと表示されたので
今は食い抑えてる幹事になってます。)

基本的っぽいけどサパーリなのです。
宜しくお願い致します。。
9796:04/04/09 16:30 ID:???
できました。。すいません。
98nobodyさん:04/04/09 17:03 ID:???
せめてどうやったらできたのかぐらい書いてよ。
99nobodyさん:04/04/09 17:19 ID:???
open (FILE, 'test.csv');
while (<FILE>){($_,@_) = split /,/; print;}
close (FILE);
10075:04/04/09 18:56 ID:gUQPCoa8
75 :59 :04/04/08 22:31 ID:1altNbSl
>>64 IPアドレスが一行づつかれたファイルです。
192.168.0.1
192.168.0.10
192.168.0.100
みたなものです。


76 :nobodyさん :04/04/08 23:28 ID:???
>>75
$file = '192.50.218.168';
$num2 = unpack("B32", pack("C*", split(/\./, $file)));

↑ありがとうございました。変換できました。
変換後、改行がなくなりこのように↓変換したIP文字列がつながってしまいました。
これを32文字づつ、改行したいのですが、どのような構文?を使用すればいいのでしょうか。
とっかかりが分かりませんので、さわりだけ教えていただければ後は調べますので
よろしければ教えて下さい。

=======================================================
00001100100110110111010011110011000011001101001000110000111111100000110011100101
11010011010101110000110011100110000100010010011010000001000010110110100000000001
10000001000010110110111011011010100000010000101101110100000011011000000100001011
01110100100000101000000100001011011101000011100010000001000010110111010001001010
10000001000010110111011001111000100000010000101101110110111110001000000100001011
10001011000000011000000100001011000011100000000110000001000010111001000000000010
================================================
101nobodyさん:04/04/09 19:03 ID:???
>>100
open (FILE, "ip.txt");
while(<FILE>) {
 $num2 = unpack("B32", pack("C*", split(/\./)));
 print "$num2\n";
}
close (FILE);
102nobodyさん:04/04/09 19:04 ID:???
それくらい調べろやヴォケェ!
もうくんな発言スンナ
103nobodyさん:04/04/09 19:40 ID:???
>while ($i < 5){
>print "$a"
>$i++;
>};
ワロタw
$aの中身入れてないなら同じのが出て当然だろw
104nobodyさん:04/04/09 20:01 ID:???
>>103
そっとしておいてやれよ
105nobodyさん:04/04/09 21:54 ID:???
$dellist = $query{'del'};

open(FILE, "./aborn.csv");
@list = <FILE>;
close(FILE);

@temp = ();
foreach $rr (@list){
if($rr eq $dellist){
print "$rrを削除しました<BR><BR>";
} else {
push(@temp, $rr);
print "$rrは削除せず<BR><BR>";
}
}

open(OUT, ">./aborn.csv");
print OUT @temp;
close(OUT);

以上のようなソースでプログラムを動かすと、
@listに$dellistと同じ文字列が含まれているのに、その文字列は削除されずに
else以下の「削除せず」をprintして、csvファイルからも削除されませんでした。
「eq」の部分が原因だと思うのですが、==では当然正常に動きませんし…
はて、どうしたものでしょうか。
106nobodyさん:04/04/09 22:14 ID:???
107nobodyさん:04/04/09 22:16 ID:???
chomp じゃないのか
108nobodyさん:04/04/09 22:16 ID:???
だな
109105:04/04/09 22:26 ID:???
Active Perlでローカルな環境で動かしたらリストからの削除ができなかったのですが、
今サーバーにアップロードして試してみると、リストからの削除が行えました。

変わりに、文字化けが起こるようになりましたが…

謎。


>>106-108
なるほど、eqにこだわらずneで組めばelse文がいらないというわけですか。
参考になります。
11079:04/04/09 23:21 ID:6udLpUMW
>>79ですが 自己解決しました
下記のようにコードを直したら無事cgi-lib.plが処理してくれました

(訂正前) &ReadParse;         (訂正後)&ReadParse(*in);

実はこのコード、本にのっていたやつなんですけど、本が間違ってたんですかね。
いろいろ調べた結果&ReadParseの後ろに(*in)を付けないと フォームから渡された
データが in に入らないんですね。 なんかやられたって感じです。

でもみなさんにいろいろ教わった結果、perlのエラーはapacheのログみれば分かることや
その他いろいろのことを知ることができました。アドバイスいただいたみなさん ありがとう
ございました
111nobodyさん:04/04/10 00:15 ID:???
>>110
&ReadParse; だけでもできるが。
cgi-libが古いんじゃないか?
112nobodyさん:04/04/10 00:16 ID:???
多分もの凄く基本なんだと思いますが質問させてください。
日本語の表示についてです。
WindowsXP、AN HTTPD、ActivePerl5.8です。
ソースの文字コードはeucです。


use Encode;
use encoding 'euc-jp';

my $x = "あ";
print $x;


これだと文字化けしてしまいます。
Encode::from_toやEncode::encodeなどで$x文字コードを変換しても上手くいきません。

一応ググッてはみたのですが、見つかったPerl5.8の解説ページはどれも中級者向けといいますか、
読者が5.6以前の文字コードの扱いやjcode.plの扱いを理解しているという前提で書かれたようなものばかりで、
今から5.8でPerlを勉強しようという入門者向けに日本語の扱いを解説したページを見つけられませんでした。
113nobodyさん:04/04/10 00:44 ID:???
>>112
おまいさんの思ってる「文字化け」の定義を述べよ。
ブラウザ側でエンコードを euc-jp として指定してやれば普通に見えるんじゃないか?
114nobodyさん:04/04/10 01:04 ID:???
>>112
windowsのコンソールに表示させてる?
ならeuc-jpじゃなくてsjisで書いてencode指定すれば
とりあえず正しく表示される。

こんなのもちゃんと通る。
use encoding 'sjis';
my $x = "ソースを表示";
print "$x(";
print length $x;
print "文字)\n";
$x =~ s/表/提/;
print $x;
115nobodyさん:04/04/10 01:05 ID:???
>>112
ソースの文字コードがeucで、ブラウザにeucを出力するのに
わざわざモジュールを呼ぶ必要があるのかと。
116nobodyさん:04/04/10 01:31 ID:???
>>112
その$xはUnicodeだよ?
117112:04/04/10 02:22 ID:???
ありがとうございます。なんとか表示することができるようになりました。
新しく覚えたことはまず拡張子plでwindowsのコンソールで試し、その後CGIにして動かす、というやり方で勉強していました。
今回は最初のコンソールの段階で上手くいかなかったので、その後のCGIでブラウザ表示するのをやっておりませんでした。
レスを見て、CGIでのブラウザ表示を試したところ、eucで表示が確認できました。

>>113
というわけで、そもそもブラウザでの表示を試していませんでした。

>>114
ご指摘の通り、コンソールで表示させておりました。
ソースをsjisにすることでコンソールでも表示できました。
sjisだと色々問題が発生するのでソースはeucが基本、と書いてあるHPを読んだのでeucにしておりました。

>>115>
Perl5.8だと内部ではUTF8でどうのこうの、というあたりでかなり頭が混乱しております。
なんとか「あ」が表示できたので、これをとっかかりに詳しく勉強していこうと思います。

>>116
そのへん、まだ混乱しています。is_utf8($x)だと真になるので、UTF8なのか。
でも結局無変換のままで上手くいったので、やっぱりeucなのか。
UTF8フラグの立ったeuc??
この辺がまだきちんと理解できてないので、近いうちにまた壁にぶつかる予感です。
118nobodyさん:04/04/10 20:34 ID:H+y5o94i
Perlスクリプトでhttp-referrerの偽装は可能でしょうか?
リンク先に飛ぶときhttp-referrerに任意のURLをぶち込んで飛ぶということは可能でしょうか?
119nobodyさん:04/04/10 20:43 ID:???
>>118
できます。
ぐぐればサンプルはいくらでも見つかります。
120nobodyさん:04/04/10 20:44 ID:???
CGIスレへどうぞ。
121118:04/04/10 20:53 ID:H+y5o94i
>>119-120
レスありがとうございます。
CGIスレ見てみましたが、出来ないっぽいですね?
122nobodyさん:04/04/10 21:06 ID:???
リファラはクライアントが勝手に吐くからね。
サーバーからはどうにもならんでしょう。
2chみたいにワンクッションさせてみるとか?
123nobodyさん:04/04/10 21:51 ID:???
>>118
プロキシかブラウザを作るしかないでしょ。
124nobodyさん:04/04/10 22:07 ID:zPwA0QL/
とりあえず use strict; しとけっていうのを見たんでやってみたんですが、
下のスクリプトが上手く動かないんです

use strict;
{
package Config;
$host = "www.example.com";
}
package main;
print "host = $Config::host\n";

use strictしているときは、$Config::host = "www.example.com"; って書かないといけないみたいですが
これじゃあ、package Configの意味がないですよね?
package Config; のあとに no strict; っていうのを入れないといけないんですか?

どうしたらいいんだろう・・・おしえて。
125118:04/04/10 22:07 ID:???
>>122-123
やっぱそれしかないですね。
126nobodyさん:04/04/10 22:22 ID:???
$e1=int(rand(6));
$e2=int(rand(6));
while($e2==$e1){
$e2=int(rand(6));
}
$enemy3=int(rand(6));
while($e3==$e1 or $e3==$e2){
$enemy3=int(rand(6));
}
1〜6から、ランダムで3つの数字を重複なしで、
取り出すプログラムなんですけど、
しょぼいですよね・・・
なにか華麗な方法知ってる方いれば、教えて下さい。

127nobodyさん:04/04/10 22:24 ID:???
みすった><
$e1=int(rand(6));
$e2=int(rand(6));
while($e2==$e1){
$e2=int(rand(6));
}
$e3=int(rand(6));
while($e3==$e1 or $e3==$e2){
$e3=int(rand(6));
}
128nobodyさん:04/04/10 22:34 ID:???
>>124
プラグマの影響範囲を誤解している。
http://perldoc.com/perl5.8.0/pod/perlmodlib.html

>>126
1..6 をランダムな順序で持つ配列から 3 つ取り出す。
http://www.din.or.jp/~ohzaki/perl.htm#ArrayRandom
129nobodyさん:04/04/10 23:02 ID:???
>>124
use strictの意味も分からずuse strictしても意味無いですよね?

perl5.6.0未満のバージョンなら
{
package Config;
use vars qw($host);
$host = "www...";
}
perl5.6.0以上のバージョンなら
{
package Config;
our $host = "www...";
}
# ...
print $Config::host;
130nobodyさん:04/04/11 00:07 ID:???
>>126
何スレか前に同じ質問があった。
そのときは確か、List::Utilが使えれば一番早くて楽だっていう
結論だった気がする。

use List::Util qw(shuffle);
($enemy1,$enemy2,$enemy3) = shuffle 1..6; #@enemy[0..2] の方がいいと思う。
131nobodyさん:04/04/11 00:12 ID:???
132nobodyさん:04/04/11 00:26 ID:???
>>129
Perl 5.8.0使っているので、下のほうを参考にさせてもらいます。
use strict;はとりあえずつけとけと よく見るのでつけてみました。
とりあえず変数はmyつけて宣言しとくといい らしいので。
packageのなかでは our というのをつけるんですね。
>>128
プラグマですか。自分の持っている本にも少ししか触れていないし、
難しそうな考え方ですね・・・。

知らないのに何かができるわけも無いので、
頑張って勉強します。どうもありがとう、でした
133nobodyさん:04/04/11 00:36 ID:???
分かった!
package内ではourをつけて宣言するんだ
(mainの中でmyをつけて宣言するのと同じように・・・ってmyの複数形なんだな)。
package内で$varとしたらグローバルになっちゃうわけですね。
134nobodyさん:04/04/11 01:34 ID:???
>>133
全然違うし。
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlmod.html

my 変数はシンボルテーブルで管理されていないので、同じファイル上で
宣言されていれば名前空間が変わっても参照できる。strict プラグマの
影響範囲も同様。

#!/usr/bin/perl
use strict;
package Foo;
my $foo = 'foo!'; # strict vars の影響範囲内
package Bar;
print $foo; # foo!
__END__

vars プラグマや our によって宣言された変数は strict のチェック
対象外となるだけでグローバル変数と同等。シンボルテーブルで管理
されているから $Config::host のようにパッケージ名から指定すれば
外部から参照できる。

あと標準モジュールに Config.pm があるので、パッケージ名に
Config を使うのは止めた方がいい。
135nobodyさん:04/04/11 04:40 ID:???
#!/usr/local/bin/perl
use strict;
use warnings;
use sigtrap;
use diagnostics;

&main;
exit;

sub main {
 my $val1 = 1; our $val2 = 2;

 &test;

 print '$val1(' . \$val1 . qq|="$val1"\n|;
 print '$val2(' . \$val2 . qq|="$val2"\n|;
# print '$val3(' . \$val3 . qq|="$val3"\n|;
# print '$val4(' . \$val4 . qq|="$val4"\n|;

 sub test {
  my $val3 = 3; our $val4 = 4; $val1 = 5; $val2 = 6;
  print '$val1(' . \$val1 . qq|="$val1"\n|;
  print '$val2(' . \$val2 . qq|="$val2"\n|;
  print '$val3(' . \$val3 . qq|="$val3"\n|;
  print '$val4(' . \$val4 . qq|="$val4"\n|;
 }
}
136nobodyさん:04/04/11 08:05 ID:???
>>117
まー大体予想通り。
>sjisだと色々問題が発生するのでソースはeucが基本、と書いてあるHPを読んだのでeucにしておりました。
最近の Perl では
>Perl5.8だと内部ではUTF8でどうのこうの
の通りコード変換を行うのでとりあえず大丈夫。
ポイントは use encoding の役割。
・ソースコードの文字コード指定(Perl がソースを解釈する際、この文字コードから UTF-8 に変換)
・標準入出力の文字コード指定(STDIN, STDOUT に対する入出力をこの文字コードに変換)
の 2 つ。つまり、>>112 のコードでは
ソースコードでは euc → Perl 解釈時に UTF-8 に変換(よってis_utf8($x)が真) →
print で(STDOUT)に出力される時点で再び euc に変換
という流れ。詳しくは perldoc encoding 参照。
137nobodyさん:04/04/11 08:29 ID:???
>>132
パッケージだとかモジュールだとかについて詳しく知りたければ、「続・初めてのPerl」を
読むといいかもしれない。
正直この本に「続・初めてのPerl」とタイトルをつけるのは間違ってるという気もするけどね。
表表紙も「Perl オブジェクト、リファレンス、モジュール」っていう副題の方が文字でかいし。

>>134
細かいことだけど、正確には同じファイル上で、じゃなくて同じブロック(の前方)で、だよね。
138nobodyさん:04/04/11 10:29 ID:???
>>137
ファイルスコープはブロックじゃないので、より正確には
<q>
my と local は、変数 (my の場合) やグローバル変数の値 (local の場合)
を、それをとり囲むブロック、サブルーチン、eval 、またはファイルの中が
有効範囲となるように宣言する。<cite>駱駝本 2nd Edition 2.6.8</cite>
</q>
だね。
139nobodyさん:04/04/11 12:37 ID:e6FKOv37
連想配列の配列数を取得するにはどうしたらいいのでしょうか?
foreach(keys(%a)) { $i++ } のように一個一個数えていくしかないのでしょうか?
140nobodyさん:04/04/11 12:41 ID:???
scalar(keys %a);
141nobodyさん:04/04/11 13:10 ID:e6FKOv37
>>140 ありがとうございます
142nobodyさん:04/04/11 13:53 ID:e6FKOv37
もう一個おながいします。
クラスでインスタンス毎に別個の値を保存したい連想配列があるのですが
どういう風に実装すればいいのかわかりません。
以下のようなコードだと複数のインスタンスから%aにアクセスされると
まずいことになっちゃいますよね?

my %a;

sub new {
my $self = shift;
my $obj = {
name => shift
};
bless $obj,$self;
$obj;
}

143nobodyさん:04/04/11 14:24 ID:???
>>142

sub new {
my $self = shift;
my $obj = {
name => shift
};
bless $obj,$self;
$self->{HOGEHOGE} = {};
$obj;
}
144nobodyさん:04/04/11 15:12 ID:U2PVfz4j
#!/usr/local/bin/perl
$addr = (gethostbyname("hogehoge.com"))[4];
$name = pack("S n a4 x8", 2, 80, $addr);
socket(S, 2, 1, 0);
connect(S, $name);
binmode(S);
select(S); $| = 1; select(stdout);
print S "GET /index.html HTTP/1.0\r\n\r\n";
while (<S>) { print; }
close(S);

なんて事をやったんだが、http://hogehoge.com/index.htmlのソースが表示されるワケではなく
HTTPヘッダが表示された。

ヘッダは良いからindex.htmlのソースを読みたいんだけど、どうやればいいのかGoogle検索してもわからん
どうやるんすか?
145144:04/04/11 15:26 ID:U2PVfz4j
すまん、自己解決。
自分ではまだ作れないからとりあえず他人作の関数使うわ

理解は後回し
146nobodyさん:04/04/11 15:26 ID:???
まずはそのヘッダに何が書かれていたか読めるようになるべきだな。
でなければLWP使え。
147nobodyさん:04/04/11 15:34 ID:e6FKOv37
>>143
ありがとうございます
148nobodyさん:04/04/11 17:59 ID:9ah7xv1/
# <> <= Not select Handle

<> ; # ! <STDIN>;

open File,"$ARGV" or print $!,"\n";
# Not ($ARGV[0] and @ARGV);

while(<File>){print;}
close File;

なぜに動くのか ???
デバックするとよけーに分からん

猿でも分かる説明 お願いします
149nobodyさん:04/04/11 18:32 ID:???
>>148
<>は<ARGV>と同じ。

ファイルハンドルARGVは*最初に<>/<ARGV>を評価した時に*@ARGVの、
中身をファイル名のリストと見なし、$ARGV[0] .. $ARGV[n]を順に暗黙のうちにopenする。
中身がなければSTDINと同じ。
そして、この暗黙のopenの時$ARGVに開くファイルの名前を入れる。

ここまで分かれば>>148の動作も理解できるだろ?

つーかどのような経緯で>>148のようなコードを書くことになったのか非常に興味がある。
普通のスクリプトでそんなコードがあったら素で作者の正気を疑うぞ。
150nobodyさん:04/04/11 19:09 ID:???
>>149
「Perlはこんなに省略できる」って意味の例文じゃなかろうか。
151ちょー素人:04/04/11 19:23 ID:UpvZGEBT
パール、C言語、PHPとかいろいろなCGIがあるけど
この使い分けの意味がよく分かりません。
サーバーによって使える言語が違うということでしょうか?
152148:04/04/11 19:25 ID:???
<> と <STDIN> の
明確な違いを知りたかったので
自分で書いてみますた

もっと分かりやすい
スクリプトあれば教えてくだされ
153すれ違い:04/04/11 19:41 ID:???
>>151
そゆこと。使いたいサーバーの使用可能言語を調べてみ?
Perlは使えない方が珍しいがCは使える方が珍しい。
154nobodyさん:04/04/11 20:46 ID:???
>>153
ぉぃぉぃ嘘おしえちゃいかんよ
Perlなんて化石言語使える鯖の方が少ない
今は殆どC
155nobodyさん:04/04/11 20:53 ID:???
僕もCGIの汎用比率が気になる初心者です。
今から勉強するとしたら何を学んだほうがいいのでしょうか?
ちなみに会社ではパルとPHPがメインみたいです。
156nobodyさん:04/04/11 20:59 ID:???
>>155
1レス前も読めない香具師は何をやってもダメ。
ってかその前にスレタイも読めませんか、そうですか。
157nobodyさん:04/04/11 21:07 ID:???
>155
マジレスすると、「なにをやりたいか」による。
会社でPerlとPHPがメインなら、そっちに磨きをかけた方がいいかもしれない。
会社がその後、ASP.NETなんかに転ぶ可能性があるなら、今のうちに勉強しておくのもいいかもしれない。


それよりもそろそろPerlのコーディングの質問はこないものか。
158nobodyさん:04/04/11 21:15 ID:???
>>150もわかってないみたいだから解説してやるよ
>>152もこれ見て分からなきゃ「初めてのPerl」を百回読め

# 初めて<ARGV>とされた時に呼ばれる関数
sub __initialize_argv__{
  unless(defined fileno ARGV){
    @ARGV = ('&STDIN') unless @ARGV;
    $__internal_index__ = 0;
    $ARGV = $ARGV[$__internal_index__++];
    open ARGV, $ARGV
      or die "Can't open $ARGV: $!";
  }
}

# <>;
__initialize_argv__();
<ARGV>;

あとはARGVがEOFに達すると自動的に$ARGV[$__internal__index++]をopenするというわけだ。
159nobodyさん:04/04/11 22:36 ID:???
さすがに>>154の釣りに騙されるやつは居ないな
160148:04/04/11 22:41 ID:???
>>158
この関数どこで定義されてんの?
161nobodyさん:04/04/11 22:46 ID:???
>>160
ユーザーは呼べない。いい加減にしろ。
162148:04/04/11 23:00 ID:???
>>161
>ユーザーは呼べない。いい加減にしろ。

ならどうして調べたのさー
 。。。。。と逆切れしてみる w
163nobodyさん:04/04/11 23:31 ID:???
書き方間違ってますか?

if (!-e image/$new){
mkdir("image/$new",0777);
chmod(0777, "image/$new");
}


164nobodyさん:04/04/11 23:34 ID:???
間違ってます。
165163:04/04/11 23:42 ID:???
ミスってた・・解決しました。
理由は
if (!-e image/$new){

if (!-e "image/$new"){
にするのわすれてました・・・。゚(゚´Д`゚)゚。
166nobodyさん:04/04/12 02:29 ID:???
>>163

if (mkdir("image/$new", 0777)) {
chmod(0777, "image/$new");
}
elsif (!-d "image/$new") {
die;
}
167nobodyさん:04/04/12 02:51 ID:???
>>166
既にimage/$newがディレクトリとしてあった場合は?
168nobodyさん:04/04/12 03:42 ID:???
ちょっとまってchomodする必要あんの?
169nobodyさん:04/04/12 04:10 ID:???
あるわけないよね
170nobodyさん:04/04/12 06:57 ID:???
鯖でumaskされてる時に意味があるんじゃ?
umask効いてる時は、mkdirのパーミッション指定が効かなかった記憶がある。
171nobodyさん:04/04/12 08:05 ID:???
>>167
無問題。
172nobodyさん:04/04/12 10:13 ID:???
文字列を裸で書く神経が分からん。
173nobodyさん:04/04/12 11:40 ID:???
はだかぢゃいやぁーんおーしーまーやーのりっ♪
174nobodyさん:04/04/12 18:49 ID:DgDkioXO
ある文章の / の前と後ろを分けて、それぞれスカラー値にしたいのですが、
(例)japan/korea どのような構文を使えばいいのでしょうか?
175nobodyさん:04/04/12 18:50 ID:???
「split perl」でググってもうここには来るな。
176nobodyさん:04/04/12 18:54 ID:???
エスケープ忘れにはまる予感
177nobodyさん:04/04/12 18:57 ID:???
175 + \つけてもうここには来るな。
178nobodyさん:04/04/12 19:02 ID:???
代入の仕方が分からずにはまる予感
179nobodyさん:04/04/12 19:38 ID:???
177 + perlでは=が代入だからもうここには来るな。
180nobodyさん:04/04/12 19:42 ID:???
リストとしての受け取り方が分からずにはまる予感
181nobodyさん:04/04/12 19:57 ID:???
まんどくせ。
($hoge,$foo) = split /\//, 'japan/korea';
こんな感じですんでまた来てね♥
182nobodyさん:04/04/12 20:12 ID:???
何だかんだ言いつつおまいら優しいですな。
183nobodyさん:04/04/12 22:06 ID:???
$bagu = "表示不可能な予感";
# 侮ヲ不可狽ネ頼エ
これってもちろんPerlのバグですよね?
184nobodyさん:04/04/12 22:09 ID:???
>>183
それってもちろんネタですよね?
185nobodyさん:04/04/12 22:39 ID:???
>>183
「侮ヲ perl」でgoogle検索。
186nobodyさん:04/04/12 22:48 ID:???
>>183
表☆示
ってやれば大丈夫!
187nobodyさん:04/04/12 22:51 ID:???
教えてください。

PERLで「cgiを呼び出すHTML」を吐き出すcgi を作ったのですが
クエリーがうまくわたらないのです。

1.最初の(固定の)HTMLでは、ファイル中のクリッカブルマップからたとえば

  test1.cgi?hogehoge

をリンクしています。

2.test1.cgiでは QUERY_STRING から hogehoge を取り出し
 データファイルと照合して hogehogehoge というアイテム名を取り出してるので

 HTMLファイルに、

<A href="test2.cgi?hogehogehoge> と出力させています。

3.test2.cgi では、 QUERY_STRING から hogehogehoge を取り出すようにしているのですが

 ここで 空文字列しか来ていないようで、2.のHTMLファイルのリンクをクリックするとエラーです。

 test2.cgi は確かに呼び出しています。

一連の動作でやるとエラーなのですが、2.のHTMLが表示された段階でブラウザにソースを吐かせ、
それを別のHTMLファイルとして起動してやると、そこからのリンクでは、test2.cgi にちゃんと
hogehogehoge が渡っています。

何か設定を忘れているでしょうか?
188nobodyさん:04/04/12 23:11 ID:???
<A href="test2.cgi?hogehogehoge>
         ↓
<A href="test2.cgi?hogehogehoge">
189nobodyさん:04/04/13 00:51 ID:???
ちょっと教えてください。

Redhat8.0のperl5.8.0でLWP使って
レスポンスヘッダを編集したいんですが、
newの書式が分からないです。マジで。

require HTTP::Response;
$rc = '200';
$msg = 'OK';
$header = 'Accept-Ranges: bytes\n';
$header .= 'Content-Length: 186965910\n'
$header .= 'Content-Type: text/html\n\n';
$content = '';
$res = HTTP::Response->new($rc, $msg, $header, $content);

print "$res";

と書いたんですが、InternalServerErrorで進めません。
HTTP::Responseでレスポンスヘッダを編集する方法教えてください
お願いします。
190nobodyさん:04/04/13 01:00 ID:???
>>189
なんかグタグタですな。。。
use HTTP::Response;

$header =<<"EOS";
Accept-Ranges: bytes
Content-Length: 186965910
Content-Type: text/html

EOS

186 MB の HTML なんてブラクラですね。。。
191189:04/04/13 01:04 ID:???
>>190
お早い回答ありがとうございます。
いや、ヘッダー情報をいじったり削除したかっただけなんで、
値はどうでも良いかと思ってテキトーに設定しました。気をつけます。
192nobodyさん:04/04/13 07:51 ID:???
print "ソkソ泣|";

Windowzで「ヌルポ」と文字化けします。
これってもちろんPerlのバグですよね?
193nobodyさん:04/04/13 08:21 ID:OVsnEkWR
ごくシンプルな日記スクリプトをPERLで書いているのですが、
TEXTAREAの内容について改行の処理をしようとすると
数字の羅列になってしまいます。

  $msg = $FORM{'msg'}; #バッファからセット。URLデコード済。
 # $msg = ~ s/\r\n/<BR>/g;

この状態だと「$msg」の中身はちゃんと文字列になっているのですが
下のコメントをはずすと途端に数字の羅列になります。
(文字列を変えても同じ数字になります。)
どうすればこの状態を回避できるでしょうか?
194nobodyさん:04/04/13 08:29 ID:???
すみません。自己解決しました
  $msg =~ s/\r\n|\r|\n/<BR>/g;
このようにコーディングしてみたらいけました。
195nobodyさん:04/04/13 10:30 ID:???
>>194
試しにこう書いてみよう。
$msg = ~ s/\r\n|\r|\n/<BR>/g;

~ の意味を調べてみよう。
196nobodyさん:04/04/13 15:08 ID:???
time()で返す秒数って、
何かちゃんとした名前があったような気がしたんだけど。
何だっけ。

カタカナ4文字でスがついたような気がする。
197196:04/04/13 15:09 ID:???
ごめん、ユリウス暦と混同している可能盛大。
名前がなかったかも。
198nobodyさん:04/04/13 15:42 ID:sCIWFJ4B
HTMLに、DBに入れられたクレジットカード番号を
表示させる、ということをやっています。
番号が入っているcar_numフィールド(11番目)には
[****-****-****-****]
という形でデータが入っています。
しかし、番号確認画面でその末尾4ケタのみ表示させたいのですが、
なかなか良い考えが浮かびません。
今は以下のように書いて丸々16ケタ表示させています。
諸先輩方、アドバイスよろしくお願いいたします。

<tr>
END
if ($odr[10] == 2){
print"$odr[11]"
}
print <<END;
</td>
199nobodyさん:04/04/13 16:05 ID:???
>>196
あるよ。エ・・・秒
なんだったかな思いだせん。。
200199:04/04/13 16:05 ID:???
わかった
エボック秒だわ
201nobodyさん:04/04/13 16:05 ID:???
>>196
ヒント:シルバニアファミリーと言えばこの会社。かつてはカセットビジョンなど
家庭用ゲーム機も出していた。
202199:04/04/13 16:06 ID:???
ごめん。たぶんエボックじゃなくてエポック。
203196:04/04/13 16:41 ID:???
>>202
おー、それそれ。
お礼に自分の屁が臭い時に喜びを感じる性癖をプレゼントします。
204nobodyさん:04/04/13 16:46 ID:???
>>203
それは俺の性癖だが何か?
205nobodyさん:04/04/13 18:00 ID:???
dfで取得したディスク使用量のデータから一部の数字だけ
抜き出してPERLで使いたいのですが、どうすれば良いのでしょうか?
例えば

$string = "FilesystemSizeUsedAvailCapacityMounted on"

の一行から、Size, Usedだけを取り出して使いたいとすると、
@pairs = split(/(\t)/, $string);
print "@pairs[1] @pairs[2]";
としても上手く行きません。(\s)*でも無理なようです。
206nobodyさん:04/04/13 18:18 ID:???
@pairs = split(/\t/, $string);
print "$pairs[1] $pairs[2]";
207205:04/04/13 18:21 ID:???
>>206
@pairs = split(/\t/, $string);
だと、何故か全て@pairs[0]に全文が入ってしまい、
@pairs[1]以降は空になってしまうようです。
208nobodyさん:04/04/13 18:36 ID:???
>>207
$stringは本当にタブ区切りになってるのか?
209205:04/04/13 18:40 ID:???
何を区切りに使っているかは、良くわかりません。
shellのdfコマンド出力から一行抜いてきたstringです。
dfは何を使って区切っているのでしょう?

Filesystem 512-blocks Used Avail Capacity Mounted on
/dev/disk1s9 39870600 36823240 3047360 92% /Volumes/disk1
/dev/disk3s2 320144448 267850648 52293800 84% /Volumes/disk2
210nobodyさん:04/04/13 18:42 ID:???
>>205-206
何も調べずに的外れなコードを書く奴もDQNだが、解答する奴もそれに劣らずイカレてるな。

>>205
> データから一部の数字だけ
とあるのにコードに数字が一切ないのは何故だ?

my(@data) = ($string =~ /([A-Z][a-z]+)/g);
print "$data[1], $data[2]\n";

お前の望むことはとりあえずこれで出来るが、本当にこんなことがしたいのか?

211nobodyさん:04/04/13 18:44 ID:???
ざっと読んだだけだからよくわからんが
$stringを切って配列に代入しようとしてるなら
$stringをprintしてみれば何区切りかわかることだろ。
212nobodyさん:04/04/13 18:48 ID:???
>>209
⊂⌒~⊃。Д。)⊃ ダァーーーッ
213210:04/04/13 18:50 ID:???
>>209
おいおい…(絶句)
もう何も言うまい。ほらよ。

my %data;
my @fileds = ('Filesystem', '512-blocks', 'Used', 'Avail', 'Capacity', 'Mounted on');
@data{@fields} = split / /, $string;

use Data::Dumper;
print Dumper(\%data);
214nobodyさん:04/04/13 19:00 ID:???
>>213
…ハァ

split ' ', $string;
215205:04/04/13 19:00 ID:???
「現在、??? gbのうち??? gb使用されています」
みたいな感じの文章出力に使う用です。
216nobodyさん:04/04/13 19:06 ID:???
知るかヴォケ
どうしてもperlでそれをやりたいんなら
>>1やらテンプレのリンク先で基本ぐらい勉強して来い。
217nobodyさん:04/04/13 19:08 ID:???
近年まれに見る痛さだ
218nobodyさん:04/04/13 19:36 ID:???
普通にできるけど?

WinXP+cygwin使用
$ df -h /cygdrive/c | perl -MData::Dumper -ne 'print Dumper split /\s+/'
$VAR1 = 'Filesystem';
$VAR2 = 'Size';
$VAR3 = 'Used';
$VAR4 = 'Avail';
$VAR5 = 'Use%';
$VAR6 = 'Mounted';
$VAR7 = 'on';
$VAR1 = 'c:';
$VAR2 = '74G';
$VAR3 = '39G';
$VAR4 = '35G';
$VAR5 = '52%';
$VAR6 = '/cygdrive/c';
219205:04/04/13 19:40 ID:???
@data = split ' ', $string;
で出来ました。ありがとうございます。
220nobodyさん:04/04/13 23:40 ID:???
>188
187で質問した者です。

WEB動作環境は勤め先にあるので返答が遅れました。(アクセス制限がかかってるので)

ここに書いた例が間違っていて、実物はちゃんとダブルクォート閉じてました。
いろいろやってみて、どうも

A. CGIが出力したHTMをそのまま(連続で)表示した場合と、
B. それをソース表示して「保存」し、改めて表示した場合で

振る舞いが違うようです。こんなことがあるのかいなと思うのですが...

A.B.のHTMでは、hrefを使って別のCGIを引数つきで呼んでます。

そのCGIを、サーバにあった ENV.PL(環境変数を表示するやつらしい)と換えてみると
Bで表示される環境変数の多くがAでは出てこず、QUERY_STRINGもありませんでした。
(空文字列でなく、環境変数そのものが出て来ない)

ひょっとするとPERLの問題ではないかもしれませんが、スレ違いなら誘導してください。

明日はサーバーを変更してやってみます。
221nobodyさん:04/04/14 00:50 ID:???
こういうことじゃないの?
x <A href="test2.cgi?hogehogehoge">
o <A href="http://〜/cgi-bin/test2.cgi?hogehogehoge">
222nobodyさん:04/04/14 02:28 ID:???
>>220
当然、test1.cgiとtest2.cgiは同じフォルダにあるよね。
223nobodyさん:04/04/14 06:12 ID:???
>221,222
回答ありがとうございます。
最初の例では詳しく書いていませんでしたが、どちらのCGIの参照も
http:// から記述してます。(厳密には場所は一段違うところ)

222もそういう主旨ですよね?
224nobodyさん:04/04/14 15:57 ID:???
スレ違いなので↓でどうぞ

CGI: Common Gateway Interface part 11
http://pc5.2ch.net/test/read.cgi/php/1055597189/
225nobodyさん:04/04/14 19:03 ID:ALtQW+6b
>224
187,220,223です。

誘導ありがとうございました。実は、サーバー変更(自分のPCでAN HTTPD走らせて)したら
問題なく環境変数が渡りました。問題のあったサーバーはNT+IISです。

どうもCGI機能まわりのようなので、あちらで聞いてみます。お騒がせしました。
226nobodyさん:04/04/14 20:57 ID:1L/HDnzJ
初歩的な質問なのですが、なかなか検索できずに
こちらへ質問させて頂きます。

a.pl
b.pl

というスクリプトで、a.plからb.plへ標準出力で引数を渡し
b.plで受け取った引数を加工して、同じく標準出力で
a.plへ返すには、どうすれば良いのでしょうか?

open(FD,"./b.pl data1 data2 |");
という感じでやってみたのですが、a.pl⇒b.plへ
うまく渡されません。

どなたか、ご教授お願い致します。
227nobodyさん:04/04/14 21:06 ID:???
open(FD, "| ./b.pl");
228226:04/04/14 21:38 ID:1L/HDnzJ
thx
229nobodyさん:04/04/15 14:38 ID:???
format DATA =
@<<< @<<<<<< @<<<<<< @<<
$a $b $c $d
.
write;

で出力される物を掲示板などのhtmlに出力したいのですがどうすればいいでしょか?
print format DATA;
みたいなアホな事してみましたがやはりエラーです。
ぐぐっても該当しそうな記事がみつからないし図書館のperlクックブックは
貸し出し中・・
先輩方よろしければお助けください。
230nobodyさん:04/04/15 15:06 ID:???
( ゚Д゚)ポカーン...
231229:04/04/15 15:19 ID:???
もしかして私はとてつもなくトンチンカンな事をしていますか?
232nobodyさん:04/04/15 17:41 ID:???
>>229
format =
@<<< @<<<<<< @<<<<<< @<<
$a $b $c $d
.
write;

formatは半角スペースでレイアウトするからhtmlへ出力するなら
<pre>で囲んで使うとかしないと。
固定ピッチになって間が抜けて見えるから掲示板には向かない気がするが。
233nobodyさん:04/04/15 19:27 ID:???
>>229
write FILEHANDLE
234nobodyさん:04/04/15 21:01 ID:???
>>233
前後をよく見て答えましょうね
235233:04/04/15 22:16 ID:???
>>243
あ、writeでエラーになるってことね…。

format DATA =
@<<< @<<<<<< @<<<<<< @<<
$a,$b,$c,$d
.
$~ = 'DATA';
write;
236nobodyさん:04/04/15 22:22 ID:???
フォーマット名を省略すればSTDOUTと見なされるんだからそんなことしなくても
237nobodyさん:04/04/16 03:04 ID:OgytMPQd
無名ハッシュのキー一覧を得たいんですがどうやればいいのでしょうか?
key $hash
key %$hash
と色々やってみたのですが 「keyの引数はハッシュじゃないとダメ」とエラーになります
238nobodyさん:04/04/16 03:09 ID:OgytMPQd
すいません、解決しました
239nobodyさん:04/04/16 03:19 ID:5vM41xl8
グローバル変数の値が初期値に戻ってしまいます
なぜでしょう?
240nobodyさん:04/04/16 03:24 ID:???
>>239
そうなるようなコード部分があるから
241nobodyさん:04/04/16 03:27 ID:5vM41xl8
>>240
どのような記述をすると初期値に戻ってしまうのか
教えて下さいませ
242nobodyさん:04/04/16 03:35 ID:???
初期値を代入した部分が再度実行されれば戻るでしょ。
そもそもそういう質問をすることからして何か勘違いしてる可能性もあるが。
243nobodyさん:04/04/16 03:45 ID:5vM41xl8
>>242
役立たずですね
244nobodyさん:04/04/16 03:56 ID:???
まじめに答えてるわけじゃないしな
暇つぶしなだけ
245nobodyさん:04/04/16 03:59 ID:2Due2Uz0
>>244
早く寝ろ
246nobodyさん:04/04/16 04:03 ID:???
おはよ
漏れは今起きた
247nobodyさん:04/04/16 04:03 ID:???
はいはい、寝ますよ( ´,_ゝ`)プッ
248nobodyさん:04/04/16 05:09 ID:5vM41xl8
>>247
自力で解決しました。
役立たずさんは早く寝てください。
249nobodyさん:04/04/16 06:03 ID:???
どうやって解決したかは書かないのな(プゲラ
250nobodyさん:04/04/16 06:56 ID:???
>グローバル変数の値が初期値に戻ってしまいます
>なぜでしょう?

これでどう解決すればいいんだよ
き違いはイラク行ってろ
251nobodyさん:04/04/16 09:58 ID:???
Perlって変わってるよね。
252nobodyさん:04/04/16 10:28 ID:???
そこがいいよね
253nobodyさん:04/04/16 10:33 ID:???
解決してないけど苦し紛れに書いちゃったんだよ。察してやれよ
254229:04/04/16 10:48 ID:???
>>232
>>233
>>234
みなさん、ありがとうございました。うまく出力できるようになりました。
あれから起動hddが逝って換装後os再インストなどでご報告遅れてしまいました。

>>232
ん〜そうですねぇ。間が抜けてみえちゃいますねぇ。
一応管理用のデータ表示程度に出力させたかったので御の字なんですが
本当はこれ以外の出力のさせ方しらなかったのです。
純粋にプログラム初心者なperl初心者なのでhtmlタグの知識などもほとんどなかったり。
ほかにも出力の出し方探してみようと思います。どうもでした。
255nobodyさん:04/04/16 11:25 ID:???
239 名前:nobodyさん 投稿日:04/04/16 03:19 ID:5vM41xl8
グローバル変数の値が初期値に戻ってしまいます
なぜでしょう?


240 名前:nobodyさん 投稿日:04/04/16 03:24 ID:???
>>239
そうなるようなコード部分があるから


241 名前:nobodyさん 投稿日:04/04/16 03:27 ID:5vM41xl8
>>240
どのような記述をすると初期値に戻ってしまうのか
教えて下さいませ


242 名前:nobodyさん 投稿日:04/04/16 03:35 ID:???
初期値を代入した部分が再度実行されれば戻るでしょ。
そもそもそういう質問をすることからして何か勘違いしてる可能性もあるが。


243 名前:nobodyさん 投稿日:04/04/16 03:45 ID:5vM41xl8
>>242
役立たずですね
256nobodyさん:04/04/16 11:39 ID:TQSKBaOO
該当スレが見当たらなかったのでこちらに投稿させていただきます。
http://anonymouse.ws/anonwww.html
↑これみたいに、URLクリックしたら串刺さった状態で該当サイトに飛ぶようなスクリプト探してるんですが、
こんなのって普通に配布されてるんでしょうか?
だとしたらどういう検索ワードで探せばよいか教えてほしいんですけど・・・
257nobodyさん:04/04/16 12:35 ID:???
258nobodyさん:04/04/16 12:37 ID:???
>>252
いいこといった!
259nobodyさん:04/04/16 22:59 ID:???
すみません、225です。解決したので報告です。

お恥ずかしい初歩的なミスですが、?の後のクエリーを全角文字で書いてました。

受け側もデコードとかしてなくて、それでもクエリーはちゃんと読めて、思ったとおりの
HTMを出力していたのですが、その時点で正常ではなかったようで、そこから飛ぶ
先の環境変数が壊れていました。

誘導してもらった先でも報告しました。報告ですのでマルチポスト御容赦。
260nobodyさん:04/04/17 00:14 ID:???
plファイルに対してショートカットを作ってそのショートカットのリンク先の欄に
コマンドラインオプションをつけてplファイルを起動したいのですが
perlでコマンドラインオプション引数を受け取る方法がわからないのです。

たとえばデバック用にコマンドラインオプションであらかじめpl内の変数を
設定しておいてフラグを立てたり、logファイルの読み込みディレクトリを
変更したりしたいのです。

そういうことはできないのでしょうか?アドバイスいただければ幸いです。
261nobodyさん:04/04/17 00:25 ID:???
>>260
@ARGVに入ってる
262260:04/04/17 01:16 ID:???
返答どもです。
さっそくやってみます。
263nobodyさん:04/04/17 08:40 ID:???
掲示板のlogファイルなどを相対パスではなく絶対パスで設定したいのですが
掲示板のファイル名取得コードが
$file =~ /\/([\s\S]*)\./;
となっている為、相対パスでlog/log.txtなどの場合は正常に取得できるのですが
絶対パスでH:/bbs/log/log.txtなどの場合は正常に取得できません。
正規表現を調べて
$file =~ /*\/([\s\S]*)\./;
$file =~ /*.\/([\s\S]*)\./;
$file =~ /.*\/([\s\S]*)\./;
$file =~ /.\/([\s\S]*)\./;
みたいな事もやってみたのですが文法エラーだったり目的通りに動いてくれなかったりで
気づけば朝。
こういった場合どういうようにしたらいいのでしょうか?
264nobodyさん:04/04/17 10:15 ID:???
なぜ絶対パスで設定したいのか理由を述べよ。
絶対パスが他のサーバのファイルだとしたら笑いますよ。
265nobodyさん:04/04/17 10:16 ID:???
>>263
正規表現を勉強する。
http://www5a.biglobe.ne.jp/~n_rieko/perl/8.htm
266263:04/04/17 10:34 ID:???
>>264
今自鯖立てていろんな掲示板設置して掲示板弄ったりして
変数やら制御構文やら関数やらを覚えてるんですがその過程で
掲示板のファイル名やlogなどのファイル名を一括表示できる
cgiを作りたいなと思いまして。

>>265
まさに今そのHP見ながら勉強させてもらってるんですが
無い知恵絞って出てきたのが上の文です。
これでいけるはずだ!と思って書いてみてもミスると次どうすればいいのかも
思いつけなくて・・。
267nobodyさん:04/04/17 10:42 ID:???
>>266
プログラミングは
1 これでいけるはずだ
2 やっぱ駄目。
3 直して1に戻る。
の繰り返しなので、2で止まってしまう人は、お金出して他人に任せなさい。
268263:04/04/17 10:55 ID:???
>>267
分かりました。お金出して他人に任せ・・たくないので1にもどります。
とりあえず寝ます。ありがとうございました。また何か詰まったら質問させてください。
269nobodyさん:04/04/17 11:07 ID:???
Perl勉強するなら、Perlの気持ちにならなきゃね。。。

最近、Perlの気持ちになってないヤシが多いよ。
270nobodyさん:04/04/17 11:19 ID:???
喪前ら書き込むなら何かヒントくらい書かないとこのスレの趣旨として機能しないんじゃねぇの?
そんなことない?
$file =~ /.*\/([\s\S]*)\./;
俺ならこれに何か付け足す。
あとはガンガレ。
271nobodyさん:04/04/17 11:29 ID:???
ヒントか?

$
272nobodyさん:04/04/17 11:34 ID:???
>>263
そのすぐ下の行に、
$file = $1;
っていう感じの記述は無いか?
そのコードの意味から調べてみろ。
273nobodyさん:04/04/17 12:31 ID:???
あたしゃ適当にこんな感じ。
$file =~ /.*\/(.+)\./;

/だけならいいけど、\まで対応すると一気に面倒なんだよなぁ。
全角とか半角カナが。(SJISね)
274nobodyさん:04/04/17 14:20 ID:ksEVTWBi
GETやPOSTでデータを渡すとき、通常だと
「&」 … @pairs = split(/&/,$buffer);

「=」 … ($name,$value) = split(/=/,$pair);
でデータ切ると思いますが、これを別の文字にできますか?

「&」を「<>」とかに替えてみて、GETだと出来たんですが
POSTで渡すとき強制的に「&」になるようでデータを渡せませんでした。

POSTの時「&」意外にする方法はあるのでしょうか。
お願いします。
275nobodyさん:04/04/17 14:58 ID:???
276nobodyさん:04/04/17 20:32 ID:???
./Hoge.pm
./Hoge/Foo.pm
というモジュールを作り、
package Foo;
use strict;
@ISA = qw(Hoge);
としたのですが、
Can't locate Hoge.pm in @INC (@INC contains: /usr/...とか色々
と怒られてしまいます。また、
use Hoge;
としている./aho.plでも、useの行で
BEGIN failed--compilation aborted at …
と怒られてしまいます。
おそらくHoge.pmの位置というか、そのような物が悪いのだと思うのですが、
どう直せばいいんでしょうか?
らくだ本では、Hoge::Fooは./Hoge/Foo.pmを表すって書いてあったと思うんですが…。
277nobodyさん:04/04/17 21:01 ID:???
>>276
#--- ./Hoge.pm ---
package Hoge;
sub new { return bless {}, shift }
1;
#--- ./Hoge/Foo.pm ---
package Hoge::Foo;
use base 'Hoge'; # base.pm のヴァージョンが古いとコケる場合がある
# use Hoge; push @ISA, 'Hoge'; # その場合の代替策
sub foo { print 'foo!' }
1;
#--- ./script ---
#!/usr/bin/perl
BEGIN { print map "[$_]\n", @INC } # @INC に . が存在するか確かめる
use Hoge::Foo;
Hoge::Foo->new->foo;
__END__
278nobodyさん:04/04/17 21:08 ID:???
279nobodyさん:04/04/17 22:03 ID:???
package Hoge::Foo;

package Foo;
となっていました…。
フルパスというか、祖先も全部書かないと駄目なんですね。
ありがとうございました。
280nobodyさん:04/04/17 22:33 ID:???
>>279
./Hoge/Foo.pm の中身は package Foo; でも package Bar; でも
構わないが、use は実際のディレクトリ構造に従って Foo.pm を
探すので、./Hoge 内に置いている限り use Hoge::Foo; とする
必要がある。
281nobodyさん:04/04/18 16:47 ID:P05Ai4P1
ウェブ製作から流れてきました
当方レンタルCGIを運営しておりまして
某スクリプトを使用させていただいているんですが(現在配布中止)
なんか背景に画像を設定しても出ないというバグが発生してるんです。

$btagu = '<BODY BGCOLOR="' . $para[8] . '" BACKGROUND="' . $bground . '" TEXT="' . $para[10] . '" LINK="' . $para[11] . '" ALINK="' . $para[12] . '" VLINK="' . $para[12] . '">';

画像はちゃんとアップされてて、画像を背景にしたはずのページのタグにも
ちゃんと画像のファイル名が入っているのですが画像が表示されないで
色が出てきてしまうんです

この状態だと、画像が入ってた場合色よりも画像のほうが優先されるはずなんですが
されないんです。

画像ファイルが入ってた場合に色よりも画像を優先させることはできませんか??
282nobodyさん:04/04/18 16:52 ID:???
>>281
ちなみに、まったく同じHTMLタグで.htmlファイルとしてアップすると
背景は表示されるんです
それが、掲示板などのCGIファイルになると表示されません
283nobodyさん:04/04/18 16:59 ID:gbPENzjB
結局背景を画像にしたいなら、わざわざ色を指定する必要なくね?
284nobodyさん:04/04/18 17:06 ID:???
画像オフにされている時に影響するから、背景画像も背景色もつけておくのがエチケット。

>281-282
パーミッション関係が怪しいと見た。
>282は全く同じフォルダで試してる?
285nobodyさん:04/04/18 17:07 ID:???
tu-ka,Perlのコーディングと関係ないじゃん。
全く同じHTMLで結果が異なるなら、Perlのコーディングの問題じゃありません。
Web製作板向けですのでお帰りください。
286nobodyさん:04/04/18 17:47 ID:???
>>281
お前か。
bodyタグを二つも書いてたやつだろ?
帰れ帰れ。
287nobodyさん:04/04/18 17:54 ID:wgfpZXEV
環境はレンタルサーバーで、おそらくLinux+Apache+perl5です。
一定時間(24時間とか1週間とか)ごとにスクリプトを自動実行させたいんですが、
perlから可能なんでしょうか。

ここかモジュールスレかCGIか迷ったんですが、perlからの呼び出しなので
とりあえずここで。
288nobodyさん:04/04/18 17:58 ID:???
>287
アクセスがあった時に前回の自動実行から一定時間以上過ぎていたら実行をさせる。
これを聞いてイメージが湧かないなら無理。
289nobodyさん:04/04/18 18:04 ID:???
>>288
レスありがと。

静的なHTMLに一定期間ごとに情報を負荷していくCGIなので、CGI呼び出しは
一般ユーザーからは行われない。自分でCGI叩くなら自動じゃなくて手動だ(笑)。

サーバーの負荷のことを考えると、SSI埋め込みとかimg埋め込みで毎回CGI
起動するのはやりたくない。

放置しておいても更新されていくようにしたいんだけど・・・無理かな。
290nobodyさん:04/04/18 18:08 ID:???
>>289
perlには関係ありません。
Linux板でも行って聞いてください。
291nobodyさん:04/04/18 18:13 ID:???
>>290
perlから呼び出したいし、自宅のレスト環境はWindowsだから、環境にあまり依存
しない汎用モジュールでもないかな・・・モジュールスレいったほうがいいですか?。
292nobodyさん:04/04/18 18:18 ID:???
ないって。
レンタルサーバじゃまず無理。
どうしてもやりたければ、Windowsにタイマー仕込んで、一定期間ごとにCGI呼びにいかせろ。
293nobodyさん:04/04/18 18:29 ID:???
>>289>>291
(´-`).。oO(お前は誰だよ・・・)
294nobodyさん:04/04/18 18:30 ID:???
>>292
・・・ないよなあ。そうは思ったが、この世界、物好きが組んでたりするんで、
わずかな可能性にかけたかった(笑)。
おとなしく別の手を考えます。

でも「いや、できるぞ」って方がいらっしゃったら情報よろしく。
295nobodyさん:04/04/18 18:33 ID:???
バカだねぇ・・・
自動実行の定番ぐらい(ry
296nobodyさん:04/04/18 19:25 ID:???
>289
my $time = time();
while(1){
  if((time() - $time) >= 3600){
    処理;
    $time = time();
    sleep 3599;
    next;
  }
  sleep 1;
}

# 共有鯖でやるべからず
297nobodyさん:04/04/18 19:39 ID:???
っていうか判定つけずに sleep 3599 しとくだけでええやん。
298nobodyさん:04/04/18 19:46 ID:2RoBAPGK
ある変数が無名ハッシュかどうか判定するにはどうすればいいのでしょうか?
299nobodyさん:04/04/18 19:46 ID:???
レンタルサーバだと、1分くらいで強制終了させられるところも少なくないと思われ。
300nobodyさん:04/04/18 20:18 ID:???
ref();
301nobodyさん:04/04/18 20:46 ID:???
>>299
いや30秒程度だろ

まぁ普通は>>296みたいなキティなソースは頭に浮かばんね
cron使えよ
302nobodyさん:04/04/18 21:13 ID:gbPENzjB
>>296
なんつースクリプトや…
303nobodyさん:04/04/18 23:26 ID:???
>>298
無名かどうかを判定することは出来ない。
304nobodyさん:04/04/19 09:42 ID:???
ロクに意見も出ないのに、口先だけは一人前のスレですね。
305nobodyさん:04/04/19 11:29 ID:???
1. フォルダの中身にあるファイル名を
  表示させるcgiをつくりたいのですが。
2. こんな風にやってみた。

#!/usr/local/bin/perl
$folder = ./hoge/
opendir(DIR, '$folder') or die;
@file = sort readdir(DIR);
closedir(DIR);
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<P> フォルダの中身 </P>\n";
foreach (@file){
print $_, '<BR>';
}
print "</HTML>\n";
exit(0);

3.普通にエラーになる・・。

改善方法ありますでしょうか・・。
306nobodyさん:04/04/19 11:47 ID:???
どんなエラーが出たかわからないのでカンだけで回答するが

とりあえず2行目はいきなり syntax error になるだろうな
307nobodyさん:04/04/19 11:47 ID:???
>>305
そりゃあエラーになるわな。
基本からやり直してください。
308nobodyさん:04/04/19 11:55 ID:???
とりあえず2行目にエラー、3行目にミス(エラーは出ないが期待通り動かない)がある。
何を見て書いたコードなのかは知らないが、せめてエラーメッセージの確認ができる環境で試すべし。
309305:04/04/19 14:24 ID:???
えっと、エラー確認してみたんですが
これで一応syntaxはOKになるんですが表示されません。。
#!/usr/bin/perl
$folder = "./hoge/";
opendir(IN, "$folder") or die;
@file = sort readdir(IN);
closedir(IN);
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<P>フォルダの中身</P>\n";
foreach (@file){
print $_, '<BR>';
}
print "</HTML>\n";
exit(0);
310nobodyさん:04/04/19 15:01 ID:???
>>309
俺のところではそのコードでちゃんと動く。

コーディング以外の部分を疑うべきだろうな。
例えばディレクトリのパーミッションとか。
311nobodyさん:04/04/19 15:14 ID:???
>>309
俺のところでもちゃんと動く。
312305・309:04/04/19 15:44 ID:???
ごめん。まじで聞いてくれますか?
フォルダ名間違ってた・・・。
ごめんなさい。逝ってきます。
313nobodyさん:04/04/19 16:06 ID:???
>>305
〜 or die; とするぐらいならどうしてもう一歩すすめて 〜 or die "適当なメッセージ: $!"
としないのか...
314nobodyさん:04/04/19 16:46 ID:???
>>313
print "Content-type: text/html\n\n";
の前に鰓が出て、「ぷりめちゃ〜」って出るからなんじゃなぁい?(w
315nobodyさん:04/04/19 17:03 ID:???
初心者的質問です、すいません!

@array を : で2つに分けて片方だけ表示したいのですが。
下記のように記述してみましたが、できませんでした。
書き方が違うのだと思います。
教えていただけませんか?

while (@array){
($hour, $min) = split (/./, "$array[$_]");
}
print "Content-type: text/html\n\n";
print "<HTML><BODY>\n";
foreach (@array){
print $hour[$_],\n;
}

今のままだと動作がものすごく遅くて
結局最後にエラー表示がでてしまいます。
一応、文法的な間違いはないようですが・・・・・・。
316nobodyさん:04/04/19 17:05 ID:???
あ。1箇所入力間違えていました。split の区切り文字は「:」です。
317nobodyさん:04/04/19 17:07 ID:???
>>315
>@array を : で2つに分けて
意味がわからん

>while (@array){
>($hour, $min) = split (/./, "$array[$_]");
>}
これはどういう処理してるつもり?
318nobodyさん:04/04/19 17:17 ID:ZjO/sTlt
例えば、

たかし
たろう
こういち
さぶろう
よしゆき

みたいなテキストファイルがあって、
それを読み込んで
「ぬるぽ」をHTMLから送信すると

ぬるぽ
たかし
たろう
こういち
さぶろう
よしゆき

見たいな感じにテキストファイルの一番上の列に
書き出すことはできますか?
またできるのでしたらその方法を教えていただけますか?
319nobodyさん:04/04/19 17:21 ID:???
>>315
print "Content-type: text/html\n\n";
print "<HTML><BODY>\n";
foreach (@array){
($hour, $min) = split (/:/);
print $hour,"<br>\n";
}
320nobodyさん:04/04/19 17:26 ID:???
321nobodyさん:04/04/19 18:07 ID:???
>>318
ガッ
322nobodyさん:04/04/19 20:05 ID:FJ2iv18N
cgiが起動したら、カレントディレクトリにあるバイナリーファイルを読み込んで、
そのまま標準出力にバイナリーデータとして返すにはどうすればよいのでしょうか。
読み込むにはbinmodeを呼び、通常通りreadにて$???で受け取ってよいのでしょうか、
またバイナリーをアウトプットする関数名を教えて下さい。
323nobodyさん:04/04/19 20:14 ID:???
つーかよ、GETしたhtmlを分解して調べるなんて、なんつーか原始的(アナログ的)だよな
324nobodyさん:04/04/19 20:18 ID:???
>>322
よい。
print
325nobodyさん:04/04/19 20:22 ID:???
最近掲示板のパスが漏れて(?)改ざんされました。
とりあえずパスワードを変えることでしのいだのですが、
管理画面のログをとりたいと思っています。

CGIをいじったことはあまりないのですが、
管理画面(admin.cgi)の2行目くらいにreqireでアクセス解析のCGIを指定してやればいいのでしょうか?

よろしくお願いします。
326nobodyさん:04/04/19 20:28 ID:???
327323:04/04/19 20:29 ID:???
スマン・・・
誤爆した
328nobodyさん:04/04/19 21:10 ID:BDbOGV6P
初心者質問です。
perlで掲示板を作成しました。
掲示板の内容はログに書込まずにDB(PostgreSQL)に書込まれるようにしました。
出力するときにDBから取り出して、値を $変数 =~ s/\r/<br>/g;
という処理にして表示させると、改行はされますが、改行位置に<br>が付いた状態で表示されて
しまいます。<br>を非表示にして表示できないものでしょうか?

329nobodyさん:04/04/19 21:13 ID:???
>>322

open(FILE,"ファイル名");
binmode(FILE);
binmode(STDOUT);
print <FILE>;
close(FILE);
330nobodyさん:04/04/19 21:29 ID:???
>>328
それはperlに関係ないだろ。
HTMLレベルの話だし、自分で作った掲示板ならわかるはず。
331nobodyさん:04/04/19 21:53 ID:???
>>325
とりあえず、アクセス解析ぐらい(admin.cgi)とやらに自力で書き加えれる程度の知識つけて
実際に書き加えてみろ。
そんで、うまく動かないとか、なんか困っ時にまた来なさい。
話はそれからだ。

332nobodyさん:04/04/20 00:36 ID:???
>>324
>>329
どうもありがとうございマス
目的のものが完成しました
333nobodyさん:04/04/20 18:10 ID:???
>>328
WINDOWSの改行コードは\r\n

\r\n → s/\r/<BR>/g; → <BR>\n
もう解るね?
334nobodyさん:04/04/20 20:34 ID:???
>WINDOWSの改行コードは\r\n

あいまいだな
335nobodyさん:04/04/20 21:07 ID:???

$変数 =~ s/\r/<br>/g;
$変数 =~ s/</&lt;/g;
$変数 =~ s/>/&gt;/g;

ってなってて <pre> で囲まれてるんじゃない?


336nobodyさん:04/04/20 21:56 ID:yCtk22ce
x between 1 and 100

をperlで書く場合は

( x >= 1) and ( x <= 100 )

と書けば動きますが、もっとスマートな書き方ってあります?
337nobodyさん:04/04/20 22:14 ID:Z+bRhQSh
()はいらねー
338nobodyさん:04/04/20 23:56 ID:???
FREEであったフォームメールのcgiを利用しようと思ったんですが
控え用にあるccが機能しません。
管理者用に届くメールのccに書いたほうのメールアドレスが
書いてあることには書いてあるんですが届かないのは
どんな理由が考えられますでしょうか?
339nobodyさん:04/04/21 00:36 ID:???
メール鯖の管理者に聞いてみたら?
340nobodyさん:04/04/21 01:10 ID:???
>>338
作者に聞いたら?
このスレの話題じゃない
341nobodyさん:04/04/21 02:17 ID:???
>>336
$x and $x <= 100
342nobodyさん:04/04/21 02:51 ID:???
それだと $x = -1 のときも true になりそうな
343nobodyさん:04/04/21 03:12 ID:???
int(($x-1)/100) == 0
344nobodyさん:04/04/21 03:23 ID:???
&between(x,0,100)
345nobodyさん:04/04/21 03:40 ID:???
1と100の間;
346nobodyさん:04/04/21 13:55 ID:hvmubjIu
for (1..1000){
open F,'test.txt';
flock F, 1;
$data = <F>;
close F;

$data++;

open F,"+<test.txt";
flock F, 2;
truncate F, 0;
print F $data ;
close F;
}

これを、2プロセスで実行すると、+2000になる予定ですが、+2000になりません。
printの前に seek F,0,0; を入れると期待通り+2000になるのですが・・・。
どうしてでしょうか?
347nobodyさん:04/04/21 14:26 ID:???
348nobodyさん:04/04/21 15:41 ID:???
>>346
カウンタファイルを読むのと書くのをそれぞれ別のロックにしたら
相手の操作に割り込まれ放題だから2000にならないのは不思議
でもなんでもないが、seekを入れただけで2000になるのはとても
不思議だ。オレにはわからん。
349nobodyさん:04/04/21 15:45 ID:???
use strict refs 下で open() に渡すファイルハンドルに変数を使うにはどうしたら良いのでしょうか。

my $fh = 'FILE';
open($fh, '< file.txt') or die $!;

のように。
350nobodyさん:04/04/21 15:58 ID:???
351nobodyさん:04/04/21 22:29 ID:dqfm18bp
$change = '$data';
$data = "example";

この時にprint "$change";とすると$dataと出力されてしまうのですが、
この時exampleを出力させる様にするにはどのようにしたら良いでしょうか?
どなたかご教授お願い致します。
352351:04/04/21 22:29 ID:???
すみません、$changeを使ってです。
353336:04/04/21 22:30 ID:???
んー、Perlだと結構いろんな書き方があるから油断できないんだけど、
( $x >= 1) and ($x <= 100 )
に関して言えば、可読性からもこれでいいのかな。

レスくれたひとサンクス。
354nobodyさん:04/04/21 22:30 ID:???
釣堀はここではありませんよ
355レファランス使え:04/04/21 23:08 ID:???
>>351
$change = "data";
$data = 'example';
print $$change,"\n";

$change = \$data;
$data = 'example';
print $$change,"\n";
356nobodyさん:04/04/21 23:21 ID:???
素直に eval 使えばいいんじゃないだろうか。

$change = '$data';
$data = "example";
print eval $change;
357nobodyさん:04/04/21 23:23 ID:???
馬鹿に危険な事教えるなよ
358351:04/04/22 00:03 ID:???
>>355-356
早速組み込んでみた所、期待通りの動作をしました。Perlにもポインタの様な物が実装されているんですね。
これを機にevalの使い方も覚えました。ありがとうございました。
359nobodyさん:04/04/22 00:20 ID:???
質問です。

いくつかのファイルをループ処理でまとめて読み取り、
$dat[ファイルNo.][n行目]
のように一つの2次元配列に格納しようとしています。

@dat[$i] = <FH>;
openした直後に上記のようなコードを入れましたが、
どうも配列は1次元のままで、各ファイルの一行目しか配列に格納してくれませんでした。

どなたか2次元で格納させるヒントをご教授ください。
360nobodyさん:04/04/22 00:27 ID:???
@{$dat[$i]} = <FH>;
361nobodyさん:04/04/22 00:29 ID:???
Perl に無名スカラーってありますか?

関数やサブルーチンからの戻り値をそのまま return する時に
return \(value()) とかやっているのですが、
例えば複数の値の場合に return [values()] で配列のリファレンスを返せるように、
無名スカラーがあれば良いのになあと。
362359:04/04/22 00:30 ID:???
>>360
動作確認しました!
即レスありがとうございました!
では再び勉強ROMに戻ります。
363361:04/04/22 00:31 ID:???
戻り値のリファレンス返すのでそのままではありませんね……。
364nobodyさん:04/04/22 02:12 ID:???
return \@{[values %ハシュ変数名]};
かな?
365nobodyさん:04/04/22 09:00 ID:???
>>361
無名スカラーって無名スカラーリファレンスってことか?
ハッシュや配列と違って、無名スカラーリファレンスをを作る構文的なサポートは無い。
苦肉の策だが my $anon_sref = do{ my $o; \$o } などとしているな。
しかしこの場合は\(value())ではいけないのか?何か不満か?
366nobodyさん:04/04/22 12:18 ID:???
いえ、機能的な不満は全く無いですが、個人的な好みの問題のようなものです。
無いのであれば、今まで通りにする事にします。
367nobodyさん:04/04/23 20:15 ID:???
$IMAGEに書かれている文字を、sprintfで文字を3つに(1.1.残り)に分けて、
はじめの文字がaだった場合とそれ以外で読み込むフォルダを分けたいと
思っています。
以下のように記述したのですが、エラーが出てしまいました・・。
どこ違っているのかわからないので、指導お願いします〜。。


$IMAGE = sprintf("%01d/%01d/%04d",$a,$b,$c);

if ($a eq a){print "<IMG src=\"image/$a$b$c.gif\">;
}else{print "<IMG src=\"img/$a$b$c.gif\">";}

また、1.1.残りと分けたいのですが、画像ファイルの名前が4〜6文字とランダムなのですが、上の書き方だとだめなんですよね・・?
どうすればいいんでしょうか?
368nobodyさん:04/04/23 20:17 ID:???
>>325まだ見てるか?

最近アクセス解析CGI作ったから require で呼び出せるように書き換えて
提供してやろうか?

いるなら捨てアドさらせ。
さらしてから書き換えに2〜3日掛かるからその後送ってやる
369nobodyさん:04/04/23 21:00 ID:???
>>367
print $IMAGE =~ /^A/ ? "<IMG src=\"image/$IMAGE.gif\">" : "<IMG src=\"img/$IMAGE.gif\">";
370nobodyさん:04/04/23 21:04 ID:???
>>367
>$IMAGEに書かれている文字を、sprintfで文字を3つに(1.1.残り)に分けて
使う関数が目的に合っているかよく調べろ。

>$IMAGE = sprintf("%01d/%01d/%04d",$a,$b,$c);
これじゃあ$a,$b,$cを指定のフォーマットにして/をはさんだ文字列として
$IMAGEに代入する式だ。

こんなのでもいいだろ。
$a = substr($IMAGE,0,1);
$b = substr($IMAGE,1,1);
$c = substr($IMAGE,2);
371369:04/04/23 21:12 ID:???
あ、質問よく読んでなかった。
372367:04/04/23 21:23 ID:???
>>370
書きながら、これだけ代入が逆なのか・・と思いながら書いてました。

substrの意味を調べて納得です。
助かりました。。
373nobodyさん:04/04/24 12:42 ID:ftCx7p61
Pod を書くのに日本語つかってもいいですか?
374nobodyさん:04/04/24 13:44 ID:???
なんかその質問前にもあったぞ。
375373:04/04/24 14:07 ID:???
ポッキーあげるから、教えてくださいよ〜
376nobodyさん:04/04/24 15:41 ID:???
>>373
自分で使う分には構わないって事でファイナルアンサーしてたような。
CPANに登録するのなら英語(Ascii?)で書かかないと。

http://www.perldoc.com/perl5.8.0/README.jp.html
http://search.cpan.org/~nwclark/perl-5.8.4/README.jp
EUC-JPで化けるみたいだしね。
# UTF-8だといけるのかな?
377373:04/04/24 21:14 ID:???
ありがとう!!!
お陰で彼女が出来ました
378nobodyさん:04/04/25 11:23 ID:KCQtln8X
モジュールって、相互に宣言しても、大丈夫ですか??
例えば、MOD_A.pm と MOD_B.pm を自作して

MOD_A.pm 内のソースで use MOD_B; を宣言
MOD_B.pm 内のソースで use MOD_A; を宣言

cgiプログラムを作ってるんですが、そのcgiプログラムの中で
use MOD_A;
use MOD_B;

とかやりたいんですがどう?

もっとさらに言うと、MOD_A.pm の中で自分自身を
use MOD_A;

とかやっても大丈夫ですか?
379nobodyさん:04/04/25 11:41 ID:???
そんなことを聞くようなやつがモジュールなんか作るな
380nobodyさん:04/04/25 11:42 ID:???
やってみればわかることを聞くヤシっているよね
381nobodyさん:04/04/25 14:33 ID:???
>378
相互 use、自己 use とも無限ループにはならない。
ttp://www.perldoc.com/perl5.8.0/pod/func/use.html
ttp://www.perldoc.com/perl5.8.0/pod/func/require.html
ただし、自己 use することに何の意味もない。
さらに、相互 use することにも意味がない。
>378 の例だと CGI の中の use MOD_B; と、MOD_B.pm の中の use MOD_A; は
あってもなくても変わらない。
とりあえず、相互に use するような設計がおかしいので考え直せ。
382nobodyさん:04/04/25 21:00 ID:???
cgiにjava scriptを組み込もうとしているのですが、500エラーがでます。

HTMLでの " は \" になることは知っているので、そうしたのですが、
 ! や ? の記号の前にも \ が必要なのですか?それとも他の記号なのでしょうか?
383nobodyさん:04/04/25 21:06 ID:???
まずはソースを出せ。
話はそれからだ。
384nobodyさん:04/04/25 22:15 ID:???
>>382
cgiで文字列の出力をしようとしているのですが、500エラーがでます。

" は \" になることは知っているので、そうしたのですが、
 ! や ? の記号の前にも \ が必要なのですか?それとも他の記号なのでしょうか?
385nobodyさん:04/04/25 22:15 ID:???
>>382
500エラーなんてものでデバッグしてることからして論外。
まずはちゃんとした環境を用意してから出直してきてください。
386nobodyさん:04/04/26 16:42 ID:NLGfQi9F
/private
ディレクトリに、Basic認証もしくはDigest認証をかけて
/private/secure.cgi
へアクセスをした場合に、ユーザ名・パスワードを引数として
渡すには、どうやったら良いのでしょうか?

どなたかご教授、お願い致します。
387nobodyさん:04/04/26 17:04 ID:???
ユーザ名は環境変数 REMOTE_USER で引き渡されます。

パスワードを CGI に引き渡すのは
少なくとも現行の CGI というインタフェースを使う限りでは
原理的に不可能です。
これは Perl コーディング上の制限ではなく
CGI というインタフェース仕様上の制限です。

CGI 以外の方法なら、
例えば mod_perl を使って PerlAuthenHandler を組むやり方であれば
Apache Request オブジェクトの get_basic_auth_pw() メソッドを使って
パスワードを取得することができます。
388386:04/04/26 17:18 ID:NLGfQi9F
>>387
レスありがとうございます。

REMOTE_USERでのユーザ名引き渡し、確認できました。
パスワードはやはり無理ですか...
ユーザ名だけを利用して(重要な部分へは再認証という形で)
対応していきます。
389nobodyさん:04/04/26 17:45 ID:8MkOGNrL
DBD::Pgを使ってDB接続を試みているのですが、
エラー処理ができなくて困っております。

例えば、
my $dbh = DBI->connect("dbi:Pg:dbname=$dbname;port=$port", $user, $password, {RaiseError => 1, AutoCommit => 0}) || print "error";
これで$dbnameが存在していないものを指定すると、printにいってくれず、
Internal Server Errorが出てしまいます。↓error_log
DBI connect('dbname=--;port=--','',...) failed: FATAL: database "--" does not exist at --.cgi line --

ご教授いただけませんでしょうか。
宜しくお願いします。
390nobodyさん:04/04/26 18:09 ID:???
>>389
dieしてるのでevalで捕まえられると思うよ。
391nobodyさん:04/04/26 18:11 ID:???
>>388
横槍入れるようだが、同じパスワードで何回認証しても意味ないと思うんだが。
ユーザー名は追跡の為に追うこともあるだろうけど。
392nobodyさん:04/04/26 18:24 ID:???
>>386
ユーザ名とパスはリクエストヘッダAuthorizationで渡されるから拾えばいい。
例えば.htaccessで
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule test.cgi test.cgi$1 [e=HTTP_CGI_AUTHORIZATION:%1]

($scheme, $data) = split (' ', $ENV{'HTTP_CGI_AUTHORIZATION'});
if ($scheme eq 'Basic') {
 $data = &decode_base64 ($data);
 ($ENV{'REMOTE_USER'}, $ENV{'REMOTE_PASSWORD'}) = split(':', $data);
}
sub decode_base64 {
 my ($str) = "@_";
 my ($res, $len) = "";
 local($^W) = 0;
 $str =~ tr|A-Za-z0-9+=/||cd;
 if length($str) % 4;
 $str =~ s/=+$//;
 $str =~ tr|A-Za-z0-9+/| -_|;
 while ($str =~ /(.{1,60})/gs) {
  $len = chr(32 + length($1)*3/4);
  $res .= unpack("u", $len . $1 );
 }
 return ($res);
}
print "Content-type: text/html", "\n\n";
print "$ENV{'HTTP_CGI_AUTHORIZATION'}<br>\n";
print "$ENV{'REMOTE_USER'}<br>\n";
print "$ENV{'REMOTE_PASSWORD'}<br>\n";
393nobodyさん:04/04/26 18:28 ID:???
>>389
RaiseError => 1 を設定するのを止める。つーかコピペプログラマは氏ね
394nobodyさん:04/04/26 18:39 ID:???
>>392
ちょっと間違った
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule test.cgi test.cgi [e=HTTP_CGI_AUTHORIZATION:%1]

sub decode_base64 {
 my ($str) = "@_";
 my ($res, $len) = "";
 local($^W) = 0;

 $str =~ tr|A-Za-z0-9+=/||cd;
 $str =~ s/=+$//;
 $str =~ tr|A-Za-z0-9+/| -_|;
 while ($str =~ /(.{1,60})/gs) {
  $len = chr(32 + length($1)*3/4);
  $res .= unpack("u", $len . $1 );
 }
 return ($res);
}
395386:04/04/26 20:29 ID:???
>>394
そういう方法もあるんですね。
とても参考になりました。
ありがとうございます。
396nobodyさん:04/04/26 21:22 ID:BWwI4BSi
このスレでPerlで作ったCGIの質問してもいいのかな…

cgiでcss文書を吐き出したいんですが、Content-type:text/cssと最初につけておけばよいのでしょうか?
infoseek iswebでこれをやると広告がついてきてcssとして使えなくなるんですが、普通にうpしたcssファイルはhttpでgetできます。
この差はCGI作り手側のミス?それとも拡張子cgi=広告付加とかCGI作り手側じゃどうしようもないものですか?
397nobodyさん:04/04/26 21:28 ID:???
鯖の仕様なんてそれぞれ。鯖缶に問い合わせろ。
398nobodyさん:04/04/26 22:16 ID:???
>>396
スレ違い。
Perl以外で作っても成立する質問でしょ。
399nobodyさん:04/04/26 23:30 ID:???
>396-397
そうでしたか…失礼。
400nobodyさん:04/04/27 17:46 ID:m4JuDEBr
perl cgiで開きポートをチェックする方法ってありますか?
401nobodyさん:04/04/27 17:51 ID:???
基本的に総当りで調べるしかないな
402nobodyさん:04/04/27 17:56 ID:m4JuDEBr
掲示板で80と8080くらいわかればいいんですけど…
できるだけ早く処理できる方法があったらお願いします。
403nobodyさん:04/04/27 18:04 ID:???
reject が帰ってくれば早いが、timeout を待つことになると時間がかかるな。
できるだけ待ち時間を短くするための工夫としては、
ソケットを non-blocking で開いて並列で処理する、ぐらいか。
404nobodyさん:04/04/27 20:01 ID:D2O5MFhm
サブディレクトリにあるhtml文書を読み込んで表示するプログラムは、下ではダメなのでしょうか。

print "content-type: text/html\n\n";
open(TEST, "sub/test.htm");
while (<TEST>) {
print $_ ;
}
close(TEST);
exit;

ローカルではうまくいくのですが、サーバーに上げて実行してみると上手くいきません。
405nobodyさん:04/04/27 20:12 ID:???
>>404
どう上手くいかないのか書け
406nobodyさん:04/04/27 20:14 ID:???
エラーをトラップして調べる癖をつけないといつまでも聞くことになるぞ。
それに「うまくいかない」で読んでるやつがどうなったかわかると思うか?
407nobodyさん:04/04/27 22:30 ID:???
掲示板のログが飛ぶ事が多いので
先頭にtime値を書き込んで、新しい方を読み,古い方に書く
2重ファイル方式を取入れたのですが、ログが消えた時はそのままでした。
flock考やperlメモのやり方でもたまに飛ぶので(ローカルでは書き込みプログラムを何個走らせても飛ばないんですが…)
バックアップ的にこのやり方を導入したいんですが、アドバイス願えないでしょうか?
408nobodyさん:04/04/27 22:36 ID:???
ローカルテストは本当にしたか?
並列で処理しないとロックの検証にはならないよ。
でなきゃ鯖の問題だな。
409nobodyさん:04/04/27 22:55 ID:???
どうせ、なんちゃってロックだろ。笑ってやるからロックのところ貼り付けてみろ。
410nobodyさん:04/04/27 23:00 ID:???
time値の新しい方と古い方って、アクセス集中すると
同じ値になるだろ
411nobodyさん:04/04/27 23:01 ID:???
秒単位だからね
412404:04/04/28 00:18 ID:2okML1Hb
>>404はPerlのパス名のタイポでした。お騒がせしました。ごめんなさい。
ですがまた問題が発生しました。
sub/test.htmから<n月>という文字列がある行をマッチさせたいのですが、下のようにすると
ローカルではマッチするんですが、サーバーに上げるとマッチせず。。。

print "content-type: text/html\n\n<html>";
open(TEST, "sub/test.htm");
while (<TEST>) {
if ($_ =~ /<.*?月>/) {print $_;}
}
close(TEST);
print "</html>";
exit;

4行目を
if ($_ =~ /<(.*?)月>/) {print $_;}
に書き換えるとローカルでもサーバーでもマッチします。なぜでしょうか。
413nobodyさん:04/04/28 00:46 ID:???
>>412
そりゃ初耳だ。
こんな世知辛い世の中に笑いをありがとう。
和んだよ。
414nobodyさん:04/04/28 00:54 ID:???
>>413
答えられないなら黙ってろ。
415nobodyさん:04/04/28 01:00 ID:???
>>414
何だ釣りだったのか?
釣りを楽しむ余裕が

今はある!!!

誘導くらいしてあげるよ
http://pc5.2ch.net/test/read.cgi/php/1069245758/l50
416nobodyさん:04/04/28 01:05 ID:???
>>414
君は404かい?
それなら俺も大笑いしてあげる
417404:04/04/28 01:33 ID:???
>>414は私ではありません。とにかく、誘導ありがとうございます。
むこうの過去ログを見てみて、それでもわからなかったら質問しようと思います。
418nobodyさん:04/04/28 01:59 ID:???
スルーされるんじゃないかと心配しておりました。
回答ありがとうございました。

>>408
5台くらいで鯖マシンに(perlの)duke撃ちまくってテストしました。

>>409
現在携帯からなので無理ですが
perlメモのロックの部分とflock考えの奴をそれぞれやりました。

>>410
そうでした…
ただifの条件に合わないと、elseで指定されている方を読み込みますし大丈夫なのでは?



サイトの方は日に200くらいの書き込みで、そんなに多くは無いんですが、
2,3ヵ月に1回は飛んでしまいます。
逆にtopのカウンタは2重ファイルってだけで
ロックは使って
419nobodyさん:04/04/28 02:10 ID:???
>>418
そのぐらいのアクセスでログが飛ぶなんて不思議。
コードそのものに問題があるような気がするが。
420nobodyさん:04/04/28 06:01 ID:???
ロックはしっかりしてても、サーバ自体がファイルオープンしたまま
落ちたりしたらログ飛ぶわなあ。
421nobodyさん:04/04/28 07:36 ID:???
>>419-420
そういう可能性もあるんですね。
読み書き両用でopenして…と思いましたが、どっちみちサイズを0にした時点で落ちたら意味無いですよね…

ツリー型なので700件残るようにしてますが、少し多いづしょうか?サイズは130KBくらいです。
422nobodyさん:04/04/28 09:58 ID:???
>>421
だったらhoge.newに新しい内容作ってからrenameするとか
やり方はいろいろありそうなものだが。
423nobodyさん:04/04/28 13:45 ID:???
>>422
なるほど…
こっちの方が楽ですね。その方法でやってみます。
424nobodyさん:04/04/28 16:05 ID:S7OIBKMs
#!/usr/bin/perl

`halt`;
----------------------------------------------
以上のスクリプト実行しても鯖ダウン出来ませんでした。

どうやったら鯖ダウンできますか?
425nobodyさん:04/04/28 17:32 ID:???
rootがいるじゃろ?
426nobodyさん:04/04/29 00:19 ID:DqcSI5IG
質問ですm(__)m
index.htmlがあるとしてこの中の一部にxxx.cgiを表示したいのですが
どぅやったら表示出来るのでしょう?
表の中に表示させたいのですがインラインフレームしかありませんか?
427nobodyさん:04/04/29 00:27 ID:???
Perlとどこに関係がありますか?
板違いです。
428nobodyさん:04/04/29 00:42 ID:???
>>426
それはSSI。
429nobodyさん:04/04/29 13:25 ID:???
CGIの拡張子を .html 設定にするだけだろ
430nobodyさん:04/04/29 14:16 ID:???
>>429
釣り乙
431nobodyさん:04/04/29 14:52 ID:???
>>429
馬鹿かお前。初心者はすっこんでろよ。
432nobodyさん:04/04/29 14:59 ID:???
案外、本気で答えてたりしてなw
433nobodyさん:04/04/29 20:58 ID:???
逆の方法もあるじゃん。
htmlをcgiに取り入れたら?
434nobodyさん:04/04/29 21:11 ID:???
(´-`).。oO(無理すんなよなぁ・・・)
435nobodyさん:04/04/29 22:36 ID:???
use Pgからuse DBIに切り替えプログラミングしているのですが、
use Pgのgetvalueみたいなものはuse DBIにないのでしょうか。

すみませんがご教授いただきたいです。
436nobodyさん:04/04/30 01:19 ID:???
fetch
437nobodyさん:04/04/30 01:52 ID:???
$tup_num と $field_num を指定して目的のとこだけ取ってくるようなメソッドは無いような気がするが
DBIスレの方がちゃんと知ってる人が多いと思う
http://pc5.2ch.net/test/read.cgi/php/1015943725/
438nobodyさん:04/04/30 03:25 ID:SiN+gHBL
質問です。
バッククオートで外部プログラムを実行し、標準出力を受け取りたいと考えてます。

$tmp = `/usr/bin/wget -d http://example.com/test.cgi?d=domain\&p=password -O -`
このとき、アンパサンド「&」をエスケープできません。( http://example.com/test.cgi?d=domain でwgetが実行される)
どうすればよいでしょうか。

perl -v > This is perl, v5.6.1 built for i386-linux.
シェルで/usr/bin/wget -d http://example.com/test.cgi?d=domain\&p=password
はちゃんとgetの長いメッセージとして実行できてます。

GETはやめてPOSTにしろ、はなしでお願いします。。
439nobodyさん:04/04/30 10:18 ID:???
>>438
かなり卑劣かも。
$tmp = q|http://example.com/test.cgi?d=domain&p=password -O -|;
$tmp = `/usr/bin/wget -d $tmp`;
440nobodyさん:04/04/30 10:20 ID:???
>>438
`/usr/bin/wget -opt 'URI'`
441nobodyさん:04/04/30 10:46 ID:???
なんて恐ろしい事をしているんだ。
俺には真似出来ねえ。
442442:04/04/30 17:56 ID:G+Ai2Hl9
perlでxmlを読み込もうとしています。
このようなxmlファイル(test.xml)があったとして、
-------------------------------------------------
<?xml version="1.0" encoding="Shift_JIS"?>
<data>
 <member num="01">
   <name>AAA</name>
 </member>
 <member num="02">
   <name>BBB</name>
 </member>
</data>
-------------------------------------------------
その中から、「AAA」と「BBB」を取り出すには
perlどのように書けばよいのでしょうか?
↓から続きがかけません・・
-------------------------------------------------
#!/usr/local/bin/perl
use XML::Parser;



print $name01; #AAA
print $name02; #BBB
-------------------------------------------------
443nobodyさん:04/04/30 18:34 ID:???
>>442
google って知ってる? とっても便利だから使ってみなよ。
http://www.google.co.jp/search?lr=lang_ja&q=perl+XML%3A%3AParser
444442:04/04/30 18:51 ID:???
googleで探していろいろ見てみて
ttp://member.nifty.ne.jp/hippo2000/perltips/xml/parser.htm
とか良さそうだったのですが、解説を呼んでもいまいちよくわかりませんでした・・
445438:04/04/30 20:25 ID:???
どもです。 >439 で対処できました。
必ず直前で変数に固定値を代入するので、変数るのを納得しときます
446nobodyさん:04/04/30 22:38 ID:???
>445
バッククォートでは変数展開とかがかかるので、\& が & になった状態でシェルに渡されてる。
なので、\\& にしても通るとは思うんだが、>440 のようにシングルクォートを使う方が素直だと思う。
447nobodyさん:04/04/30 22:54 ID:5VEFp/rm
質問です。既出だったらスマソ。
ポートチェックってどうやったらできますか?
掲示板の荒らし対策に80と8080のチェックしたいんです。
ググってもいいページが見つからないんで・・・
できればスクリプトごとお願いします。
448nobodyさん:04/04/30 23:30 ID:???
>>447
Socket使って、接続できたらあいてるってことでいいんじゃ?
449nobodyさん:04/04/30 23:37 ID:???
>>448
普段perl使わないんで実装方法が・・・
450nobodyさん:04/04/30 23:45 ID:???
>447 = >400 ?

とりあえず Socket.pm のマニュアルでも読めば。
451nobodyさん:04/05/01 00:12 ID:???
Socket使うらしいということまではわかったんですが構文や応答の有無の判別がわかりません・・・
452nobodyさん:04/05/01 00:43 ID:???
453nobodyさん:04/05/01 01:09 ID:fGFxpvHE
                   ,.. -──- 、
                 / . : : : : : : : : : \
                /.: : : : : : : : : : : : : : ヽ
               ,!::: : : :,-…-…-ミ: : : : :',
               {:: : : : :i '⌒'  '⌒' i: : : : :}
                {:: : : : | ェェ  ェェ  |: : : : :}
.         , 、      { : : : :|   ,.、   |:: : : :;!
        ヽ ヽ.  _ .ヾ: :: :i r -ニ-┐ | : : :ノ
          }  >'´.-!、 ゞイ! ヽ 二゙ノ イゞ‐′
          |    −!   \` ー一'´丿 \ 
         ノ    ,二!\   \___/   /`丶、
        /\  /    \   /~ト、   /    l \
       / 、 `ソ!      \/l::::|ハ/     l-7 _ヽ

教  え  ろ  や  ?    あ ?  コラ ?
454nobodyさん:04/05/01 01:10 ID:fGFxpvHE
   _,,,,,,,,
     , - ' ゙    `` ‐ 、_,,,,,
   ,r'          /=ミ
  /           彡ll',''´
. /             彡lll
 !-- .、    ,、、、、,,,   彡lノ
 l,,,,,__ /   ___     'r''゙ヽ
. |`゙'' ./   `'゙'''"    .〉,l |
 |.   ,'           //
. ',. ,'           , r'
.  ゙, ゙'ー ‐`      l  |
   ゙、''゙ ,,、二''‐    ノ  l、
''''''''7'ヽ  '''    /   /`〉`゙T''''''''''
  l  ` 、,,,,、- ' "    / /.|  |
.  |  |  .l i       / ./ |  |
  |  |  | l      / ./ .|  |
. |  |   | l     / /  |  |
 |  |   | ',   / /  l  .l
455nobodyさん:04/05/01 01:10 ID:fGFxpvHE

                ,..-──- 、
                /. : : : : : : : : : \
           冒  /.: : : : : : : : : : : : : : ヽ
            l l ,!::: : : :,-…-…-ミ: : : : :',
          ./〜ヽ{:: : : : :i '⌒'  '⌒' i: : : : :}   _______
           |__| {:: : : :.| ェェ ェェ |: : : : :}   /
.           .|| d.|| { : : : :|   ,.、  |:: : : :;! < とんちゅーみねーりらろっとおブ
         /| of||_.ヾ: :: :i r‐-ニ-┐| : : :ノ   \
         |  ̄ -!、 ゞイ! ヽ 二゙ノ イゞ‐′     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
         |    −!   \` ー一'´丿 \
         ノ    ,二!\   \___/   /`丶、
        /\  /    \   /~ト、   /    l \
       / 、 `ソ!      \/l::::|ハ/     l-7 _ヽ
      /\  ,へi    ⊂ニ''ー-ゝ_`ヽ、    |_厂 _゙:、
      ∧   ̄ ,ト|    >‐- ̄`    \.  | .r'´  ヽ、
     ,ヘ \_,. ' | |    丁二_     7\、|イ _/ ̄ \
     i   \   ハ       |::::|`''ー-、,_/  /\_  _/⌒ヽ


456nobodyさん:04/05/01 01:11 ID:fGFxpvHE
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●死 ね●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
457nobodyさん:04/05/01 01:13 ID:fGFxpvHE
             !llヾ
             i1llllllii ,..-‐''" ̄~゙" ̄ ̄ミヽ──ー,
              ;;ll,;:" i          ヽ.、ヽ;=、/   
             ,/   l          ヽ ゙i、 ゙、:、゙、;;   
                /  :'  l :     i !.  ゙、 !l !,゙, ゙:,    
              l, ; . ; i !i :   :, }i!、 ', ! l l :!:.;:'; i  ミィは最強なんだよっ♪
                l.;.; : ;: l liヾ、 , .;}, Lj-ヾ ;.; l l :l ;: : l
              j!;.;; : ;: }:、ゝ、ヾ、゙ jリ.,. ..,,ヾj : .:rl ; : .!   
               !l; ;; .; ; l. ,,,,、ヾ、ツレ' i;;';;;;゙jL; ゙:,゙:, ; ; l
             |,:l;, ':, ; ;l,,l!i';;゙;,    ヾ-'',j ; ;;' l.゙i、; l
              | ;l;':,', ;, '!ヾ.`'''  ,      ,ォj,;:'' ;  !l;:; l
           | ;.!'l !゙,ヾ:「~;,、   ー   ノi''  ;'   ,ノ;; ,l
          ;l.; i ;.!l゙;ヾ,ヽ、;, `''ー ..,,_,. ::'ノ;.},,.  、,;'"; ;:; ;l
          ;'i ; ! ; i! ヾ; :、リ,, -::''"::l::i!::/;'.j、ヽ、j:::::ブヽ、!
          ;' !,' i ; ;; rヾ,:,゙; l:::::::::::::ヽi!フ;ノl'ヽ、,.ノ:;:"   ヽ,
           ,:'.;',' j,.、!'ヾ‐- ゞ、;゙ト、;::::::::::ソ/::!   .|:i       ゙!,
          ,' ,'.;,rヾ .ヽ ヽ......:::ヽi!'::゙ヾ-''リ^7    l/-、     .jヽ
          ,' ;;'.;r゙、 ヾ、j ゙"::::::::;;:::l:::::::::;メ:::::!.    i   ゙i   ,;^ヾ;,
.        ,' ,;',,'.;'i、'l'┘:::::::::::::::l':;:::!::::::::::::!::;'    !.   i!,.:;i ;, .lヾ:;,
       ,:' ,' //,! ゙':::::::::::::::::::::!ノ::::.!:::::::::::;,l.     !.  ,:';;::|, :;: 'l ゙;,゙;
       ;' ,;:'/ ;'/ :::::::::::::::::::::i"::::::.|:::::;,;;'イ     l , ':::::::|,: ; ! ヾ:.,
458nobodyさん:04/05/01 01:13 ID:fGFxpvHE
  i 、 :. ヽヽ_,,.....、,,,....._;/ ,;'   ;,.!
  i.,  ..;;;ヽ       ヾ ,,;_ , /
   ヾ_:::,:'           -,ノ
    ヾ;.   ,         , 、;, 
      ;;    ● , ... 、,● ;: 
       `;.       C)   ,; ' うるせー!パンチ5分の2を教えろ!!
       ,;'     '.、 -‐-ノ ,;'、
      /      )           _     _
     / ,イ 、  ノ/    ∧ ∧―= ̄ `ヽ, _
    / / |   ( 〈 ∵. ・(ミィ〈__ >  ゛ 、_―
   | !  ヽ  ー=- ̄ ̄=_、  (/ , ´ノ
   | |   `iー__=―_ ;, / / /   
    !、リ  -=_二__ ̄_=;, / / ,'
        /  /       /  /|  |
       /  /       !、_/ /   〉
     / _/             |_/
     ヽ、_ヽ
459nobodyさん:04/05/01 01:15 ID:fGFxpvHE
            /∧        /∧
          / / λ     / / λ
         /  /  λ   /  /  λ
       /   /  /λ /   /  /λ
     /          ̄ ̄ ̄      \
    /         /       \     \
   /        /          \    \
  /        /             \    丶
  |                             | 
 |                             |    
 |                            |   PERLオタクを殺す会
 |          ^―――――――      /
  |                           /
   \                        /
    /―/ /   / \/;;;;;;;\////////―\
460nobodyさん:04/05/01 01:16 ID:fGFxpvHE
        /⌒ヽ⌒ヽ
         ....:::..∧Y∧ .
        .::::::::. ・ ・ ::ヽ  
     (     )●(  )  このスレは終了しました
      丶     ー  /    
        l,       j    
       i     i   .j
        |     八   |
         {        }
       | i し " i   '|
      |ノ (   i    i|
      ( '~ヽ   !  ‖
        │     i   ‖
      |      !   ||
      |    │    |
      |       |    | |
     |       |   | |
     |        !    | |
461nobodyさん:04/05/01 01:45 ID:???
ヽ( ゜,_ゝ゜)ノ
   +
   人
462nobodyさん:04/05/01 08:27 ID:???
flockが使えるか否かを判定するにはどうすればいいのでしょうか?

ただし、Internal Server Errorはさけたいと思っています。
つまり・・・

if (?????){
 print "flock 使用可能";
}
else{
 print "flock 使用不可能"
}
とさせたいのですが。。。

よろしくお願いします。
463nobodyさん:04/05/01 08:53 ID:???
evalを検索汁
464nobodyさん:04/05/01 13:21 ID:???
クラスHumanを継承するクラスBakerがあった時に、Humanのnewが

sub new {
 my $class = shift;
 my %params = @_;
 my $self = {
  sex => male,
};
bless $self, $class;
$self->initialize();
return $self;
}

で、Bakerに、外部からアクセスできる変数$skill (パン屋の腕前)と、内部でのみ使用する変数
$east (イースト菌 $east = new East()とかやりたい)を持たせたい時、
どうするのが賢いやり方なのでしょうか?

$eastの方は、ブロックの一番外でmy $eastと宣言したのでいいのだろうか、と思うのですが、
$skillの方は、$self->{skill} = $skillとかやっても、Humanのnewでblessした後なので、
途中で勝手に$selfのキーを増やしたりできるんだろうか、と思いまして…。
465nobodyさん:04/05/01 15:45 ID:???
>>464
関係ないっつーかそういう風に
継承でハマることを避けるために
newとinitializeをわけてるんじゃないの?

Bakerの
initializeでskillとeastのキーを増やしておく。
skillのアクセサを作る。
eastのアクセサを作らないもしくは内部使用に限定する。

$baker->skill;
$baker->_east;
466nobodyさん:04/05/01 16:33 ID:???
>>465
initializeはblessした後に呼び出される訳ですよね?
blessした後に$selfのキー勝手に増やしても大丈夫なんでしょうか…。
467nobodyさん:04/05/01 16:49 ID:???
>>466
何故試さない?
>>1
468nobodyさん:04/05/01 18:49 ID:???
>>467
いや、動くプログラムと良いプログラムは違うっていうか、
動くのは試したんですが、何らかの理由があって推奨されない方法なら
別のアプローチを探さないと、と思いまして。
普通に使われてる方法なら良いのですが…。
469nobodyさん:04/05/01 19:03 ID:???

|  ・・・・・・・・・・・・・・・
\              
   ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
            
     (;;::::: )
    ,/;/⌒/)
  //;: /;:: /./
  (;::::|;:: (;: (/
  \);;:::.\;\
   (;:: ( (<<<ヽ
    .|;: |\;::::\
    );:: |  );:::: )


        _、_  
     (;;:::::,_ノ` ) 彡  マーシェーリィー… !
    ,/;/⌒/)
  //;: /;:: /./
  (;::::|;:: (;: (/
  \);;:::.\;\
   (;:: ( (<<<ヽ
    .|;: |\;::::\
    );:: |  );:::: )
470nobodyさん:04/05/01 19:04 ID:???
      __ _,, -ー ,,
      (/   "つ`..,:
   :/       :::::i:
   :i        ─::!,,
     ヽ.....:::::::::  ::::ij(_::●
    r "     .r ミノ~
  :|::|    ::::| :::i ゚。 ・・・トゥートゥートゥマシェリー・・・
  :|::|    ::::| :::|:
  :`.|    ::::| :::|_:
   :.,'    ::(  :::}:
   :i      `.-‐"
   :ヽ__::',__   ::|:
    :{ ::|   ::|:
    :| ::|   ::|:


    __ _,, -ー ,,
    (/      `..,つ
   /       ::::::', マーシェーリー♪
   i    ●   ●:!
   ヽ...     ( .● )::/  彡くるっ
  r ":::::::.... ,,_ ─:/
  |::|    ::::r ̄:i
  |::|    ::::| :::|
  `.|     ::::| :::|_
   .,'    ::(  :::}
   i       `-‐"
   ヽ__::',__   ::|
    { ::|   ::|
471nobodyさん:04/05/01 19:05 ID:???
                   ,....':::::::::::::゙=:::::、
                 /::::::::::::::::::::::::::::::::゙:、
.                /:::::::::::::::::::,r-:::::::::::::::::゙::、
..               ,l':::::::::::::::::::/-〃゙゙''''''゙\:::::::゙、
                l:::::::::::::::::::,l' ll'l    ゙l;:::::::l,
               ,;:::::::::::::::::::l  .ll.l..    l:::::::::l
              ,ィ:::::::::::::,r-- '''''--=-'l''=-''り::::l
             〃::::::::::::::l'   ゙ - ' ;. l゙ - ' l::::::l   ここのスレには…
             ソ::::::::::::::::l     , ア__,.l,.('' .t:::::j'
.             l::rk:::::::::::::゙l   ,..'゙-、=-:,.゙ t ゙レ   書き込まないで…ほしいです…
             ゝj:::::::,、::::::゙、  ; -==ヲ'弋''''{ ゙l,
            ,.-'::;==' ノ::::::::>'~::::゙=、_,l,.;'゙^'''゙l. ゙、
         ....,.=''   ,,〃'ヘ:::/:::::::::::::::::゙l爪.     l,
        ,.r'',:,:,:,:,:,^~",:,:,:,:,:,:,:7'''',=';,''''ヘ:ノ爻゙、   ,.=''-、
        k,:,\、,:,:,:,:,:,:,:,:,:,l,:,:,:,:/ (ふ勺 ,''l' j::l ゙l,-='',:,:,:,:,:,:゙、
       ,l',:,:,:,:゙、,:,:,:,:,:,:,:,:l,:,:,:,:l---===,,'.j^~:::l ,-゙,:,:,:,:,:,:,:,:,:,:,゙、
       /,:,:,:,:,:,:,゙、,:,:,:,:,:,:j,:,:,:,:,:l l':::::゙ュ), l.,' ;::;,/,:,:,:,:,:,:,:,:,:,:,:,:,:,:,ヘ
      j,:,:,:,:,:,:,:,:,:,゙、,:,:,:,:,l,:,:,:,:,:,k:::::::ヒ_l .;:::ll,:,:,:,:,:,:,l,:,:,:,:,:,:,:,:,:,:,ハ
      ,l,:,:,:,:,:,:,:,:,:,:,:,z,:,:,:,l,:,.,. '^.、::_:j':::::::::::::::::::l,:,:,:,:,:,:,:\,:,:,:,:,:,:,:,:,:,:,\
472nobodyさん:04/05/01 19:05 ID:???
         ,,,r-‐───‐--、
      /     ,,,z-──ュ‐-、
     /,,ミミミミ,,r-‐''    リ  \
    //~             |   ゙i
   i/         ┛┗    |     |
   f |         ┓┏    ヽ   |
   | |                リ   r-、
   | |                 `ヽ/「ワ,|  こんな感じで頼みます・・・
    リ ,,,r==、   ,,r===ュ、      ┐ソ
   ゙i -=◎=-ヽ i−я−- `      ン }      
    ゙i ヽ--‐ .| l `'─‐'"    ノ ト‐/
    |    /l l 、      ,/ ├‐'゙
     .|、  ノr'  レ ヽ¬、,,.... -‐   |
     ゙iヽ‐' ヽ,,,,,r''´     ノ    |
     ヽ  ト‐==─イ~、 /    .ト、
      \ ヽ  ̄__:::‐'  y    ノ 
         \ ` ::  , '   
        `ー--──'"-' 
473nobodyさん:04/05/01 19:08 ID:???
                    /    /     !    | ゙、    `' -、  l     \ ``
                  /    /-‐=、''" ', !  ト -ヽ__      ヽl  \   ヽ
                  , '     ,イ. ジ.l7!   ゙、|ヽ | ,r.‐、!,.``  !   , |、 \!    ゙,
                /    /! !.   |':l     ヽl l7l  i   |   'l ヽ         !
              /    / イ.   `  ,     .l'ノ  !.  i    i \       |
            , '       /   ! /// <   ///  ! |      ゙、  `ヽ、  ,'
          -="-ァ     i    ヽ    rァ─- 、      _| /       ゙、   ヽノ
              i        !    i \.  .,,___,,.)   / |/         ゙、
              l  ,     r    |   ` 、    _ ,. べ  |       、 ヽ 
              ヽ/ヽ、  |       .`l ""´ l .   ヽ/       _,)``
                  ヽ.」  ___,./ ' ´  ___ `ー 、_ / ,ノレ'
                   ,.r '´    ー-`  '´ - ‐  ̄    `'ー 、
                  ,/  _,.                      ヽ
                  ,レ' ´                i      l
                /           ,             ,l      l
               。'i            !     r',ヽ    l l       l
        ,、r;,         i'゙            !      ヾ'-'    l. l     l
    _,r'´、l.レ'、         '、          , '、          ,/ l     ,.!v-、,_
   l L.., }   !         ハ、     , ‐'  ヽ、       ノ  /!    /`,/_,l L,
   l゙l ヘ」/   l.      /  `''┬ ' ´     `'ー----- '´ ,/ l   /  !:イ、_ノ l、
アダルトとPERLは禁止
474nobodyさん:04/05/01 19:09 ID:???
  /^~"´ ̄-‐‐‐'''"´/:/;ノ;;;;ノ://                _、-、_
 /::::::/:::::::_,,,、---‐‐'''`~,、-''/::/              /"`'ー-''`''-、これなんのAA・・・?
/:::/:-‐''''"~~::::::::;;;;-、,,,,、-,,、-‐ヽ,,_             /        ヽ
;/;;'`"~、-''''''~^'''''ー-、_,,i:i、  ヽ`ヽ、;ヽ、,,,ノ.   /"´ ̄~''/         ::::ヽ
;;;/~":、---、___/´ ,,i:'''  ::   ヽ. ヽ.`'''"´  /´    :::./         :::::::i
;;;;;'''''^~~~~^'''''/ー-  ';、 :::    `  ヽ`''ー-,,,i_    -‐''"         ::::::::;/-、,
;;;、;;;`''ー-,,,,,,,,,,,,,,_,,,,,、_   ''       ',::::    `'ー _、-'''~ ̄`''''''ー-、  :::::;/::  ヽ、
;;;ヽ、ー、;;ー-、,,,,,,,、-‐''"    .;´ ̄`,   ',::::,,,,、-  /"'::;,:ヽ    、    ヽ.:::::::      ''ー
:::::ー、ヽ、,,''ー-ヽ.''''",.,;' "^' 'ー-‐'' . _、-'''''"´  / ヽ,,,ノ   ヽ|     ヽ::::   ::
:::ヽ、`''ー-、ー-、'ヽ"、i;.     ヽ /"     i:::        i:     ':::   :::::
、::ヽ;;ヽ、:ー-、,,,,,、.ヽ ';''   ノノノ/;/        i::::::::::      υ    "    :::
ヽ,,_::''‐、,,,,''ー-''ー-"''/~'"''"/:/::      ::、:::i..::::::::::::::::::::::::::::::::::::       :::::::::
  ヽー''"~´     ヽ、  "`'i::::::::i、:..    :~^ヽ:::::::::::::::::::::::::::::ノ:::::::::::::::i'/::::::::::::::::::::::
~´   ::: :::::::::;;;;;; ;;;;;;;;;;;_,,、--、_i.::::::'ノ::::::::     `''ー-、,,,,,,,,,,‐'":::::::::υ::::υ::::::::::::::::::::::
    ヽ'''''''''''''' ''  :::::;;;;;;;;;;;;;;;;`-、:::::::::::::::::iノ:::::::::::   """`''ー、,,_;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
475nobodyさん:04/05/01 19:10 ID:???
  i 、 :. ヽヽ_,,.....、,,,....._;/ ,;'   ;,.!
  i.,  ..;;;ヽ       ヾ ,,;_ , /
   ヾ_:::,:'           -,ノ
    ヾ;.   ,         , 、;, 
      ;;    ● , ... 、,● ;: 
       `;.       C)   ,; ' うるせー!パンチ5分の2を教えろ!!
       ,;'     '.、 -‐-ノ ,;'、
      /      )           _     _
     / ,イ 、  ノ/    ∧ ∧―= ̄ `ヽ, _
    / / |   ( 〈 ∵. ・(ミィ〈__ >  ゛ 、_―
   | !  ヽ  ー=- ̄ ̄=_、  (/ , ´ノ
   | |   `iー__=―_ ;, / / /   
    !、リ  -=_二__ ̄_=;, / / ,'
        /  /       /  /|  |
       /  /       !、_/ /   〉
     / _/             |_/
     ヽ、_ヽ

476nobodyさん:04/05/01 19:10 ID:???
        /⌒ヽ⌒ヽ
         ....:::..∧Y∧ .
        .::::::::. ・ ・ ::ヽ  
     (     )●(  )  このスレは終了しました
      丶     ー  /    
        l,       j    
       i     i   .j
        |     八   |
         {        }
       | i し " i   '|
      |ノ (   i    i|
      ( '~ヽ   !  ‖
        │     i   ‖
      |      !   ||
      |    │    |
      |       |    | |
     |       |   | |
     |        !    | |
477nobodyさん:04/05/01 19:50 ID:???
>>468
「blessした後に$selfのキー勝手に増やしても大丈夫か否か」という
問いに対し「何故試さない?」という答えなんだが…。>>464 だけでは
君がどう実装しているか分かりかねるので、善し悪しを尋ねられても
誰も答えられんだろう。

OO 設計に関するノウハウを知りたければ、その手の本なりサイトを
一通り読んだ方が、こんな処で一問一答してるより早いんじゃないか?
もしくはこの板なら下のスレ辺りに動くコードを晒して揉んでもらう
事を勧める。
http://pc5.2ch.net/test/read.cgi/php/1049514428/
http://pc5.2ch.net/test/read.cgi/php/1016474386/
478nobodyさん:04/05/01 21:32 ID:???
479nobodyさん:04/05/01 21:38 ID:???
レスついてるみたいだけどせっかく書いたし。

>464
bless は単に型付けするだけだから、その後、キーを増やそうがその事自体に問題はない。
ただし、基底クラスで利用しているキーとぶつかったりしたら問題を引き起こす可能性はあるけどな。
ちなみに、一度 bless した後、別のクラスに bless し直すことだって可能なんで、bless を神聖視する
必要はない。

個人的には C++ 使いなので、派生クラスの new の中で基底クラスの new を呼ぶ方が好きだなぁ。
ttp://www.perldoc.com/perl5.8.0/pod/perltoot.html#Overridden-Methods
でも、この辺は Perl らしく TMTOWTDI なんで好みに合わせればいいと思う。
480nobodyさん:04/05/01 22:10 ID:???
>>477-479
>bless を神聖視する必要はない。
thx すっきりしました
481nobodyさん:04/05/02 15:15 ID:???
DBD::Pgモジュールについて質問ですが、executeのあとに
finishしないと まずかったりしますか?
今書いてるソース、すべてつけていないもので、、、
482nobodyさん:04/05/02 15:20 ID:???
なんでこうもマルチポストが多いのかな。
483nobodyさん:04/05/02 20:05 ID:???
;;;;;;;;;/:::::::::::::::::::://         //"    /;;;;;イ''~|||;;;;;;;/:::::::::::::://l .ノ  /
;;;;;;;/:::::::::::::::::::// 、,,       /"   /;;;;-'" |:::::||;;;;;;/:::::::::::/  レ'''"  /;;;;;;
;;;;;/:::::::::::::::::://   ゙丶、.    /   /;;;-'" ,,-、 |::::||l;;;;/:::::::/   l   /ヽ/ノ
;;;/::::::::::::::::::/{、''''''‐-、,  ゙ヽ,     /;/  .i' o=-‐'|;;;/:::::/     ┬-'' 、 /;;;
;;/:::::::::::::::::/;;;\ヽ┬-、゙'ヽ、 | lヽ,//ヽ、,,-‐''~,-‐'''''|;;/:/ //ノ;; l  ト,  ヽ/;;;;
/::::::::::::::::/;;;;;;;;;;;\ \\゙'ヽ、l ヽ"゙'" ゙-'",-''"~    |/    //" l  |ヽ  /;;;;;;
:::::::::::::::::{;;;;;;;;;;;;;;;;;\ \\( ol|"   "-'"           "     | ヽ /;;;;;;;;;;
::::::::::::::::::|;;;;;;;;;;;;;;;;;;;;;\ ゙‐‐'''"~/       /゙''ヽ            .| /;;;;;;;;;;;;;;
i,::::::::::::::::|;;;;/|;;;;;;;;;;;;;;ヽ'"~  /    _   /ヽ、 \          ノ /;;;;;;;;;;;;;;;;
;゙i:::::::::::::::|/  |;;;;;;;;;;;;;;;;;;゙、.  /   //  / /-゙i,. ヽ         /./;;;;;;;;;;;;;;;;/::
;;;;i,::::::::::::|  |;;;;;;;;;;;;;;;;;;;;;;ヽ ヽ、-'"'''"‐''",,-''",/  ゙i,         //;;;;;;;;;;;;;;;;/::::
;;;;゙i,:::::::::::|  |;;;;;;;;;;;;;;;;;;;;;;;;;\   ヽ\'` _/~"  ,ハ        / /;;;;;;;;;;;;;;;;;|:::::
;;;;;;゙i,:::::::::|''" |;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙ヽ、    \'{,,,-‐'"__ノ       / i;;;;;;;;;;;;;;;;;;;|:::::
;;;;;;;;;゙、::::::|  |;;;;;;;;;;;;;;;;;;;;;;;∧;;;;;;;;;;;;゙ヽ、   ヽ-‐'"~ ,,,      /ヽ、i';;;;;;;;;;;;;;;;;;;|::::::
484nobodyさん:04/05/02 20:39 ID:???
>>481
問題無いよ。経験上ね。
485nobodyさん:04/05/02 22:02 ID:v1LUOZxN
@dataには数文字の文字列の後\nが付いている要素がいくつか入っています。
ヒアドキュメント内で配列(@data)を出力したくて、そのまま@dataとヒアドキュメント内に書いたのですが
謎の半角スペースが要素の一番最初に付いてしまいます。
これじゃあな、と思いヒアドキュメント内に${ foreach my $data ( @data ) { print $data; }
と書いてみたのですがヒアドキュメントの一番最初に出力されてしまい上記コードを書いた場所に出力されません。。。
どなたかヒアドキュメント内で配列を出力する良い方法を知っていたら、ご指導して頂けると幸いです。
486nobodyさん:04/05/02 22:05 ID:???
$"='';
or
chomp(@data);
487485:04/05/02 22:21 ID:???
>>486
なるほど、$"でスカラー変数出力時の区切り文字を変更できるんですね。
試してみたら奇麗に出力出来ました。本当にありがとうございました。。。
488485:04/05/02 22:24 ID:???
ぐわ、スカラー変数じゃなくて配列だった。。。
今まで一々ヒアドキュメントを終了させてからforeachで出力していたので本当に助かりました。。。
489nobodyさん:04/05/03 00:22 ID:???
a
490nobodyさん:04/05/03 00:34 ID:???
>>484
ありがとうございます。
安心しました。
491nobodyさん:04/05/03 01:11 ID:???
      パンチ5分の2を喰らえええええええええ!!
                    _ /- イ、_
           __        /: : : : : : : : : : : (
          〈〈〈〈 ヽ     /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
          〈⊃  }     {:: : : :ノ --‐' 、_\: : ::}
   ∩___∩  |   |      {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
   | ノ      ヽ !   !   、  l: :ノ /二―-、 |: ::ノ
  /  ●   ● |  /   ,,・_  | //   |/ /::ノ
  |    ( _●_)  ミ/ , ’,∴ ・ ¨  〉(_二─-┘{/
 彡、   |∪|  /  、・∵ ’  /、//|  ̄ ̄ヽ     
/ __  ヽノ /         /   // |//\ 〉
(___)   /         /    //   /\ /
       /          /        /    
      ↑初心者         Perlオタク↑
\   ∩─ー、    ====
  \/ ● 、_ `ヽ   ======
  / \( ●  ● |つ
  |   X_入__ノ   ミ    Perlオタクを!首吊って引き殺せ━━━━━!!
   、 (_/   ノ /⌒l
   /\___ノ゙_/  /  =====
  〈         __ノ  ====
   \ \_    \
    \___)     \   ======   (´⌒
       \   ___ \__  (´⌒;;(´⌒;;
         \___)___)(´;;⌒  (´⌒;;  ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終               了了了><書き込み禁止>
492nobodyさん:04/05/03 01:12 ID:???
      パンチ5分の2を喰らえええええええええ!!
                    _ /- イ、_
           __        /: : : : : : : : : : : (
          〈〈〈〈 ヽ     /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
          〈⊃  }     {:: : : :ノ --‐' 、_\: : ::}
   ∩___∩  |   |      {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
   | ノ      ヽ !   !   、  l: :ノ /二―-、 |: ::ノ
  /  ●   ● |  /   ,,・_  | //   |/ /::ノ
  |    ( _●_)  ミ/ , ’,∴ ・ ¨  〉(_二─-┘{/
 彡、   |∪|  /  、・∵ ’  /、//|  ̄ ̄ヽ     
/ __  ヽノ /         /   // |//\ 〉
(___)   /         /    //   /\ /
       /          /        /    
      ↑初心者         Perlオタク↑
\   ∩─ー、    ====
  \/ ● 、_ `ヽ   ======
  / \( ●  ● |つ
  |   X_入__ノ   ミ    Perlオタクを!首吊って引き殺せ━━━━━!!
   、 (_/   ノ /⌒l
   /\___ノ゙_/  /  =====
  〈         __ノ  ====
   \ \_    \
    \___)     \   ======   (´⌒
       \   ___ \__  (´⌒;;(´⌒;;
         \___)___)(´;;⌒  (´⌒;;  ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終               了了了><書き込み禁止>
493nobodyさん:04/05/03 01:14 ID:???
      パンチ5分の2を喰らえええええええええ!!
                    _ /- イ、_
           __        /: : : : : : : : : : : (
          〈〈〈〈 ヽ     /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
          〈⊃  }     {:: : : :ノ --‐' 、_\: : ::}
   ∩___∩  |   |      {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
   | ノ      ヽ !   !   、  l: :ノ /二―-、 |: ::ノ
  /  ●   ● |  /   ,,・_  | //   |/ /::ノ
  |    ( _●_)  ミ/ , ’,∴ ・ ¨  〉(_二─-┘{/
 彡、   |∪|  /  、・∵ ’  /、//|  ̄ ̄ヽ     
/ __  ヽノ /         /   // |//\ 〉
(___)   /         /    //   /\ /
       /          /        /    
      ↑初心者         Perlオタク↑
\   ∩─ー、    ====
  \/ ● 、_ `ヽ   ======
  / \( ●  ● |つ
  |   X_入__ノ   ミ    Perlオタクを!首吊って引き殺せ━━━━━!!
   、 (_/   ノ /⌒l
   /\___ノ゙_/  /  =====
  〈         __ノ  ====
   \ \_    \
    \___)     \   ======   (´⌒
       \   ___ \__  (´⌒;;(´⌒;;
         \___)___)(´;;⌒  (´⌒;;  ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終               了了了><書き込み禁止>
494nobodyさん:04/05/03 01:14 ID:???
      パンチ5分の2を喰らえええええええええ!!
                    _ /- イ、_
           __        /: : : : : : : : : : : (
          〈〈〈〈 ヽ     /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
          〈⊃  }     {:: : : :ノ --‐' 、_\: : ::}
   ∩___∩  |   |      {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
   | ノ      ヽ !   !   、  l: :ノ /二―-、 |: ::ノ
  /  ●   ● |  /   ,,・_  | //   |/ /::ノ
  |    ( _●_)  ミ/ , ’,∴ ・ ¨  〉(_二─-┘{/
 彡、   |∪|  /  、・∵ ’  /、//|  ̄ ̄ヽ     
/ __  ヽノ /         /   // |//\ 〉
(___)   /         /    //   /\ /
       /          /        /    
      ↑初心者         Perlオタク↑
\   ∩─ー、    ====
  \/ ● 、_ `ヽ   ======
  / \( ●  ● |つ
  |   X_入__ノ   ミ    Perlオタクを!首吊って引き殺せ━━━━━!!
   、 (_/   ノ /⌒l
   /\___ノ゙_/  /  =====
  〈         __ノ  ====
   \ \_    \
    \___)     \   ======   (´⌒
       \   ___ \__  (´⌒;;(´⌒;;
         \___)___)(´;;⌒  (´⌒;;  ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終               了了了><書き込み禁止>
495nobodyさん:04/05/03 01:15 ID:???
      パンチ5分の2を喰らえええええええええ!!
                    _ /- イ、_
           __        /: : : : : : : : : : : (
          〈〈〈〈 ヽ     /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
          〈⊃  }     {:: : : :ノ --‐' 、_\: : ::}
   ∩___∩  |   |      {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
   | ノ      ヽ !   !   、  l: :ノ /二―-、 |: ::ノ
  /  ●   ● |  /   ,,・_  | //   |/ /::ノ
  |    ( _●_)  ミ/ , ’,∴ ・ ¨  〉(_二─-┘{/
 彡、   |∪|  /  、・∵ ’  /、//|  ̄ ̄ヽ     
/ __  ヽノ /         /   // |//\ 〉
(___)   /         /    //   /\ /
       /          /        /    
      ↑初心者         Perlオタク↑
\   ∩─ー、    ====
  \/ ● 、_ `ヽ   ======
  / \( ●  ● |つ
  |   X_入__ノ   ミ    Perlオタクを!首吊って引き殺せ━━━━━!!
   、 (_/   ノ /⌒l
   /\___ノ゙_/  /  =====
  〈         __ノ  ====
   \ \_    \
    \___)     \   ======   (´⌒
       \   ___ \__  (´⌒;;(´⌒;;
         \___)___)(´;;⌒  (´⌒;;  ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終               了了了><書き込み禁止>
496nobodyさん:04/05/03 03:58 ID:???
 
497nobodyさん:04/05/03 04:33 ID:???
絡まれて大変なスレですね
498nobodyさん:04/05/03 04:41 ID:???
別に何とも思ってない
499nobodyさん:04/05/03 04:48 ID:???
そのウチ削除人が消してくれると思うし。
て言うかこいつ一年くらい前からいるんですよ。
500nobodyさん:04/05/03 05:18 ID:???
一年・・・。皆さん大人の対応ですね
501nobodyさん:04/05/03 05:29 ID:???
ああ。もう1年経つのか。早いなあ。
確か誰にも理解できない日本語で質問(っていうか書き込み)して、
無視した(っていうか何を答えたらよいか誰も分からなかった)ら、
「初心者には不親切だ」って勝手に切れて粘着してる。
ちゃんと質問すればちゃんと答えるのにねえ。
502nobodyさん:04/05/03 12:58 ID:???
うむ。俺も当時から居るが、
よく続くと関心するくらいだ
たしか格ゲースクリプトだっけな
503nobodyさん:04/05/03 13:22 ID:???
「パンチを5分の2にする方法を教えてください」だったっけ。
punch *= 2.0/5.0;
終了
504nobodyさん:04/05/03 14:42 ID:???
AAもそれなりに進化してて面白いね。
505nobodyさん:04/05/03 14:45 ID:???
進化はAAだけ(ry
506nobodyさん:04/05/03 20:26 ID:???
進化していくAAをNGワードに入れていってるから、うちのngword.txtもかなり進化した。
来てたのわからなかった。
507nobodyさん:04/05/03 23:50 ID:???
>>506
最近のスパムフィルタみたいだね。
508nobodyさん:04/05/04 12:04 ID:???
あぁ、懐かしいな…。
たまにアク禁されるのかパタリと来なくなるんだよね。
でもそういう時、あいつどうしてるんだろう・・・とちょっとモヤモヤして気になるんだよ。
509nobodyさん:04/05/04 16:43 ID:???
一度Rock54にされたらしい。やっほー接続だったかな。
510nobodyさん:04/05/04 18:59 ID:???
例えば、ブラウザから100MBのファイルをPOSTすると「サイズが大きすぎ!」とエラー表示させてますが、
エラー表示されるまでに時間がかかります。
(ブラウザがアップロードに専念しているため)

つまりはブラウザのアップロード処理を中断させて、
即エラー表示させたいのですが、Perlで制御できますか?
511nobodyさん:04/05/04 19:04 ID:???
>>510
なんでエラーにするようなサイズをアップロードさせるわけ?
最初から受け付けなきゃいいだろ。
512nobodyさん:04/05/04 19:33 ID:???
もしかしてアップロードして100MBきたら処理打ち切りとかやってんのー?
ISDNのおじさんブチ切れますよ?
初めからファイル容量計算しろ
513nobodyさん:04/05/04 19:49 ID:???
だからそのはじめにファイルサイズを計算する方法がわらないんですってば!
514nobodyさん:04/05/04 19:55 ID:???
      おまえらのせいでエラーばっかだぜえええええええええ!!
                    _ /- イ、_
           __        /: : : : : : : : : : : (
          〈〈〈〈 ヽ     /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
          〈⊃  }     {:: : : :ノ --‐' 、_\: : ::}
   ∩___∩  |   |      {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
   | ノ      ヽ !   !   、  l: :ノ /二―-、 |: ::ノ
  /  ●   ● |  /   ,,・_  | //   |/ /::ノ
  |    ( _●_)  ミ/ , ’,∴ ・ ¨  〉(_二─-┘{/
 彡、   |∪|  /  、・∵ ’  /、//|  ̄ ̄ヽ     
/ __  ヽノ /         /   // |//\ 〉
(___)   /         /    //   /\ /
       /          /        /    
      ↑初心者         Perlオタク↑
\   ∩─ー、    ====
  \/ ● 、_ `ヽ   ======
  / \( ●  ● |つ
  |   X_入__ノ   ミ    Perlオタクを!首吊って引き殺せ━━━━━!!
   、 (_/   ノ /⌒l
   /\___ノ゙_/  /  =====
  〈         __ノ  ====
   \ \_    \
    \___)     \   ======   (´⌒
       \   ___ \__  (´⌒;;(´⌒;;
         \___)___)(´;;⌒  (´⌒;;  ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終               了了了><書き込み禁止>
515nobodyさん:04/05/04 19:56 ID:???
      おまえらのせいでエラーばっかだぜえええええええええ!!
                    _ /- イ、_
           __        /: : : : : : : : : : : (
          〈〈〈〈 ヽ     /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
          〈⊃  }     {:: : : :ノ --‐' 、_\: : ::}
   ∩___∩  |   |      {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
   | ノ      ヽ !   !   、  l: :ノ /二―-、 |: ::ノ
  /  ●   ● |  /   ,,・_  | //   |/ /::ノ
  |    ( _●_)  ミ/ , ’,∴ ・ ¨  〉(_二─-┘{/
 彡、   |∪|  /  、・∵ ’  /、//|  ̄ ̄ヽ     
/ __  ヽノ /         /   // |//\ 〉
(___)   /         /    //   /\ /
       /          /        /    
      ↑初心者         Perlオタク↑
\   ∩─ー、    ====
  \/ ● 、_ `ヽ   ======
  / \( ●  ● |つ
  |   X_入__ノ   ミ    Perlオタクを!首吊って引き殺せ━━━━━!!
   、 (_/   ノ /⌒l
   /\___ノ゙_/  /  =====
  〈         __ノ  ====
   \ \_    \
    \___)     \   ======   (´⌒
       \   ___ \__  (´⌒;;(´⌒;;
         \___)___)(´;;⌒  (´⌒;;  ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終               了了了><書き込み禁止>
516nobodyさん:04/05/04 19:57 ID:???
     エラーばっか出す、嘘ばっか教えんじゃねえええええええええ!!
                    _ /- イ、_
           __        /: : : : : : : : : : : (
          〈〈〈〈 ヽ     /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
          〈⊃  }     {:: : : :ノ --‐' 、_\: : ::}
   ∩___∩  |   |      {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
   | ノ      ヽ !   !   、  l: :ノ /二―-、 |: ::ノ
  /  ●   ● |  /   ,,・_  | //   |/ /::ノ
  |    ( _●_)  ミ/ , ’,∴ ・ ¨  〉(_二─-┘{/
 彡、   |∪|  /  、・∵ ’  /、//|  ̄ ̄ヽ     
/ __  ヽノ /         /   // |//\ 〉
(___)   /         /    //   /\ /
       /          /        /    
      ↑初心者         Perlオタク↑
\   ∩─ー、    ====
  \/ ● 、_ `ヽ   ======
  / \( ●  ● |つ
  |   X_入__ノ   ミ    Perlオタクを!首吊って引き殺せ━━━━━!!
   、 (_/   ノ /⌒l
   /\___ノ゙_/  /  =====
  〈         __ノ  ====
   \ \_    \
    \___)     \   ======   (´⌒
       \   ___ \__  (´⌒;;(´⌒;;
         \___)___)(´;;⌒  (´⌒;;  ズザザザ
ここは不親切な奴ばかりで死んでほしいね!初心者質問は禁止!!質問した者は
荒らしと同罪!!!<終終終               了了了><書き込み禁止>
517nobodyさん:04/05/04 19:58 ID:???
                   ,....':::::::::::::゙=:::::、
                 /::::::::::::::::::::::::::::::::゙:、
.                /:::::::::::::::::::,r-:::::::::::::::::゙::、
..               ,l':::::::::::::::::::/-〃゙゙''''''゙\:::::::゙、
                l:::::::::::::::::::,l' ll'l    ゙l;:::::::l,
               ,;:::::::::::::::::::l  .ll.l..    l:::::::::l
              ,ィ:::::::::::::,r-- '''''--=-'l''=-''り::::l
             〃::::::::::::::l'   ゙ - ' ;. l゙ - ' l::::::l   ここのスレには…
             ソ::::::::::::::::l     , ア__,.l,.('' .t:::::j'
.             l::rk:::::::::::::゙l   ,..'゙-、=-:,.゙ t ゙レ   書き込まないで…ほしいです…
             ゝj:::::::,、::::::゙、  ; -==ヲ'弋''''{ ゙l,
            ,.-'::;==' ノ::::::::>'~::::゙=、_,l,.;'゙^'''゙l. ゙、
         ....,.=''   ,,〃'ヘ:::/:::::::::::::::::゙l爪.     l,
        ,.r'',:,:,:,:,:,^~",:,:,:,:,:,:,:7'''',=';,''''ヘ:ノ爻゙、   ,.=''-、
        k,:,\、,:,:,:,:,:,:,:,:,:,l,:,:,:,:/ (ふ勺 ,''l' j::l ゙l,-='',:,:,:,:,:,:゙、
       ,l',:,:,:,:゙、,:,:,:,:,:,:,:,:l,:,:,:,:l---===,,'.j^~:::l ,-゙,:,:,:,:,:,:,:,:,:,:,゙、
       /,:,:,:,:,:,:,゙、,:,:,:,:,:,:j,:,:,:,:,:l l':::::゙ュ), l.,' ;::;,/,:,:,:,:,:,:,:,:,:,:,:,:,:,:,ヘ
      j,:,:,:,:,:,:,:,:,:,゙、,:,:,:,:,l,:,:,:,:,:,k:::::::ヒ_l .;:::ll,:,:,:,:,:,:,l,:,:,:,:,:,:,:,:,:,:,ハ
      ,l,:,:,:,:,:,:,:,:,:,:,:,z,:,:,:,l,:,.,. '^.、::_:j':::::::::::::::::::l,:,:,:,:,:,:,:\,:,:,:,:,:,:,:,:,:,:,\
518512:04/05/04 19:58 ID:???
ハーン
おじさんマジ切れますよ?I/Oの関数みろYO!!!

@stat=stat $file;
$size=$stat[7];

if(104857600<=$size) print "100MBより多いぞゴルァ";
519nobodyさん:04/05/04 19:59 ID:???
        /⌒ヽ⌒ヽ
         ....:::..∧Y∧ .
        .::::::::. ・ ・ ::ヽ  
     (     )●(  )  初心者書き込み禁止!!
      丶     ー  /    BY PERLオタク
        l,       j    
       i     i   .j
        |     八   |
         {        }
       | i し " i   '|
      |ノ (   i    i|
      ( '~ヽ   !  ‖
        │     i   ‖
      |      !   ||
      |    │    |
      |       |    | |
     |       |   | |
     |        !    | |
520nobodyさん:04/05/04 20:01 ID:???
        /⌒ヽ⌒ヽ
         ....:::..∧Y∧ .
        .::::::::. ・ ・ ::ヽ  
     (     )●(  )  初心者書き込み禁止!!
      丶     ー  /    BY PERLオタク
        l,       j    
       i     i   .j
        |     八   |
         {        }
       | i し " i   '|
      |ノ (   i    i|
      ( '~ヽ   !  ‖
        │     i   ‖
      |      !   ||
      |    │    |
      |       |    | |
     |       |   | |
     |        !    | |
521nobodyさん:04/05/04 20:02 ID:???
        /⌒ヽ⌒ヽ
         ....:::..∧Y∧ .
        .::::::::. ・ ・ ::ヽ  
     (     )●(  )  初心者書き込み禁止!!
      丶     ー  /    BY PERLオタク
        l,       j    
       i     i   .j
        |     八   |
         {        }
       | i し " i   '|
      |ノ (   i    i|
      ( '~ヽ   !  ‖
        │     i   ‖
      |      !   ||
      |    │    |
      |       |    | |
     |       |   | |
     |        !    | |
522nobodyさん:04/05/04 20:02 ID:???
        /⌒ヽ⌒ヽ
         ....:::..∧Y∧ .
        .::::::::. ・ ・ ::ヽ  
     (     )●(  )  初心者書き込み禁止!!
      丶     ー  /    BY PERLオタク
        l,       j    
       i     i   .j
        |     八   |
         {        }
       | i し " i   '|
      |ノ (   i    i|
      ( '~ヽ   !  ‖
        │     i   ‖
      |      !   ||
      |    │    |
      |       |    | |
     |       |   | |
     |        !    | |
523nobodyさん:04/05/04 20:03 ID:???
        /⌒ヽ⌒ヽ
         ....:::..∧Y∧ .
        .::::::::. ・ ・ ::ヽ  
     (     )●(  )  初心者書き込み禁止!!
      丶     ー  /    BY PERLオタク
        l,       j    
       i     i   .j
        |     八   |
         {        }
       | i し " i   '|
      |ノ (   i    i|
      ( '~ヽ   !  ‖
        │     i   ‖
      |      !   ||
      |    │    |
      |       |    | |
     |       |   | |
     |        !    | |
524nobodyさん:04/05/04 20:05 ID:???
592 名前: nobodyさん [] 投稿日:03/08/07 16:03 ID:MNjVgF7U
ゲームで、対戦で、攻撃はパンチとキック、どちらかは2分の1
パンチの場合は、5回に1回はダメージ低い。
さらに5分の2の確率でミスをする。

というのを、1ターンの各攻撃を下のスクリプトに書いたが動かない
誰かこの初心者を助けてください
593 名前: nobodyさん [] 投稿日:03/08/07 16:03 ID:MNjVgF7U
プレイヤー1は$play11の攻撃
プレイヤー2は$play22の攻撃

$play11 = $sentaku1   //Syntax Error
$play22 = $sentaku1   //Syntax Error
$kik = 60  //Syntax Error

$sentaku ={  //Syntax Error
 $play1 = int(rand 2)  //Syntax Error
 if($play1 == 0) $kik  //Syntax Error $kikって何だよオブジェクトか?で、メソッドは?
}  //Syntax Error

else($play1 == 1) {  //Syntax Error Elseに条件つけんなよw
 $bougyo = int(rand 5) //Syntax Error だからセミコロン・・・
 if($bougyo =< 1)   0;
 else($bougyo >= 2) 1;
}

{  //Syntax Error  エエエエ・・・・ なにこの括弧
 $panti = int(rand 5);
 if($panti == 0)  $panti1 = 10;
 else($panti > 0) $panti2 = 20;
 }  //Syntax Error 括弧・・・
  * $bougyo;  //Syntax Error  おい、オペランド足りんぞ
 }  //Syntax Error 括弧・・・
}  //Syntax Error 括弧・・・


括弧の対応おかしいーーwww
526510:04/05/04 20:12 ID:???
いえいえ、サーバー側でファイル化する前にCONTENT_LENGTHで判断してます。
念のためにファイル化した後もサイズチェック。

なにかしら処理途中でレスポンスヘッダを送信できれば、
アップロードに専念しているブラウザも止められるかなぁ?
・・・と、考えつつも案が浮かばず放置している状態なのです。
527nobodyさん:04/05/04 20:13 ID:???
>>526
>念のためにファイル化した後もサイズチェック。
だから、その行為がクライアントから見ると「アップロード」になるわけで・・・
CONTENT_LENGTHで判断するだけでいいだろ
528nobodyさん:04/05/04 21:35 ID:???
>>510
http://httpd.apache.org/docs/mod/core.html#limitrequestbody
Apacheであれば、規定量を超えたら413(Request Entity Too Large)が
返るように設定できるけど、クライアントを止められるかどうかは不明。

同様の処理はmod_perlであればヘッダ解析フェーズで可能かも。
CGIレベルでは無いことは確か。
529nobodyさん:04/05/04 21:56 ID:???
だから527が言ってるようにCONTENT_LENGTHで(ry
(´-`).。oO(なんで鯖までいじらにゃならんのよ・・・)
530510:04/05/04 22:00 ID:???
やはりPerlへ処理が渡された時点で手遅れみたいですね。
残念だけど諦めます。

> CONTENT_LENGTHで判断するだけでいいだろ
申し訳ない。今のロジックをみたらCONTENT_LENGTHのチェックと、
STDINからデータ取得時のチェックの二段階だけだった。
531nobodyさん:04/05/04 22:02 ID:???
>592 名前: nobodyさん [] 投稿日:03/08/07 16:03 ID:MNjVgF7U

my @attack = (
sub {
my($damage, $rate) = (100, 10);
$damage *= 1 + ((1 / 2 <=> rand) * rand $rate) / 100;
$damage *= 1 / 3 unless int rand 5;
$damage = 0 if 2 > rand 5;
'パンチ', int $damage;
},
sub {
my($damage, $rate) = (200, 10);
$damage *= 1 + ((1 / 2 <=> rand) * rand $rate) / 100;
'キック', int $damage;
}
);

for (1..20) {
print $attack[rand 2]->(), "\n";
}
532nobodyさん:04/05/05 13:19 ID:???
Cookieクリアについて質問ですが、「ブラウザ(セッション)を
閉じたとき」にCookieをクリアするためにはexpiresを空に、
有効期限を決めるにはexpiresを設定すればいいだけのこと
ですが、この2種を同居させることは不可能でしょうか。

つまりやりたいことは、「有効期限を設定しておいても、ブラウザ
が閉じられればCookieはクリアされる」ということです。

うまくいかないので質問させていただきました。
宜しくお願い致します。
533nobodyさん:04/05/05 13:42 ID:???
>>532
勘違い擦れ違い板違い
534nobodyさん:04/05/05 15:22 ID:???
>>533
申し訳ありません。
違うところで質問させていただきますね。
535nobodyさん:04/05/05 17:38 ID:???
>>532
Netscapeベースの一般的なクッキーだと不可能。
クッキーの中に有効期限を書いておき、サーバ側でチェックするとか。
536 ◆Emx7X7JtuI :04/05/05 21:16 ID:jTThsR/v
質問させて頂きますm(_ _)m

$day = "20040505";
の時、$dayから 2004、05、05を分けて取り出すには、
$yyyy = substr($day, 0, 4);
$mm = substr($day, 4, 2);
$dd = substr($day, 6, 2);

とするしかないでしょうか?
もう少し良い方法がありましたらご教授お願いします。
537nobodyさん:04/05/05 21:40 ID:???
>>536
これでどうかな
($yyyy, $mm, $dd) = unpack("a4a2a2", "20040505");
538nobodyさん:04/05/05 21:40 ID:???
>>536
TMTOWTDI.

# substr
my($yyyy, $mm, $dd) = (substr($day, 0, 4), substr($day, 4, 2), substr($day, 6, 2));

# unpack
my($yyyy, $mm, $dd) = unpack 'A4A2A2', $day;

# パターンマッチ
my($yyyy, $mm, $dd) = $day =~ /^(\d{4})(\d\d)(\d\d)/;

# 回りくどい方法
my @tmp = split //, $day;
my $yyyy = join '', splice @tmp, 0, 4;
my $mm = join '', splice @tmp, 0, 2;
my $dd = join '', @tmp;
539nobodyさん:04/05/05 21:45 ID:???
printf "%d %d %d", $day =~ /^(\d{4})(\d{2})(\d{2})$/;
540 ◆Emx7X7JtuI :04/05/05 21:49 ID:???
>>537-538
ありがとうございます!
umpackという手がありましたね。
これでいこうと思います。

>>538
>#バターンマッチ
この書き方がよく分かってないんですよ<私
サンプルソースを写して、何となくうまくいってるって感じで(汗)
がんばって勉強します!
541540 ◆Emx7X7JtuI :04/05/05 21:50 ID:???
>539 dクス
542nobodyさん:04/05/05 22:22 ID:???
複数の異なるサーバー間で、アクセス規制用に.htaccessファイルを同期させる為のCGIを作ろうと思ってます。

.htaccessのファイルの内容を、指定したサーバーの順番に、Socketでデータと一緒にPOSTして、受け取ったCGIでそれを元の.htaccessと書き換えるという流れで逝きたいんですが、
一つのデータ送信+ファイル更新用の親CGIと、受信+ファイル更新用の子CGIという仕組みです。
私はPerl初心者で、今までソケットについては一切書いてないので知識が無いので、
最近ネットでPerlのSocket.pmについて調べてるんですが、どうもソケットについて詳しく解説してるサイトが無くて困ってます。

何方かSocketについての解説サイトをご教授してください。
543nobodyさん:04/05/05 22:26 ID:???
.htaccess その物を送ったほうが速いんで内科?
544nobodyさん:04/05/05 22:26 ID:???
.htaccess その物を送ったほうが速いんで内科?
545542:04/05/05 22:29 ID:???
WEB上で親CGIでIP・リモホなどを追記して送信するだけで登録されたサーバーに一度に同期させたいからです。

私自身、10つのサーバーで複数のコンテンツを公開してるので。。。
アップロードファイルがこんがらがってるのでこういうCGIを実装したいのです。
546nobodyさん:04/05/05 22:33 ID:???
cron+scpでダメな理由を述べよ
547nobodyさん:04/05/05 22:34 ID:???
cron+scpでダメな理由を述べよ
548nobodyさん:04/05/05 22:35 ID:???
ま、スレ違いだな
549nobodyさん:04/05/05 22:35 ID:???
>>543じゃないんだけど、同じ失敗してるな。
「書き込みに失敗した模様」でも書きこめてるっぽい。
550nobodyさん:04/05/05 22:37 ID:???
548だけどやっぱり書き込みおかしい?
この板だけじゃないけどすんなり書き込めななくなったな。
551nobodyさん:04/05/05 22:49 ID:???
↓ここのフリーCGIマジおすすめ。どこのサーバーでもいけるぞ

http://www.accesstrade.net/at/c.html?rk=010003h3000dcb
http://www.accesstrade.net/at/r.html?rk=010008la000dcb
552nobodyさん:04/05/05 23:24 ID:???
>>542
Socket.pmが使えるということは、標準モジュールが使えるのだから、
IO::Socket::INETを使えばハンドル操作だけで楽になるよ。
さらにLWPモジュール群を使えば、ハンドル操作さえ不要に。
553nobodyさん:04/05/06 02:57 ID:???
Perlを1年ぶりに勉強
前のレベルに戻すまで1ヶ月はかかるからよ

          ∧_∧
    ∧_∧  (´<_`  ) 今ちょうど
   ( ´_ゝ`) /   ⌒i 人生最大の危機に
   /   \     | |  直面しているな
  /    / ̄ ̄ ̄ ̄/ |
__(__ニつ/  FMV  / .| .|____
    \/____/ (u ⊃
554nobodyさん:04/05/06 17:07 ID:???
スクリプト言語ごときで人生最大の危機ですか
555nobodyさん:04/05/06 18:11 ID:???
首切りが掛かってるんですよ。もう必死です。
556nobodyさん:04/05/06 21:28 ID:???
↓このようなxmlファイルがあるとして
---- xml2.xml ----------------------------------------
<?xml version="1.0" encoding="Shift_JIS"?>
<data>
    <shop num="01">
        <name val="a">AAAshop1</name>
        <name val="b">AAAshop2</name>
        <tel>012-345-6789</tel>
    </shop>
    <shop num="02">
        <name>BBBshop</name>
        <tel>098-765-4321</tel>
    </shop>
</data>
------------------------------------------------------
557続き:04/05/06 21:29 ID:???
↓のperlを実行すると
------------------------------------------------------
#!/usr/local/bin/perl
use XML::DOM;
$xmlfile = "./xml2.xml";
my $parser = new XML::DOM::Parser;
my $doc = $parser->parsefile ("$xmlfile");
my $nodes = $doc->getElementsByTagName ("shop");
my $n = $nodes->getLength;

for (my $i = 0; $i < $n; $i++){
    my $node = $nodes->item($i);
    my $attr = $node->getAttribute("num");
print $attr."-attr\n";
    my $child = $node->getElementsByTagName("name");
    my $nn = $child->item(0);
    my $val = $nn->getAttribute("val");
print $val."-val\n";
    my @child_val = $node->getElementsByTagName("name");
    my $child_val = $child_val[0];
print $child_val."-child_val\n";#●
}
------------------------------------------------------
558続き2:04/05/06 21:29 ID:???
------------------------------------------------------
01-attr
a-val
XML::DOM::Element=ARRAY(0x843e234)-child_val
02-attr
-val
XML::DOM::Element=ARRAY(0x84406fc)-child_val
------------------------------------------------------
このような表示になります。
●の部分が「XML::DOM::Element=ARRAY(0x843e234)-child_val」こうなってしまいますが
「AAAshop1」や「AAAshop2」「BBBshop」を取得するにはどうすれば良いのでしょうか?
559nobodyさん:04/05/06 21:41 ID:???
formからPOSTをつかってフォームの値をperlによって受け取っているんですが、
今までテキストか、リストによるものだけだったんですが
今回、チェックボックスを使いたいんですが、
どのようにperl側に情報が送られてくるのでしょうか・・・。
560nobodyさん:04/05/06 21:55 ID:???
>>559
実際に受け取ってみればいいじゃん
561559:04/05/06 22:00 ID:???
>>560
初心者ですいません。
受け取ってそのまま表示させるにはどうすればいいですか・・・(´Д`)
562nobodyさん:04/05/06 22:12 ID:???
>>556-558
それ自分で書いたコードじゃないだろ
563nobodyさん:04/05/06 22:25 ID:???
>>561
GETで渡して$ENV{'QUERY_STRING'}を表示すれ。
564559:04/05/06 22:41 ID:???
>>563
ありがとうございます!
565nobodyさん:04/05/06 23:47 ID:21UK75Lz
>>558
my @child_val = $node->getElementsByTagName("name");
my $child_val = $child_val[0];

の部分を

my $child_val = $nn->getFirstChild->getData;
566556-558:04/05/07 10:22 ID:???
>>562
全文は自分で書いてませんが
ttp://member.nifty.ne.jp/hippo2000/perltips/xml/dom.htm
を参考に部分部分を変えて書きました。

>>565
ありがとうございます!ばっちり表示できました。
おかげ様でやっと次の段階に進めそうです。
567nobodyさん:04/05/07 12:50 ID:p3Wu+afh
$honbun = "aaabbbcccdddeeefffコーヒー";
$honbun =~ s/$FORM{'text'}/<font style=\"background:#00ffff\">$FORM{'text'}<\/font>/g;
print "本文=$honbun";
というプログラムで本文を置換したいんですけどフォームからaaaなどを入力してもエラーにはならないけど
コーヒーと入力するとエラーになってしまいます。
どうしたらコーヒーと入力してもエラーがでないんでしょうか?
568nobodyさん:04/05/07 13:07 ID:???
>>567
>>1読んで。
どんなエラーかわからない事にはまともな答えは期待できない。
569nobodyさん:04/05/07 14:10 ID:???
>>567
\Qマルチポスト(・∀・)ニヤニヤ\E
570nobodyさん:04/05/07 15:03 ID:???
サニタイズするよろし。
$honbun = 'aaabbbcccdddeeefffコーヒー';
$keyword = 'コーヒー';
$keyword =~ s/([\+\*\.\?\^\$\[\-\]\|\(\)\\])/\\$1/g;
$honbun =~ s/($keyword)/<b>$1<\/b>/g;
print "本文=$honbun";
571nobodyさん:04/05/07 15:35 ID:???
@filesという配列の中に10〜15個程度の要素が入ってるのですが
これをHTML上に表示するにはどのようにすればよいのでしょうか?
現在は$files[1]〜$files[15]というように1個1個記述してます。
何か良い方法があればアドバイスいただければと思います。
572nobodyさん:04/05/07 15:39 ID:???
>>571
foreachを使う。
用例は検索すれば一杯出てくる。
573nobodyさん:04/05/07 15:44 ID:???
print @files;
574571:04/05/07 15:55 ID:???
>>572
ありがとん
foreach $key (@files) { print "<a href=\"$key\">$key</a><br>\n";}
ってやったら出来た
サンクスコ
575nobodyさん:04/05/07 16:45 ID:???
quotemeta を使いましょうよ。
576nobodyさん:04/05/07 20:24 ID:zsY2eiyt
アンケートサイトを作ろうと思っています。

一人複数投票をなるべく避けるようにしたいのですが、こういう
場合、どのような工夫があるでしょうか?

とりあえず同一アドレスははじきます。リスクはありますが、
プロバイダの同一サクセスポイントもはじこうと思っています。

他にどういう手があるでしょうか?もちろん100%防ぐのは
無理だと思いますし、そんな厳密なアンケートでもない
(どっちかというと遊びっぽい)ので、少しでも役立つ
方法をご存知でしたら、教えてください。

よろしくお願いします。
577nobodyさん:04/05/07 20:26 ID:???
> とりあえず同一アドレスははじきます。リスクはありますが、
> プロバイダの同一サクセスポイントもはじこうと思っています。
ネタだろ?
578nobodyさん:04/05/07 20:33 ID:???
@list に何列(何個)存在しているか
個数をカウントするにはどうすればいいですか・・?
579nobodyさん:04/05/07 20:35 ID:???
$kosuu = @list;
580578:04/05/07 20:42 ID:???
>>579
ありがとうございます!
581nobodyさん:04/05/07 20:52 ID:???
>>576
クッキー食わせるのは良くあるパターン
582nobodyさん:04/05/07 21:12 ID:???
サクセスポイント
583576:04/05/07 21:46 ID:???
サクセスポイントはアクセスポイントのタイプミスでした。どもすみません。

>>581

あ、クッキーという手がありましたね。消して再投票する人もありえるでしょうが、
一定の効果はありそうですね。ありがとうございます。
584nobodyさん:04/05/07 22:57 ID:???
検索用CGIを作っているのですが、
@array にたとえば「あ」「い」「う」が入っているとして、
それを$aiuにマッチすればそのまま、マッチしなければそのループを抜ける
という表記なつもりなのですが、結果がうまくいきません。

foreach $i (@array){
if ($aiu =~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$i/i) { ; }
else { next; }
}

どのようにかきかえればいいでしょうか?
585nobodyさん:04/05/07 23:13 ID:???
>>584
foreach my $str (@array){
  $str = quotemeta $str;
  if( !$aiu =~ /$str/){
    last; # ループを抜けるのはlastです
  }
}

こんなもんでどうなんでしょう? 正規表現はそんなにややこしくする必要ありですか?
586nobodyさん:04/05/07 23:39 ID:???
>>584
まずそれは EUC-JP とうまく付き合いたがっているコードなわけだけど
@array と $aiu はきちんと EUC-JP ですか?
587586:04/05/07 23:53 ID:???
早とちり失礼。
588584:04/05/08 00:20 ID:???
>>585

エラーはおこりませんが、HITしませんでした。。。
下のレスにもかかれてたコードのせいですかねぇ?

>>586
EUC-JPかどうか実はよくわかっていません・・・が、
なぜか部分部分でそのコードを入れないと反応しないものがありまして。
なくてもうまくいく場合もあるんですが、
基本的に日本語が含まれるものには無いとうまくいかないようです。

589nobodyさん:04/05/08 00:59 ID:???
$fmt = "%d %d";
@lst = (12, 20);

これを print を用いて「12 20」のように表示したいのですが、
print($fmt, @lst); では「%d %d1220」と表示されてしまいます。
「12 20」のようにするにはどうしたらよいでしょうか。

ちなみに、$fmt, @lst は動的に変わり、
要素が2個とは限りません。
C言語の va_list のようなことができるのか知りたいです。
590nobodyさん:04/05/08 01:07 ID:???
>>589
>>574を参考にすべし。
591589:04/05/08 01:35 ID:???
>>590
$fmt も任意で、必ずしも %d のスペース区切りではないんです。
592nobodyさん:04/05/08 01:41 ID:???
>>589
僕が良くワンライナで使う手はこう。
$ perl -e '@list=(1..5);print join(" ", @list);'
1 2 3 4 5
593nobodyさん:04/05/08 01:45 ID:???
printf
594589:04/05/08 01:58 ID:???
>>593
できました、ちょっとハマって勘違いしていました。
ありがとうございました。
595nobodyさん:04/05/08 02:19 ID:3p4uAER8
初めまして。

「バイナリ構造体」の意味がイマイチつかめなくて困ってます。

「バイナリ」は2進法とかいう感じの意味らしいですが、では「バイナリ構造体」
とは構造が2進法である。みたいな感じですか?なんか変な感じ・・・

バイナリはいろんな所で調べれますが、バイナリ構造体という言葉の説明はみつかりません。

どうやらスカラ変数や s/〜//; の〜部分もバイナリ構造体らしいのですが、どなたか
バイナリ構造体の意味を教えてくださいませんか。お願いします。
596nobodyさん:04/05/08 02:25 ID:???
バイナリデータ
597nobodyさん:04/05/08 02:51 ID:???
バイ ナラ
598nobodyさん:04/05/08 02:58 ID:???
>>595
プログラミングで構造体と言うと既にある型を使って新しい型を作ることを指す。
Perlは基本的にデータを文字列で記憶するからそれをバイナリ値にしたものが
バイナリ構造体。
599nobodyさん:04/05/08 03:09 ID:???
まあ pack してできるものがバイナリ構造体だ

でも s/?//; の?の部分がバイナリ構造体だというのはいまいち意味がわからない
600595:04/05/08 03:29 ID:???
>>598
ということは文字列をバイナリ値(0と1)に変換して記憶・保存する構造自体がバイナリ構造体ですか?

>>599
packってpack後にバイナリ構造体に結果を返すって勉強したので、packの結果を受け取れる
場所はスカラ変数に限らず、全てバイナリ構造体と言える?あれる?のかなと思いましたが・・・・・

う〜ん難しいですね。スカラや配列って文字列のまま記憶・格納しているのですか?
例)$x = "あいうえお";
という代入をした場合、「あいうえお」のままはコンピューターは保存できませんよね?
だから、保存時に2進数に直して保存し、呼び出すと自動で解凍?される・・・・のですか?
その仕組みがバイナリ構造体そのもの????


601nobodyさん:04/05/08 03:40 ID:???
>>600
バイナリ値というのは2進数のことではない。
それにPerlにおいてバイナリ構造体の意味を学んでも役には立たないから
おかしな理解をしてしまう前にpackして得られる値とだけ思っておけ。
602595:04/05/08 04:20 ID:???
>>601
「整数値を、2 の補数表現で符号化したものをバイナリ値とする。」こんな程度しか
バイナリ値ではひっかかりませんでしたがとりあえず単純な2進数ということでは
ないようですね。

プログラム関係って言葉の意味さえわかれば関数や表記法なんて結構どうにでもなるかな
と思ってるんですよ。理解できない言葉があると勉強の効率が悪いので私にとっては
言葉の意味は重要なんですよ。

プログラム関係の言葉の辞書って今アスキーっていうHP使ってますが、他にどこか
いいとこありますか?アスキーはバイナリ値もバイナリ構造体も載っていませんでしたので
プログラム系の言葉に特化してる辞書とかないですかね
603595:04/05/08 04:27 ID:???
忘れてました追加です。

「0x」とは、後に続く文字列が16進数であることを示しているらしいのですが、
print hex(0xa);
としてみたら16が表示されました。
print hex(a);
の場合は10なのですが、「0x」は後続が16進数であるという示し以外にどのような
効果を与えるのでしょうか?
604nobodyさん:04/05/08 05:08 ID:???
print 0xa;
# 10
print hex 10;
# 16
605nobodyさん:04/05/08 12:01 ID:???
バイナリ構造体というのは、誰が作ったか知らないが、日本独自の言葉で、
英語版の perldoc などには存在しない。
よって正確な定義もたぶん存在しない。

たぶんCの構造体(struct)との類推で作られた言葉だとは思う。
struct の定義ならCの入門書でも読めばわかるが、
「なぜこんなものが必要なのか、実際何の役に立つのか」ということは
実際にCのプログラムを作ってみないとわからんだろうな。
606nobodyさん:04/05/08 14:38 ID:???
つか、Perlは普通に構造体使えるようになってるしな
$hoge
@hoge
%hoge
607nobodyさん:04/05/08 14:45 ID:???
>>606
それは構造体の話とは関係ない
608595:04/05/08 15:22 ID:???
>>605う〜ん難しいですね。簡単な例え話とかあったらいいんですがね。

>>604どうやらhex関数の引数として「0x」をつかうとちょっと違うことになるみたいですね。
通常は「0x」が前につけば単に16進数という宣言みたいですが、どうしてhex関数の引数
で使うとおかしな事になるんでしょう。

そういえば、バイナリ値以外にもchar値とかその他にもいっぱい「〜値」というものが
あるんですね。どっかにいろんな「〜値」について詳しく解説してるサイト知りませんか?

609nobodyさん:04/05/08 15:59 ID:???
>>608
何もおかしくないのに>>604を見てわからないならかなりニブいな。

packで指定する型のcharやintや浮動小数点だのをひっくるめてバイナリ値を呼ぶ。
どんな型があるかはpack関数を調べればいい。

いいかげんスレ違いになってきたからここらでやめれ。
610nobodyさん:04/05/08 16:11 ID:???
>>607
釣れますか?
611584:04/05/08 16:58 ID:???
2重ですいません。
>>584 の質問誰かお願いします。。。
調べたところ、すべてEUCにはされていました。

if ($aiu ne 'all') {
if ($aiu =~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$array[0]/i ||
$aiu =~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$array[1]/i) { ; }
else { last; }
}

だと、理想的な結果が出るんですが、2枚目のページにいくと、
結果がクリアされるようなんです・・・。
612nobodyさん:04/05/08 17:09 ID:???
「2枚目のページ」ねぇ。
誰か2枚目のページってどんなのか知ってる?
知ってる人が教えてあげて。
613nobodyさん:04/05/08 17:13 ID:???
(゚听)シラネ
614595:04/05/08 18:04 ID:???
>>609
???
print a; #aが出力
print 0xa; #10が出力
print hex a; #10が出力
print hex 0xa; #16が出力
???

本当にわかりません・・・教えてください。

ところでこの話はスレ違いなんですか?ここは変換処理にかかわる事ならOKっていうわけでは
ないんですか^^;
615nobodyさん:04/05/08 18:14 ID:t33qT0Ph
文章から一定の単語を抜きだすコードを書いてるんですけど
 if( 文章 =~ 適当な単語) ){
  処理
 }
という方法では
(´・ω・`) のようなものに引っ掛からないみたいで、、、
こう言う場合はどのようにマッチさせれば良いのでしょう?
616nobodyさん:04/05/08 18:17 ID:???
マルチバイトを標準で使いたいのならphpにしろ
perlはjcodeがいるだろ
617595:04/05/08 18:24 ID:???
あ〜〜〜〜〜〜〜!!!!!!!!

0xってhexと同じような働きがあるから
print hex 0xa;
っていうのは
print hex (hex a);
と同じことで、流れ的には「a」を10に変換してさらにそれを16進数として評価してしまう!!!

ってことですね^^やっとhex問題が片付いた。バイナリ値問題はまだまだですが++;

ほんと日本語が世界語だったらプログラム用語もPC関連用語ももっと簡単だったろうになあ

618nobodyさん:04/05/08 18:24 ID:???
>>611
Perlメモみれ
619nobodyさん:04/05/08 18:27 ID:???
>>615
指定の単語を抜き出すよりもマッチするかどうかじゃ?
マッチすれば指定単語を含むわけだし・・・

index関数使え
620nobodyさん:04/05/08 18:28 ID:???
>595
まぁ、釣りではないとして回答しておこう。

>理解できない言葉があると勉強の効率が悪いので私にとっては
>言葉の意味は重要なんですよ。
細かいことにこだわりすぎだと思うがね。
プログラミング用語自体、文脈で結構柔軟な解釈がされることもある。
所詮、用語自体が「表記法」に過ぎないと思う。

>614
hex が文字列を引数としてとること、Perl が型変換を自動で行うこと、
0xa は数値であること、キーワード以外の単語は文字列として扱われること、
以上を元に少し考えてみれば?

>ところでこの話はスレ違いなんですか?
>ここは変換処理にかかわる事ならOKっていうわけではないんですか^^;
スレタイ嫁、変換処理ってなんだよ?
# あと末尾のは顔文字のつもりかしらんが、個人的に妙にいらつくぞ。
>どっかにいろんな「〜値」について詳しく解説してるサイト知りませんか?
総じて Perl コーディング以前の問題のような気がするんだよ。
621615:04/05/08 18:44 ID:t33qT0Ph
>>619
説明文が激しく半端でした。
HTMLから必要な単語を抜き出して、それがそのHTML内に何回出現しているか
確認するプログラムを書いています。
例えば
<FONT COLOR="#ffff00">そいつぁショボンヌ(´・ω・`)</FONT>
という行からindex関数で前のタグと後ろのタグを見つけて
「そいつぁショボンヌ(´・ω・`)」を単語として抜き出しています。
この単語を文章とマッチさせているのですが、どうも顔文字が上手くマッチしてくれないのです。
他の単語は普通にマッチするようなので、顔文字の文字がまずいのかなと思ったのですが、、、、、
622nobodyさん:04/05/08 19:02 ID:???
index関数の言い分:
        おれはどんなやつよりも素早く目的のフレーズを探し出して
        みせるぜ!
623595:04/05/08 19:07 ID:???
>>620

コーディング 【coding】

(1)
⇒符号化(ふごうか)
(2)コンピューターなどで,一定のプログラム言語を用いて,プログラムを作成すること。


ふごうか 【符号化】

(1)
〔encoding〕
情報がある一定の規則に基づいて符号に変換されること。記憶における記銘や,非言語コミュニケーションにおける表情の表出などもこの例として捉(とら)えられる。
→解読
(2)
〔数〕
〔coding〕
一連の情報を適切な符号系を定めて符号に変換すること。

とありましたので変換処理とも言えるのかなっと・・・
顔文字の件申し訳ないです。

>総じて Perl コーディング以前の問題のような気がするんだよ。
かもしれませんね。

私的には記述方法とかってあまり問題じゃなくて、関数やコーディングの機能・処理内容自体を日本語のみで全くの素人にでも
教える事ができるようになる事が大切かなって思ってます。なので、細かいとこにこだわって他人より要領が
すこぶる悪い・・・自分でも自覚してます。

とりあずこのスレで、私のように基本的な部分を質問するのは迷惑になってしまうようですね。ごめんなさい。
624nobodyさん:04/05/08 19:09 ID:???
>>621
quotemetaか\Q...\E使を適切に使ってないに一票。

625595:04/05/08 19:23 ID:???
>プログラミングで構造体と言うと既にある型を使って新しい型を作ることを指す。
>Perlは基本的にデータを文字列で記憶するからそれをバイナリ値にしたものが
>バイナリ構造体。

バイナリ→テキスト形式(文字データ)以外のデータ形式全般。

値がテキスト形式以外のデータ形式であれば全てバイナリ値。

char値→バイナリ値の分類の中の・・・・

とりあえずここで学んだことをまとめておきました。それでは失礼します。
626名無しさん:04/05/08 19:29 ID:cBod9el7
>>595
バイナリ構造体なんてどっから拾ってきた言葉だかしらんが、言葉は
何かを説明するためにあるのであって、造語を前提なしに持ち出して
どういう意味なんだと考える自体が無意味。初心的どうこうではない。
プログラムはアルゴリズム実現の表記手段であって哲学的誤謬に陥るのは愚。

>>624 同じく一票
顔文字って()を使うからねぇ。。。Perlのメタ文字が入る場合は注意だし。
627595:04/05/08 19:31 ID:???
キャラクタ→キーボードから入力可能な文字や記号。

pack("C*",0x41); #A
第2引数以降のリストで指定したデータを、キーボードから入力可能な文字や記号に
一定の規則をもって変換する。(char値に変換する)
628nobodyさん:04/05/08 19:34 ID:???
>>621
indexで書いてみるテスト。
my $cnt = 0;
my $pos = 0;
$cnt++ while(($pos = index($data, $match_str, $pos)+1) > 0);

>>595
Perlより先にアセンブラやってみるというのはどう?
# これ以上はスレ違いなので、後は本でも読んでみては。
629595:04/05/08 20:31 ID:???
アセンブラ→アセンブリ言語で書かれたプログラムを機械語に翻訳するのがアセンブラ。

>>628
アドバイスありがとうございます。とりあえず、ゆっくり地道にやっていこうと思います。
バイナリ構造体についての質問は完全にスレ違いでしたね。

ところでこうゆう質問もスレ違いでしょうか?↓

相変わらず基礎的な部分で、コーディング(符号化)の流れについてなんですが、
例えばUNIX系のサーバにあるwebページに対して、「あいうえお」と送ったとします。

そのときの内部で起こっている事は、
1、送られてきた文字データをEUCでコーディング(エンコード)
2、それをさらにASCUコードでエンコード

文字列データとして表示させるには
1、まずはASCUコード化されたデータを受け取りASCU方式でデコード
2、それをさらにEUCでデコード

で、合っていますか?なんか違う気もするんですが・・・
一番初めに文字列データをどの形式でコーディングするかの決定権をもっているのは
クライアント側のユーザですよね?受け取り側で自動でされる処理はASCUでエンコードするのみですか?
でもそれだと、何故UNIX系でEUCを指定されているのか?ですし・・

・・もしかしてこれもスレ違いな内容でしたら、一言「スレ違い」とお返事ください。


630nobodyさん:04/05/08 20:33 ID:???
sub auto_link {
$_[0] =~ s/([^=^\"]|^)(https?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+)/$1<a href=\"$2\" target=\"_blank\">$2<\/a>/g;
}
この場合
URLがある文字数を超えたときにそれ以降を省略するようにするにはどうしたらいいのでしょうか
substrとか使えばいいんだと思うんですけどよく解りません。

631nobodyさん:04/05/08 21:15 ID:???
>>629
スレ違い
632nobodyさん:04/05/08 21:52 ID:???
>>630
my $limit = 16;
s/([^=^\"]|^)(https?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+)/
"$1<a href=\"$2\" target=\"_blank\">".substr($2, 0, $limit).
(length($2) > $limit && '..')."<\/a>"/egx;

こんなとか。
633nobodyさん:04/05/08 22:28 ID:???
>>632
ありがとうございます!すごいや!エロい人
634nobodyさん:04/05/08 22:37 ID:???
と思ったらURLがうまくリンクにならないです...orz
635630:04/05/08 23:06 ID:???
"$_[0] =~ "抜けてたからですね...申し訳ないです。ちゃんと動きました。
636nobodyさん:04/05/09 06:07 ID:6P0icBMn
流れからするとレベルの低い質問です。

ファイルオープン後、
@temp = <FH>;
とすると行ごとに配列へ格納されますが、
\nも含めてひとつのスカラ変数に格納したいのです。

普通はjoin関数であとから結合するのでしょうか?
どうも冗長な気がし質問しました。
637nobodyさん:04/05/09 07:13 ID:???
>>636
undef $/;
$temp=<FH>;
638636:04/05/09 11:39 ID:6P0icBMn
>>637
ありがとうございます!

$1〜、$_以外の特殊変数はまだまだ理解出来ないと思ってたら、こうやって使うんですね。
639nobodyさん:04/05/09 12:54 ID:LzQ8Bs2h
ソートについての質問です。

@list = (0,1,2,3,4,5,6,7,8,9,10,11);
sub number {
  if ($a < $b) {
    return -1;
  } elsif ($a == $b) {
    return 0;
  } elsif ($a > $b) {
    return 1;
  }
}
@result = sort number @list;

@resultが何故0,1,2,3,4,5,6,7,8,9,10,11になるのか理解できません。
漏れの考えですが、$aに0、$bに1が代入される。比較され-1が返る。@resultの第一要素は「-1」になる。
以降繰り返しで@resultは-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1となるのでは?と考えました。
@resultが何故0,1,2,3,4,5,6,7,8,9,10,11になるのか教えてください。
640nobodyさん:04/05/09 13:44 ID:???
$a < $b なら ($a, $b)
$a == $b なら ($a, $b) のまま
$a > $b なら ($b, $a)
の配列要素の順番入れ替えをおこなうのが sort 関数

数値の昇順や降順にソートすることは簡単にできる。
@result= sort {$a <=> $b} @list;
@result= sort {$b <=> $a} @list;
641639:04/05/09 15:23 ID:???
なるのほどsort関数が順番の入れ替えを行っていたのか
>>640ありがとう
642nobodyさん:04/05/09 15:48 ID:???
このスレの住人のギャグセンスはなんだな。オサーンばっか
643nobodyさん:04/05/09 16:26 ID:Si4CJEJN
cgiの実行結果を読み込ませたいのですが
open(IN,"/なんとか/test.cgi|");
@file = <IN>;
close(IN);
print @file;
だと出来るのに

open(IN,"/なんとか/test.cgi?hoge|");
@file = <IN>;
close(IN);
print @file;
だと「sh: /なんとか/test.cgi?hoge: No such file or directory」と表示され開けません。
どなたかご教授ください。
644nobodyさん:04/05/09 16:39 ID:???
コマンドラインからの引数の渡し方を勉強しなさい。
645nobodyさん:04/05/09 16:44 ID:???
このすれ用の、質問->解答の流れを登録できるサイトを作ろうと思うんですが、どうでしょ?
646nobodyさん:04/05/09 16:48 ID:???
意味わかんね。
647nobodyさん:04/05/09 16:51 ID:???
>>645
失敗する、間違いない。

2ちゃんの掲示板だからこそ、人が集まりこういう流れが成立してる。
他スレでもそういう案は見かけるが、大抵が誘導に失敗し元に戻る。
Q&Aのデータベースなら活用されるとは思うが。
648nobodyさん:04/05/09 16:53 ID:???
>>647
なるほど。 まぁ、暇つぶしにシステム考えてみます。
649nobodyさん:04/05/09 16:57 ID:???
FAQ集なら歓迎。
650nobodyさん:04/05/09 17:49 ID:???
>>648
ム板のPerlスレにもそんなことをやろうとしたヤシがいたが、結局公開に至らず。
日本人って熱は冷めやすいから、飽きたんだろうね。
そういうことなので、>>648にはごく基本的なシステムでとりあえず公開することをきぼん。
その上で突込みが入れば修正すればいいんだし、自分で修正できなかったらここで質問すればいいんだし…
651nobodyさん:04/05/09 17:52 ID:???
>>648
Wikiなら暇な人が触ってくれると思われ
652nobodyさん:04/05/09 18:06 ID:???
ここでは失敗する気がする。
ちょっとしたシステムの不満でもみんな吐きまくるぞ。
そして最後には自分で作った方が早いとなっていく。
他人のシステムで満足できるような人間はこのスレにあまり来ないだろうし。

やるんだったらいっそ逆にPerl使わないほうが安全かも。
もしくはこのスレ住人の力を結集して作っていくか。
653名無しさん:04/05/09 18:14 ID:???
>>645
俺はめんどくさいしやる気も無いのだが、まずは
過去ログを全検索して一覧表示できるようにっつうのは?
あとは>>をみてリンクツリー構成表示するとかね。
手動なんて絶対力つきるしPerlスレなんだからPerlつこて自動化すれ。
654nobodyさん:04/05/09 18:17 ID:???
パンチ5分の2に荒らされるのでは?
655643:04/05/09 18:19 ID:???
>>644
盛り上がっているところすいません
open(IN,"/なんとか/test.cgi hoge|");
として受け取るtest.cgiに@ARGVを使うということでしょうか?
test.cgiに手を加えないで出来る方法があったらその方がよいのですが無理ですか?
656nobodyさん:04/05/10 00:13 ID:???
open(IN, "env QUERY_STRING=hoge /path/to/test.cgi |");
657nobodyさん:04/05/10 12:53 ID:???
掲示板作ってるんだけどさ…
AUだけ

掲示板に書き込んだ→書き込み完了画面表示→戻るリンク(その掲示板のトップへ行く)

この最後の戻るリンクをクリックすると、また書き込みしちゃうんだけど、どうすれば対処できるんでしょうか?
imode、vodafoneはちゃんと掲示板のトップに戻ってくれるんですが orz
658nobodyさん:04/05/10 13:05 ID:???
659nobodyさん:04/05/10 13:12 ID:???
>>658
だめなんです、解決方法が載ってないんです orz
660nobodyさん:04/05/10 14:41 ID:???
SMART! ウェブ講座の中の人たちはいつまで江ノ島旅行に行ってるのですか?
661nobodyさん:04/05/10 14:48 ID:9bXUHl3j
ソケットを使ってどこかのHTMLを取得し、それを加工して表示する
というプログラムを書いています。
少々疑問に思ったのですが、ソケットでHTMLを獲得するのと
ウェブブラウザでHTMLを獲得するのとでは何が違うのでしょう?
処理するのがユーザ側かサーバ側か、の違いと見て良いんでしょうか。
662nobodyさん:04/05/10 15:08 ID:???
>>661
ブラウザも同じソケット通信してるから、同じこと。
そのようにサーバ側でソケット使おうとユーザ側で使おうと
どちらもHTTPクライアントリクエストをwwwサーバに対しておこなっている
663nobodyさん:04/05/10 15:17 ID:???
変数の名前を変数にしたい場合はどのようにすればよろしいでしょうか。
PHPなら$foo = "val";のとき$$fooで$valにアクセス出来ますが,Perlはちょっと違いますか?

$val = "hoge";
$prm = "val";
print $$prm; #「print $val;」と同じ結果

$val = "hoge";
$HASH{'prm'} = "val";
print $$HASH{'prm'}; #ダメ
664nobodyさん:04/05/10 15:25 ID:???
ブレースでくくれば同様にできるよ。でも必要性を感じない。
665nobodyさん:04/05/10 15:28 ID:???
訂正します。use strict;だとCan't use string ("val") as a SCALAR ref while "strict refs" in use at...などと怒られます。

use strict;
my $val = "hogehoge";
my $prm = "val";
print $$prm; #だめ
print ${$prm}; #これもだめ
666nobodyさん:04/05/10 15:34 ID:???
絶対にシンボリックリファレンスでないとダメなん?
他のアプローチを考えたほうが早いと思うが…
667nobodyさん:04/05/10 15:36 ID:???
他にはどういうやり方があるのでしょうか?
668nobodyさん:04/05/10 15:41 ID:???
use strict;
my $prm= 'val';
my $$prm= 'hoge';
print $$prm;

or

#use strict;
669nobodyさん:04/05/10 15:50 ID:???
no strict 'refs';
670nobodyさん:04/05/10 15:56 ID:???
>>669
それでもダメでした。あきらめます。
671nobodyさん:04/05/10 16:04 ID:???
myで宣言するローカル変数はシンボリックリファレンスの対象にならないから

my $$prm= 'hoge';

なんてのは無理ってもんだろう。
672nobodyさん:04/05/10 16:18 ID:???
2次元配列を関数内で作成しその戻り値を受け取りたいのですがうまくいきません。
どうすればいいのでしょうか。
以下のようでは空っぽのままです。

--

$test = &hairetu;
print $test[0][0];
print $test[1][1];


sub hairetu {
$box[0][0] = 0;
$box[0][1] = 0;
$box[1][0] = 0;
$box[0][2] = 0;
return $box;
}



673nobodyさん:04/05/10 16:19 ID:???
訂正
×$box[0][2] = 0;
○$box[1][1] = 0;
674nobodyさん:04/05/10 16:40 ID:???
$test = &hairetu;
print $$test[0][0];
print $$test[1][1];


sub hairetu {
$box[0][0] = 0;
$box[0][1] = 0;
$box[1][0] = 0;
$box[1][1] = 0;
return \@box;
}
675nobodyさん:04/05/10 16:46 ID:???
>>672
$test = &hairetu;
print $test->[0][0];
print $test->[1][1];


sub hairetu {
$box->[0][0] = 0;
$box->[0][1] = 0;
$box->[1][0] = 0;
$box->[0][2] = 0;
return $box;
}
676672:04/05/10 16:51 ID:???
>>675
ありがとうございました。
無事思うような動作が出来ました。
677674:04/05/10 16:59 ID:???
_| ̄|○
678661:04/05/10 17:04 ID:9bXUHl3j
>>662
するとソケットを使用したHTML取得CGIをAと言うサーバに置いた場合
ブラウザからCGIを呼び出すと
ブラウザ→CGI→HTML (→はリクエスト)
となるのではなく
ブラウザ→HTML
となるのでしょうか?
CGIを置いたサーバに負荷が掛かりそうでちょっと尻込みしているのですが
サーバ側に負荷は行かない、のかな?
679nobodyさん:04/05/10 17:07 ID:???
そりゃ多少の負荷はかかるでしょ。
でもそんなこと言ってたらCGIは何一つ動かせない。
それ以前に、ソケットの使えないところも多いけどね。
680nobodyさん:04/05/10 17:14 ID:???
>>678
> ブラウザ→CGI→HTML (→はリクエスト)
が正解。
cgiがプロキシのような役割をするわけやね。
681nobodyさん:04/05/10 19:02 ID:???
>>657
戻るリンクの代わりに戻るフォームもしくはlocationで飛ばす。
でいいような気がするけど確信はない。
いい加減な情報でスマソ。
682nobodyさん:04/05/10 19:05 ID:???
残念ながら携帯はlocationでのリダイレクトに対応して無い物が多いよ。
683nobodyさん:04/05/10 19:13 ID:???
まず全角というところに突っ込みを入れたい
684すまん:04/05/10 19:14 ID:DDeHe7Rs
EUC-JPの機種依存文字が変数に含まれているかどうか
調べるにはどうしたらいいの?
685nobodyさん:04/05/10 19:54 ID:???
携帯の動作なんか考えたこと無いな
686nobodyさん:04/05/10 21:18 ID:???
687nobodyさん:04/05/11 00:27 ID:???
リファレンスとデリファレンスがどうしてもわかりません。
詳しく載ってる本やサイトってないでようか?
688nobodyさん:04/05/11 00:53 ID:???
何が解らんの。
ラクダ本とか perlref じゃ駄目?
689nobodyさん:04/05/11 01:07 ID:???
>661
ブラウザで個人的に見るのは著作権的に合法。
ソケットでCGIで取得して不特定多数に閲覧可能な状態にしてしまうのは著作権的に違法。
690nobodyさん:04/05/11 01:48 ID:???
>>689
公開http proxyが違法という主張?
anonymizerは? exciteやinfoseekのweb翻訳は?
691nobodyさん:04/05/11 07:45 ID:???
今、このスレを見つけて1から読んでいるが
「恥知らず」という言葉を思い出したよ。

>「でも、本当に簡単なミスでも、指摘されるまで気付かないことだってありますよ。 」

簡単なミスに、指摘されるまで気付かない事自体
恥ずかしい事と思わなかったのか?

そういう台詞を言う事自体「甘え」だと思わなかったのか?

ちゃんとした大人なら、そんな甘えた台詞は恥ずかしくて言えないものだが。

こういうやつが設計をやると、三びし自みたいな日さんな事故がおきるんだろうな。
692nobodyさん:04/05/11 08:26 ID:???
今頃レスしてるのも恥ずかしいと思うけどな。
693nobodyさん:04/05/11 10:07 ID:???
変に行間空けるのも恥ずかしいと思うけどな。
文章に自信が無いから飾ってるだけ。
694nobodyさん:04/05/11 10:37 ID:???
ファイルの読み込み時にも排他処理は必要なんでしょうか
他人様のスクリプトを見てみたところ
ロックしている方もいますし、ロックしていない方も居ます。
695nobodyさん:04/05/11 10:47 ID:???
>>694
書き込んでいる真っ最中のデータを読み込んだり、
読み込んでる最中に書き込み始めたりしてもいいのなら
読込時に排他処理は不要。

「共有ロック」なんてのも調べてみると吉。
696nobodyさん:04/05/11 12:08 ID:yHiP+CIC
>>695
やっぱり書き込んでいる真っ最中のデータを読み込んだり、
読み込んでる最中に書き込み始めたりしちゃうわけですね。
システム側でなんとかしてくれるのかと思ってました。

共有ロック、取り入れてみたいと思います
ありがとうございました
697nobodyさん:04/05/11 13:57 ID:xHapOBBn
Location ヘッダは、Locationヘッダをブラウザに返しブラウザが指定したファイルに飛ぶのか、
サーバーがLocationヘッダで指定されたファイルを返すのか、
どちらでしょう? どちらでもなければ、それを教えてください。

698nobodyさん:04/05/11 14:09 ID:???
>>697
前者
699nobodyさん:04/05/11 14:25 ID:???
すいませんが、コンパイルの仕方を教えてくれないでしょうか?
サーバをテストに使ったらファイルが消えた時に責任取れないんで
ローカルでテストしたいんですがどうすれば・・・
700nobodyさん:04/05/11 14:51 ID:???
Perlはコンパイルせずとも動きますが。
701nobodyさん:04/05/11 14:55 ID:???
MySQLをPerlから操作しようとしました。
そしたらinstall_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC ...
とエラーがでました。
恐らくモジュールが入ってないのかと思いますが
どうすればインストールできるでしょうか。
一応、Msql-Mysql-modules-1.2219と言うのをDLしてきましたが
root権限など持っていないので説明にある方法ではインストールできません。
cgiとおなじフォルダにmysql.pmを置いてやれば動くような気もしますが
取り敢えず/mysql/libの中身をまるごと置いてやっただけでは動きませんでした。
702699:04/05/11 15:42 ID:???
テキストファイルに書いたプログラムをデバッグする方法が知りたいのです
703nobodyさん:04/05/11 15:49 ID:???
>>702
winのローカル環境で動かしたいなら
http://x-web.pobox.ne.jp/fcgi/fcgi_01.html
が分かりやすいと思います
704nobodyさん:04/05/11 17:05 ID:???
>>694-702
スレ違い
705699:04/05/11 17:35 ID:???
では、私はどこへ行けばいいのでしょうか?
とりあえず上のリンク先には行ってきましたが・・・
706nobodyさん:04/05/11 17:40 ID:???
http://pc5.2ch.net/test/read.cgi/php/1078991985/l50

この人のところに文法チェッカーが配布されとる
707nobodyさん:04/05/11 18:02 ID:???
<!--user-->という文字を、<a href="$usaddress">($usaddressは変数展開される)
という文字に変換したいのですが、
$line =~ s/<!--user-->/<a href="$usaddress">/g;
では変換されません。
どこが間違っているのでしょうか?
708nobodyさん:04/05/11 18:06 ID:???
>>707
Perlがこわれています。再インストールをしてください。
709nobodyさん:04/05/11 18:12 ID:???
>>699
ActivePerlでぐぐれ。
710707:04/05/11 18:24 ID:???
>>708
それってマジレスですか?
711nobodyさん:04/05/11 18:31 ID:???
おれ708じゃねーけど、手元のperlではこうなるからな。
これは普通には変換されているというと思うのだが。

% cat user.pl
$usaddress = "foo";
$line = "<!--user-->";

$line =~ s/<!--user-->/<a href="$usaddress">/g;

print $line, "\n";
% perl user.pl
<a href="foo">
712712:04/05/11 19:08 ID:j+/3ilVK
http://sumiro2.hp.infoseek.co.jp/cgi-bin/abc/bbbs.cgi
の掲示板なのですが、専用アイコン以外の普通のアイコンが表示されません。
中身は↓のようになってます。どうしたらいいのか、教えてください。お願いします。
http://sumiro2.hp.infoseek.co.jp/afraid/bbs.txt
713nobodyさん:04/05/11 19:18 ID:???
>>712
ここはコーディングスレなのでスレ違い。
714712:04/05/11 19:20 ID:???
うぅぅぅ・・
すいません・・・
715nobodyさん:04/05/11 19:36 ID:???
>>714
スレ違いだが、たらい回しにされて可哀想なので一言・・。
http://sumiro2.hp.infoseek.co.jp/afraid/bbsimg/ここにアイコンを格納
>$imgurl = "./img/";

>$imgurl = "http://sumiro2.hp.infoseek.co.jp/afraid/bbsimg/";
に変更。
716nobodyさん:04/05/11 20:04 ID:???
( ゚д゚)ハァ?
717707:04/05/11 20:54 ID:???
>>711
すいません、1からそのように書いたら動きました。
なんか全角スペースかなにか入ってたのかもしれません。
ありがとうございます
718nobodyさん:04/05/11 21:28 ID:M72HBXcr
電気ストーブが出来たんですが、鯖エラーになります。どこを修正したらいいんでしょうか

http://pc5.2ch.net/test/read.cgi/php/1010583350/68
719718:04/05/11 21:40 ID:M72HBXcr
コンソールでperl -cw stove.plとしてチェックしても
特にエラーは出ていません。

しかし、Windows2000 + Apache2 + perl5.6.1では
鯖エラー500が出てしまいます。
どの辺がまずいのでしょうか?
720nobodyさん:04/05/11 21:43 ID:???
flock とか使ってたりして・・・
721718:04/05/11 21:48 ID:M72HBXcr
コマンドプロンプトで
perl stove.pl
としたら、htmlのソースが表示されました。
これはサーバの問題でしょうか?
それとも、ソースに不備があってもコマンドプロンプトでは表示されるんでしょうか?
722nobodyさん:04/05/11 21:50 ID:???
CGIの拡張子設定が .pl になってないんじゃ?
723718:04/05/11 21:52 ID:M72HBXcr
あ、stove.plは
http://pc5.2ch.net/test/read.cgi/php/1010583350/68-69
に分けて貼ってあるソースです。
724nobodyさん:04/05/11 21:58 ID:???
725nobodyさん:04/05/11 22:04 ID:???
なんかふざけたやつだな。
答える気にならん。
726718:04/05/11 22:17 ID:lgCnMYEo
>>722
アドバイスありがとうございます。
拡張子設定はplになっています。

>>724
ありがとうございます。
よく読んでみます。
727718:04/05/11 22:23 ID:lgCnMYEo
>>724
print "Content-type: text/html", "\n\n";

が抜けていた為だったようです。

おかげで、エラーは出なくなりました。
しかし、ONボタンを押してもストーブが付きません。
なぜでしょうか?
728718:04/05/11 22:37 ID:lgCnMYEo
自己レスです。

’O N'などとスペースを入れてしまっていました。
ONに直して動くようになりました。
729nobodyさん:04/05/12 00:31 ID:cFb5OXA3
@$hoge->a='1';
A$hoge->a('1');
Bif ($hoge->a eq '1'){

}
@左辺値としても使えて、$hoge->{'a'}に'1'をセットする
Aみたいに引数で$hoge->{'a'}にセットできて
Bみたいに引数が与えられない場合$hoge->{'a'}の値を返す
ようなメソッドを書きたいのですけどどうやったらいいのか判りませんです
どっかで見た気がするけど見つからないです
気が向いたら教えてくださいまし
730nobodyさん:04/05/12 02:08 ID:???
>>729
http://perldoc.com/perl5.8.4/pod/perlsub.html#Lvalue-subroutines

require 5.006;

sub Foo::foo : lvalue {
  my $self = shift;
  @_ and $self->{'-foo'} = shift;
  $self->{'-foo'};
}

my $obj = bless {} => 'Foo';
$obj->foo = 'foo!'; print $obj->foo; # foo!
$obj->foo('bar!'); print $obj->foo; # bar!
731nobodyさん:04/05/12 04:19 ID:???
質問です。
配布しているcgiに以下の記述がありました。
2ch型掲示板でID生成部分の一部です。

> $id = crypt($identify,"${year}S\.E${mday}X${mon}");

crypt関数への第二引数の部分で、「S」や「\.」、「E」、「X」はただのノイズ用文字なのでしょうか?
\記号が含まれてるため何か意味を持つのではないかと思い質問いたしました。

引用元 ttp://www.toshinari.net/ 「2chブラウザ対応掲示板」
732nobodyさん:04/05/12 06:17 ID:???
733nobodyさん:04/05/12 10:27 ID:???
734731:04/05/12 11:58 ID:???
>>732
回答ありがとうございます。

saltは先頭が$1$以外の場合、通常先頭2文字を使うため、
$id1 = crypt($identify,"${year}"); # 104
$id2 = crypt($identify,"${year}S\.E${mday}X${mon}"); # 104S.E12X4
のどちらでも同じ結果となりました。(v5.8.2 built for MSWin32-x86-multi-thread)
もし何らかの要因で各変数が空だとしてもEとXは不要になると思うんです。
ひょっとしてコーディングミスなのでしょうか。
735nobodyさん:04/05/12 12:54 ID:???
>>734
それは作者のみぞ知る、だな。
736nobodyさん:04/05/12 13:00 ID:???
>>731のやり方で2chと互換性のあるトリップ生成できるの?
もしそうならこの話題継続キボン
737731:04/05/12 13:19 ID:???
>>735
どうもありがとうございました。

>>736
トリップはトリップキーをplainに、トリップキーの2文字目3文字目をsaltに、
足りない場合はH.を末尾に置き、後ろからn文字取ればn桁トリップになります。
$trip = substr(crypt($key, substr($key."H.", 1, 2)), -8); # 8桁トリップ
2chでもしたらばでもトリップ生成方法は同じのようです。
私の質問したID部分は、本家2chの場合トリップよりも複雑になっているようですが。
738nobodyさん:04/05/12 13:38 ID:???
for と foreach の内部処理は同じという事を初心者板で見ましたが、
では foreach(@array) は for のように書けるのでしょうか。
こちらでは for($i = 0; @array; ++$i) とかやってみたのですがエラーが出ました。
739nobodyさん:04/05/12 13:39 ID:???
初心者スレでした。
740nobodyさん:04/05/12 13:52 ID:???
for(@array)
for($i=0; $i<@array; $i++)
741nobodyさん:04/05/12 14:05 ID:???
という事は最終的に
for($i = 0; $i < @array; $_ = $array[$i], ++$i)
のような感じになってるのですね。
スッキリしました。
742nobodyさん:04/05/12 14:42 ID:???
◆ 全サーバトリップ統一作戦
http://qb3.2ch.net/test/read.cgi/operate/1067245837/
743nobodyさん:04/05/12 16:37 ID:???
>>741
単にforとforeachを交換しても実行するバイトコードは変わらない、というだけの話だと思うが。
for(@array){ ... } # OK
foreach(my $i = 0; $i < @array; $i++){ .. } # OK

for($i = 0; $i < @array; $_ = $array[$i], ++$i){} はfor(@array){}に比べると
ずっと遅い、$_がlocal化されない、$_を書き換えても@arrayの要素は変わらない、などの違いがあるしな。
744nobodyさん:04/05/12 16:58 ID:???
>>743
添字使いたいときもfor(my $i = 0; $i < @array, $i++) {...} よりfor(0..$#array) {...}の
方が速いよね。なんとなく0..$#arrayのリストを最初に作ってから〜とかしそうで
最初は抵抗あったけど、試してみるとその辺は処理系がよろしくやってくれてる
みたいだし。
745nobodyさん:04/05/12 19:03 ID:???
無効コンテキストの場合、演算子の位置はどちらが見易いですか。
多くの人はポストのようですが。
#オプティマイザが勝手にプリにしてくれるのはラクダ本で理解
746nobodyさん:04/05/12 23:29 ID:???
>>745
インクリメント・デクリメント演算子のことか?

普通はポストだが、C++のコードを読み書きした直後はついプリにしてしまうね。
747nobodyさん:04/05/12 23:33 ID:???
$a++
++$a

ってことか?
748nobodyさん:04/05/13 00:54 ID:???
$hoge++; で統一だな。
C#かなにかも後置推奨だった木がするので。
最もC#などとPerlじゃ変数の命名規則も違うけど
749nobodyさん:04/05/13 05:29 ID:???
>>748
もっと色々のコーディングをしてみると前置も後置も便利なのが判るかと思います。
750nobodyさん:04/05/13 06:04 ID:???
場合によって使い分けろってことだな。
751nobodyさん:04/05/13 06:06 ID:???
プリデクリメントとポストインクリメント固定。
アセンブラとCからの習慣。
752nobodyさん:04/05/13 10:08 ID:???
メール送信のプログラムを書いているのですが、
サーバの環境上、Dateフィールドが自動で設定されません。
そこで、自力でDateフィールドを

Date: Wed, 12 May 2004 08:50:48 +0900

のように書きたいのですが、書き方がわかりません。
(途中まではわかるのですが、下記例の最後の行がわかりません)
どなたかご存じの方、教えていただければ幸いです。

# 日時の取得 $ENV{'TZ'} = "JST-9";#タイムゾーンの設定
$times = time();#時刻を取得
($sec,$min,$hour,$mday,$month,$year,$wday,$stime) = localtime($times);
$month++;
$year = $year + 2000;
@month = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
@weekly = ('Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sut');#表示したい曜日文字
$Date = sprintf?(ここ不明)

753nobodyさん:04/05/13 10:30 ID:???
754752:04/05/13 10:57 ID:???
>>753
すみません、それをみてもちんぷんかんぷんでして。。。
できれば>>752のケースの例を教えていただけませんでしょうか?
そこから勉強したいと思いまして。
すみませんが、よろしくお願いいたします。
755752:04/05/13 11:33 ID:???
以下のように、sprintfを3回つかうことはできたのですが、1回ですます方法がわかりません。
sprinfの中でカンマを表示したく、それはどのようにすればいいのでしょうか?

$ENV{'TZ'} = "JST-9";#タイムゾーンの設定
$times = time();#時刻を取得
($sec,$min,$hour,$mday,$month,$year,$wday,$stime) = localtime($times);
$year = $year + 1900;
@month_array = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
@weekly_array = ('Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sut');#表示したい曜日文字

$hour = sprintf( "%02d", $hour );
$min = sprintf( "%02d", $min );
$sec = sprintf( "%02d", $sec );
my $Date = qq|$weekly_array[$wday], $mday $month_array[$month] $year $hour:$min:$sec +0900|;
756nobodyさん:04/05/13 11:39 ID:???
$date = sprintf("Date: %s, %02d %s %04d %02d:%02d:%02d", $weekly[$wday], $mday, $month_array[$month], $year, $hour, $min, $sec);
757nobodyさん:04/05/13 11:40 ID:???
$weekly[$wday] を $weekly_array[$wday] に修正しといて。
758nobodyさん:04/05/13 11:47 ID:???
>>755
strftime使った方が楽じゃない?

use POSIX qw(strftime);
my $Date = strftime("%a, %d %b %Y %H:%M:%S %z", localtime);

sprintf(printf)の使い方も憶えといて損はないと思うけどね。激しく基本だと思う。


759nobodyさん:04/05/13 11:49 ID:???
>>755
# JST == GMT + 9 時間
my $time = time + 9 * 60 * 60;
my $diff = '+0900';

my($sec, $min, $hour, $mday, $month, $year, $wday) = gmtime $time;
my @month = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
my @wday = qw(Sun Mon Tue Wed Thr Fri Sut);

my $Date = sprintf
  'Date: %s, %02d %s %04d %02d:%02d:%02d %s',
  ($wday[$wday], $mday, $month[$month], $year + 1900, $hour, $min, $sec, $diff)
;

# 別解
my $Date = sprintf
  'Date: %s, %02d %s %04d %02d:%02d:%02d %s',
  (split /\W+/, scalar gmtime $time)[0,2,1,6,3,4,5], $diff
;
760nobodyさん:04/05/13 13:09 ID:???
my $Date = "Date: " . `/bin/date -R`;
色々な方法があるかと。
761nobodyさん:04/05/13 18:00 ID:???
スレ違いかどうか自信ないけど、質問。
Perlでの変数の値域ってどうなっているんでしょう?
文字列で扱うときはいいんですけど、数値で扱うときはどこまで大きい数字が扱えるかは、
Perlのバージョンとかで違うのでしょうか?
762nobodyさん:04/05/13 20:48 ID:???
±999999999999999
763nobodyさん:04/05/13 20:53 ID:???
>>761
perl -V してみる。
764nobodyさん:04/05/13 22:13 ID:???
>>761
Perlのバージョンでは基本的には変わらない(perl6になれば変わるかもしれない)が、
バージョンは同じでもコンパイルオプションやOSによって異なる可能性がある。
まぁ普通はこんな感じだと思うが。小さすぎると思うならMath::Big(Int|Float)で。

> perl "-V:[in]v(size|type)"
ivsize='4'
ivtype='long'
nvsize='8'
nvtype='double'
765nobodyさん:04/05/14 04:19 ID:7/s5Izsl
crypt関数の使用可否によって処理を振り分けたくて、以下のようなコードを書きました。

# crypt関数使用可否チェック
undef $check_crypt;
$check_crypt = eval { crypt('1111', '11'); 1; }; # ここが23行目
if ($@) { $check_crypt = 2; }

if ($check_crypt == 1) { crypt関数が使える時の処理 }
elsif ($check_crypt == 2) { crypt関数が使えない時の処理 }
else { 不明な時の処理 }


これを、-wオプション付で構文チェックすると

Useless use of a constant in void context at c:\www\〜\xxx.cgi line 23.

と注意されたのですが、どこが問題なんでしょうか?
このままでも使用に問題は無いのですが、少し気になるので・・。
よろしくお願いします。
766nobodyさん:04/05/14 05:21 ID:???
>>765
戻り値を使うべき関数であるところの crypt() が
無効コンテキスト (void context) に置かれているから。

my $check_crypt = eval { crypt('1111', '11') } ? 1 : $@ ? 2 : 0;

とか

if (eval { crypt('1111', '11') }) { 使用可能 }
elsif ($@) { 未実装 }
else { crypt が何らかのエラー }
767nobodyさん:04/05/14 06:02 ID:???
>>755
use HTTP::Date;
my $Date = time2str(time()+60*60*9);
$Date =~ s/GMT/+0900/;
とか。

>>761
use Config;
print "このシステムでは、\n",
"整数型(IV)はCで言うと$Config{ivtype}で、バイト長は$Config{ivsize}バイト\n",
"実数型(NV)はCで言うと$Config{nvtype}で、バイト長は$Config{nvsize}バイト\n";
いろいろ調べてみては。
768752:04/05/14 10:31 ID:???
皆様、いろんな解法ありがとうございます。
参考になります。

sprintfもなんとなくわかってきました。精進します。
ありがとうございます。
769nobodyさん:04/05/14 10:36 ID:???
Perlで例えば2004/5/14と言う日付のデータが在ったとした時
その日はその月の何週間目になるか調べる方法は在りますか?
この場合3が取得できるようにしたいです。
770765:04/05/14 10:52 ID:???
>>766
レスありがとうございます。
問題の箇所を
$check_crypt = eval { crypt('1111', '11') } ? 1 : $@ ? 2 : 0;
と書き換えることにより、無事解決することができました。

無効コンテキストというものに理解が弱く、検索や書籍で調べても
まだ完全に理解するまでには至っていないのですが、
crypt関数の戻り値を利用すべき所なのに利用していなかったことが
問題だったのですね?
ちゃんと理解できるまで、もっと調べてみます。

ありがとうございました。
771nobodyさん:04/05/14 11:57 ID:???
>>769
これのような気がする。
http://search.cpan.org/~amurren/DayOfNthWeek-1.0/

違ったら適当に探してくれ。
http://search.cpan.org/search?m=all&q=Date&n=100
772nobodyさん:04/05/14 12:19 ID:???
>>769
問題の説明が曖昧だ。「その月の何週間目」という言い方はあまり
しないと思うのではっきりと定義して欲しい。

多分、月を週に分割してそのいくつ目に入るかって意味だとは思う
のだが、週の始まりは何曜日かとか、最初の週は0週目なのか
1週目なのかとかといった数え方の好みがあるだろうし。

Date::Manip使うかPOSIXのstrftimeの%Uか%W使うかだろうなぁ。
773nobodyさん:04/05/14 16:41 ID:???
すみません、
.htpasswdで発行されたパスワードとIDを保存してあるリストを、
perlで組んだCGI(例えばBBSやチャット)の認証の際に利用したいと
思っているのですが、htpasswdで暗号化されたパスワードとBBSとかの
フォームに入力されたパスワードをコンペアする良い方法はないものでしょうか。
774nobodyさん:04/05/14 16:47 ID:???
>>773
Apache::Htpasswd
775761:04/05/14 20:16 ID:???
レスdくすです。
調べてみます。
776nobodyさん:04/05/14 23:19 ID:???
>>769
日付から曜日を求めるツェーラの公式ってのがあったと思う

ちと、検索しても全然引っかからない…
その公式の事を書いてあった本も見つからない…

質問は「調べる方法は在りますか?」なので
ありますと言っておこう。
777nobodyさん:04/05/14 23:26 ID:???
ったく。しゃーねーなぁ
ツェーラーも見つけられないのか
[(y+[y/4]-[y/100]+[y/400]+[13m+8]/5+d)%7]
778nobodyさん:04/05/14 23:54 ID:???
>776
Zeller の公式(普通ツェラーと表記すると思う)はあくまで曜日(というか日数)を求めるものなので、
それだけでは単純に何週目という値が出てこない。
以前 CGI 関係のスレで質問があって書いてみたことがあるけど、もうひとひねり必要。
779nobodyさん:04/05/14 23:58 ID:???
ツェラーで検索したら直ぐ引っかかったよ。
780nobodyさん:04/05/15 00:03 ID:???
>778
って言うか、前スレだったよ…_| ̄|○

Perl コーディング初心者質問コーナー Part33
http://pc5.2ch.net/test/read.cgi/php/1078076768/934
781nobodyさん:04/05/15 10:55 ID:???
zellerでぐぐるといろいろやってる人がいるね。

「日曜=0曜日というルールだと2004/5/1は6曜日。
2004/5/16はカレンダーで21マス目に現れる。」
これから気付けばint使って簡単に書けるでしょ。
782lock:04/05/15 11:43 ID:if9npvZf

あの、最近CGIを作らんとならんコトになりまして、
ファイルのロック関係を調べたのですがちょっとお馬鹿な俺の脳味噌では理解出来ませんでした。

取り敢えずめんどう事は避けたいので、実行ロックをかけてプロセスが同時に動けないようにしたいです。
初めての経験なので負荷とか速度は気にしないことにして、安全を優先させるつもりです。

fllckを使って実現させようと思っているのですが、どのように記述すれば最も安全なのでしょうか?
開発環境はwin98ですが、本番の実行環境はUNIX系のOSです。
お馬鹿な質問で申し訳ありませんが、どなたかよろしくお願いします。
783nobodyさん:04/05/15 12:05 ID:???
最大接続数を1に設定するよろし
784nobodyさん:04/05/15 12:20 ID:???
>>782
安全優先ならちゃんと仕組みを理解してから使う。
急を要するならどこかから似たCGI探してから丸投げスレで頼みこむ。
785nobodyさん:04/05/15 13:09 ID:???
>>782
もう一台、検証用にマシンを用意してLinuxか*BSDでもインスコ
したほうがよい。
現行のwin98をwin2000以降にしてVMwareって手もあるが。
786名無しさん:04/05/15 14:51 ID:???
>>782
とりあえずWindows98ではflockがかからなかったと思うのだが。。
UNIXの中にもかからんのがあるらしい。
787nobodyさん:04/05/15 15:01 ID:???
788782:04/05/15 17:32 ID:MHBM3z7f
ロックについて少しだけ分かってきました。
検索すると以下のコードに辿り着いたのですが、

open(OUT, "+< outfile.txt");
flock(OUT, 2);
truncate(OUT, 0);
seek(OUT, 0, 0);
print OUT "........";
close(OUT);

これはイツロックが解除されてるんでしょうか?
closeの時にファイルハンドルといっしょに消滅してるの??
と言いますか実行ロックがやりたいんだけど、プログラムの先頭に
open(OUT, "+< outfile.txt");
flock(OUT, 2);
これを書きっぱなしにしたらダメですか?
789nobodyさん:04/05/15 17:37 ID:???
>>788
>プログラムの先頭に(略)これを書きっぱなしにしたらダメですか?
プログラムの開始はそこじゃないですよ。
スタートアップルーチン,perl_alloc,construct,parse(,run)して初めて(Perl)プログラムの先頭に行くわけです。
790nobodyさん:04/05/15 17:51 ID:???
>>788
実行ロックって何よ?
脳内用語を使うな
791782:04/05/15 18:08 ID:MHBM3z7f

すみません、実行ロックは実行フェーズに対するロックの意でした。
つまり、インタプリタに引き渡された直後の実行フェーズの一番初めの処理としてロックをかけ、
それ以後の処理を複数のプロセスが同時に動いてほしくないと言うことです。
792nobodyさん:04/05/15 18:08 ID:???
LOCK_EXをlock_executingの略だと思っているとか。んなわけないか。
793nobodyさん:04/05/15 18:25 ID:???
なんかウザくなってきたな。
794nobodyさん:04/05/15 18:27 ID:???
>>791
BEGINブロック作ってそこでflock。
そして、ENDブロックでclose。

壊れてもいいファイルだから、closeを書かなくても、
CGIなら問題ないのだろうけど、書いておくのがお約束。
795nobodyさん:04/05/15 18:33 ID:jlBwPWFJ
Perlどっかから貰ってきて、
掲示板のデザイン変えようとしてもどこにHTML書けばいいか分かりません。
属性名を変数にしてPrintで書けば良いの?
796nobodyさん:04/05/15 18:36 ID:???
>>795
スレ違い

■ 設置の方法がわからない場合には
CGI設置について質問
http://pc5.2ch.net/test/read.cgi/php/1054216089/15(テンプレ)

■ 自分で改造できない場合には
【 スクリプト改造依頼スレ 】(丸投げ)
http://pc5.2ch.net/test/read.cgi/php/1076831972/324(テンプレ)

■ 自分で改造するアドバイスが欲しい場合には
★三 【 スクリプト改造工房 PART 8 】 ★三
http://pc5.2ch.net/test/read.cgi/php/1077525387/79(テンプレ)
797782:04/05/15 18:53 ID:???
ありがとうございますた。
794さんの方法で行ってみます。
でも耐久テストに失敗したらまた来るかもしれませぬ。。
798nobodyさん:04/05/15 19:47 ID:???
>>791
何か小難しい事書いてるけどそんな特殊な事やろうとしてるのかな。
やりたい処理を具体的に書けば良い例がいくらでも出てくる気がするが。

>>797
耐久テストって何じゃいw
799nobodyさん:04/05/15 20:20 ID:???
単にファイルロックがどんなものか理解できていないだけじゃない?
800nobodyさん:04/05/15 20:44 ID:???
クラスfooを継承する子クラスhogeを作って、
use hoge;
my $hoge = new hoge();
$hoge->method(@args);
などというように、hogeオブジェクトのメソッドを呼び出そうとすると、
親のfoo::method()が呼ばれて、hoge::method()が無視されてしまうことが
よくあります。hoge::method内でSUPERなどで明示的に呼んではいません。

fooのmethodをmethod2などにリネームすると、「methodなんてメソッドは
パッケージhogeには無い、ひょっとしたらhogeをロードし忘れてるんじゃないの?」
と怒られてしまいます。

この現象は何故起こるのでしょうか?
my $hoge = new hoge();と$hoge->method(@args);の間に
print ref $hoge, "\n";を入れてやると、ちゃんと$hogeはhogeになってます。

原因が分からないので、とてもとてもデバッグしにくいのですが、hoge::methodに
バグがあって読めないのなら、強制的にhoge::methodを呼び出して、
問題のある行でエラー吐いてdieさせるとかはできないのでしょうか?
801nobodyさん:04/05/15 20:55 ID:???
>>800
同じスクリプトで結果が異なる場合があるのん?
実際にあってバグを疑うのなら環境を書くべきじゃないのん?
802nobodyさん:04/05/15 21:03 ID:???
>>800
パッケージhogeのmethodをnethodみたいにタイプミスしてない?
803nobodyさん:04/05/15 21:07 ID:???
>>801
すいません、環境書き忘れていました。
Debian woody + Perl 5.6.1です。

同じスクリプトで結果が異なるわけではなく、最初は親クラスのが呼び出されるけど、
子クラスのmethodの中をデバッグ、というか、例えば文法が間違ってる部分を
直したりすると、ちゃんと子クラスのを呼んでくれたりするのですが、
何故親クラスのを呼びに行くのか、何故子クラスのオブジェクトにmethodが無いなどと
言われるのか…。
文法等が間違っているのなら、そこでエラー吐いて止まって欲しいのですが、
親クラスのを平然と呼ばれて続行されると、どこが間違ってるのかわからないので…。
804nobodyさん:04/05/15 21:09 ID:???
>>802
それも無いです。
hoge::methodだけではなく、他のメソッドも呼べなかったりしますし…。
805nobodyさん:04/05/15 21:12 ID:???
mod_perl で変数の消滅してないだけだったりして
806nobodyさん:04/05/15 21:16 ID:???
>>805
mod_perlってapacheのモジュールですよね?
apacheは使ったこと無いのでよく知らないのですが、というかapacheのmod_perlなら
使ってないです。普通のPerl5.6.1です。
807nobodyさん:04/05/15 22:22 ID:???
>>806
100%アンタのバグだということは確かだが、さっぱり要領を得ないな。
コード晒せ。
808nobodyさん:04/05/15 22:45 ID:???
>>807
私もPerlのバグだとは思ってないです。
どうもhogeの中でuseしているモジュールが、インストールできてないとかで読めない
場合に発生するみたいですが…。
809nobodyさん:04/05/16 02:01 ID:???
Perl 5.6.1

物ぐさしないで新しいの入れてご覧。
ActivePerl build 631以前はTkが同梱されておりません。
810nobodyさん:04/05/16 05:37 ID:???
これは具体例が無いと分からないね。
問題の起きるサンプルを書いて欲しいところ。
811nobodyさん:04/05/16 07:49 ID:???
有る特定の日が何曜日か知る方法って有りますか?
今日、今だったらlocaltimeで取得出来ますけど。
引数で何とか出来そうですが分かりませんでした。
812nobodyさん:04/05/16 08:08 ID:???
813nobodyさん:04/05/16 08:40 ID:???
>>812
直ぐ前に有りましたか、失礼しました。
814nobodyさん:04/05/16 10:11 ID:WJ6PDaM4
time値とプロセス番号をつかって、

10846903300057678
のように、表示させたいとしたいのですが、
(プロセス番号は、8桁未満のときは0を入れる)

$datafile = time . sprintf("%8d",$$);

だと、
108469033  57678
となってしまいます。
この空白を0で埋めるにはどうすればよいのでしょうか?
815nobodyさん:04/05/16 10:27 ID:???
816814:04/05/16 10:32 ID:WJ6PDaM4
>>815
どうも。
$datafile = time . sprintf("%08d",$$) . ".csv";
で解決しました。
817nobodyさん:04/05/16 11:28 ID:???
>>808
パッケージ名に全て小文字の名前を使うな。続きはそれを全部修正してから聞こう。
818nobodyさん:04/05/16 14:10 ID:???
>>812
なぜ>>777を指さないでわざと>>781を指すんだろうね
819nobodyさん:04/05/16 15:59 ID:???
CGI.pmを使ってPOSTする方法を教えてください。
820nobodyさん:04/05/16 16:26 ID:???
>>819
ここでもマルチですか
821nobodyさん:04/05/16 16:53 ID:???
他スレで回答もらってるのにここは放置か。
さすがマルチなだけあるな。
822nobodyさん:04/05/16 23:45 ID:???
質問です。

ある日付の1日前の日付(YYYY/MM/DD)の取得は一度1970年よりの秒数に変換してから再びlocal関数に通すしかないのでしょうか?
もう一つ、
ある月に何日まであるかを返すには閏年の計算は必須でしょうか?(Perlに用意されていますか?)
823nobodyさん:04/05/16 23:50 ID:???
ファイルをネットからDLする際に、更新されてたら全部読まずに追記の部分だけを読んで保存するにはどうしたらいいのですか?
たとえば2chのDATを読む時みたいに。
LPWのmirrorをみてみたのですが、更新されてるときは新しくDLするみたいでよくわかりません。
824nobodyさん:04/05/16 23:56 ID:???
>>822
3/1の前日が2/28か2/29になる以外、すべての日の前日は固定ですが?
2月以外は何日まであるか固定ですが?
それは閏年によって変わるのだから計算は当然必要ですが?
perlにはそんなものを求める関数はありませんが?
825nobodyさん:04/05/16 23:59 ID:???
>>822
Time::local
>>823
RFC 嫁。Range ほか
826nobodyさん:04/05/16 23:59 ID:???
>>823
指定したバイト数以降を取得する。
827nobodyさん:04/05/17 00:04 ID:???
>>825
>>826
即レスサンクスです。
調べてみますです
828822:04/05/17 00:29 ID:???
>>824 >>825
回答ありがとうございます。

Time::Localモジュールを使えば日付→経過秒数の変換が一発でできるようですね。
ある月の日数算出は普通に組み込んでみようと思います。

また困ったことがあれば質問しに来ます。
どうもありがとうございました。
829nobodyさん:04/05/17 06:58 ID:???
>>822
use Date::Calc qw(Add_Delta_Days Days_in_Month);

my ($year, $month, $mday) = (2004, 3, 1);
($year, $month, $mday) = Add_Delta_Days($year, $month, $mday, -1);
print "date-1: $year, $month, $mday\n";

my $days = Days_in_Month($year, $month);
print "days: $days\n";
830nobodyさん:04/05/17 07:33 ID:???
2の200乗の答えを標準出力に出力するプログラム作ってください!

831822:04/05/17 08:22 ID:???
>>829
それです!
わざわざサンプルソースまで書き出して頂きありがとうございます(´Д⊂ヽ

Days_in_Monthにあたる関数は自力で作れましたので、
Date::CalcのAdd_Delta_Daysだけを借りてみようと思います。

そして小一時間ほどppmと格闘しなんとかDate::Calcをインストールし、
5/1→4/30の移動を確認できました!
本当にありがとうございました。

# ついでにTime::Localもインストールしておきました。
832nobodyさん:04/05/17 10:01 ID:???
>>830
宿題は自分でやろうな。な。
833nobodyさん:04/05/17 13:32 ID:???
print "1606938044258990275541962092341162602522202993782792835301376\n";
834nobodyさん:04/05/17 13:44 ID:???
perlのDBIでmysqlにデータを出し入れする時って、客の個人情報とかの場合でも平文でいいよね?
835nobodyさん:04/05/17 20:26 ID:???
836823:04/05/18 02:17 ID:???
>>825
>>826
探したのですが、rangeと検索してもほかの部分が見つかってしまってだめでした。
もうちょっとヒントをいただけませんか。
837nobodyさん:04/05/18 02:27 ID:???
CPANをアンインストールすることはできますか?OSはWindowsXPです。
838nobodyさん:04/05/18 07:19 ID:15Ww53+y
839nobodyさん:04/05/18 07:21 ID:???
>>830
use bignum;

>>834
ネットワーク(鯖)構成如何じゃない?
漏れても500円でなんとか(ry
840823:04/05/18 08:16 ID:???
>>838
ありがと〜。
がんばってみます
でもすごいむづかしいっぽい;;
841nobodyさん:04/05/18 12:03 ID:???
>>834
Yahoo
842nobodyさん:04/05/18 22:40 ID:???
誰かメールアドレスに使われる記号(@とか.とか)一覧が載ってるサイト知らない?

前に見つけたんだけど、URLがどっかいっちゃった;それでさっきから探してるけど、見つからないんだ。
843nobodyさん:04/05/18 22:43 ID:???
RFCを見ろ。
844名無しさん:04/05/18 23:11 ID:4Rd9YBtL
次のようなCGIの作成で質問です。
表の生成部分はなんとか出来そうなのですが
(a)ファイルの中から行を探して変更、削除する部分と
(b)追加する部分で同じ内容で複数行追加しないようにする部分
の方法が頭に浮かびません。どのような方法がありますか?サンプルソースを教えていただけないでしょうか?
1)予定テキストファイルを読み取り次のような表を生成します。
+−−−−+−+−+−+−+−+−+−+−+−・・・
|2004年06月|先月 |今月 |来月 |
+−−−−+−+−+−+−+−+−+−+−+−・・・
| 名前 |1|2|3|4|5|6|7|8|9・・・
+−−−−+−+−+−+−+−+−+−+−+−・・・
| 鈴木 | | |休| | |後| | |
+−−−−+−+−+−+−+−+−+−+−+−・・・
| 佐藤 | | | | |休| | | |
+−−−−+−+−+−+−+−+−+−+−+−・・・
| 田中 | | |前| | | |休| |
+−−−−+−+−+−+−+−+−+−+−+−・・・
2)先月、今月、来月の部分はリンクとなっていてCGIを呼び出し、先月の表、今月の表、来月の表を生成します。
3)名前もリンクになっていてフォームを呼び出し、SELECTタグにより年、月、日と、休、前、後を選択して予定テキストファイルに追加します。
4)休、前、後もリンクになっていて、フォームを呼び出し、予定テキストファイルから該当行を変更、削除します。
予定テキストファイルの内容は
名前ID<>年<>月<>日<>内容
n0001<>2004<>6<>3<>休
n0002<>2004<>6<>5<>休
n0001<>2004<>6<>6<>後
n0003<>2004<>6<>7<>休

名前と名前IDのリストファイルの内容
名前ID<>名前
n0001<>鈴木
n0002<>佐藤
n0003<>田中
845nobodyさん:04/05/18 23:28 ID:???
業務丸投げですか?
まずは日本語からお勉強しようね。
お仕事をするには早すぎるようですよ。

ぶっちゃけ表はファイルから読み出すだけだし、
書き込みは重複を検査すれば良いだけだろ。
846842:04/05/19 00:04 ID:???
>>843
ありがとう!見つかったよ。

目的はメルアドのチェックじゃなくてsendmailに渡す際へんなスクリプトを排除したいだけなんだ。
で、なんか一杯記号は許可されてるみたいだから、結局「<」、「>」、「"」だけ切り捨てることにしたよ。

まだperl勉強足りないんだけど、perlって「$」、「@」、「%」とかを入力されても内部で途中で展開しないで
ただの文字列として扱われるみたいね。いい!
847nobodyさん:04/05/19 00:22 ID:???
(a)ファイルの中から行を探して変更、削除する部分と
 Perlは不得手。全部読んで全部書き出すよろし。
 splice()を使うと幸せになれるかもしれない。

(b)追加する部分で同じ内容で複数行追加しないようにする部分
 重複チェックはハッシュを利用すると楽。
848nobodyさん:04/05/19 01:25 ID:???
>>845
>まずは日本語からお勉強しようね。
>お仕事をするには早すぎるようですよ。

人のあらを見つけると大喜びで責め立てる。845はそういうむなしいやつ。
でもな、845だっていいところもあるんだよ。845のいいとこは↓が教えてくれる。
849nobodyさん:04/05/19 01:31 ID:???
>>845のいいところ

>まずは日本語からお勉強しようね。
>お仕事をするには早すぎるようですよ。

人生にとって大切なことを的確にアドバイスしてあげたこと
850nobodyさん:04/05/19 02:31 ID:???
PERLでの半角カタカナの扱いに困ってるよ・・・

例えば相手がフォームに「ササ」と半角カタカナで入力する。んで、漏れが
require "jcode.pl";
read(STDIN,$buffer);
$buffer =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
jcode::convert(\$buffer,"euc");
jcode::h2z_euc(\$buffer);
〜処理〜
jcode::convert(\$buffer,"sjis");
print $buffer;

ってやってもうまくいかない。相手がeucで送ってくれば大丈夫だけど他の文字コードだと駄目。
半角カタカナの文字列+全角文字列(例「ササ表示」)ならちゃんと全角カタカナへ変換できるけど。

なんかPERLメモとかには先にeucに変換してあればおkだなんて載ってるけど、全然おkじゃない・・・
相手がどんな文字コードで送ってきても華麗に半角カナを全角カナに変えれちゃうおっとこまえいませんか?
851nobodyさん:04/05/19 02:37 ID:???
jcode::convert(\$buffer,"euc", 'z');
852850:04/05/19 03:07 ID:???
>>851
それも駄目なのさ。

多分問題は$bufferの中に半角カナしかないときなんだよね。他の文字も混ざってればちゃんと機能するんだけどね。
まあそんなにこだわることでもないけどできればなぁ
853nobodyさん:04/05/19 03:33 ID:???
854nobodyさん:04/05/19 03:33 ID:???
ファイルの排他制御ってやっぱりいりますか?ちょっとしたCGIでtxtファイルから読みこんだり
するんですけでど、どれくらいのレベルから排他制御って必要になってくるんですか?
855nobodyさん:04/05/19 03:56 ID:???
>>854
【Perl】ファイルロック(排他処理)について語ろう
http://pc5.2ch.net/test/read.cgi/php/1024795138/
856854:04/05/19 03:56 ID:???
すいません。読みこみだけのときは排他制御なんて必要ないんですよね?
でも、人が読みこんでる最中に誰かが新たにopenしようとしたらopenエラーになっちゃいますよね。

それは嫌なので一応flock等で誰かがファイルオープンしているときは待たせればいいんでしょうか?

open(DATA,"< test.txt");
flock(DATA,1);
なんたらかんたら
close(DATA);

みたいでよろしいですか?
857854:04/05/19 03:59 ID:???
>>855
すいません。専用スレがあるんですね。そっちで質問してみます。
858nobodyさん:04/05/19 05:48 ID:???
>>850
他の文字と一緒に判別させるしかないよ。
"ササ"(Shift_JIS) = "算"(EUC-JP)だから。
859nobodyさん:04/05/19 06:29 ID:Q40mcV4U
掲示板CGIで、+を半角スペースにデコードする処理があると思うんです。
あれをやってしまうと、本文に+が含まれている場合
空白になってしまうのですがどうすれば半角の+を表示することができるのでしょうか?

++
860nobodyさん:04/05/19 06:59 ID:???
>本文に+が含まれている場合
「+」は「%2B」にエンコードされてるんだから無問題。
エンコードされていなかったら送信側のバグ。
861nobodyさん:04/05/19 07:00 ID:???
エンコードから学習しよう
862nobodyさん:04/05/19 07:02 ID:???
>>860に付け加えると、
デコードする際にまず+を半角スペースに変換して、それから%??を変換するのはこいつのため。
先に%2Bを+に変換してしまうと半角スペースになってしまう。
863859:04/05/19 07:34 ID:???

なるほど。コードをよくよく見てみたら、unpack(デコード)したあとに
+を半角スペースに置換する処理を行っていました。
どうもありがとうございました。
864850:04/05/19 17:11 ID:???
>>858
やっぱそうですかね、相手が送ってきたものを先にeucに変換する処理も相手が半角カナしか
入力しない場合、jcode.plではeucへの変換が正常におこなわれないみたいですね。

まあ、仕方ないということで半角カナは止めてね。って注意書きいれる事にしますた。
865nobodyさん:04/05/19 17:19 ID:???
a.cgiに入力フォームがあって、b.cgiでそれを受け取るんですが、b.cgiでブラウザの
戻るボタンを押すと普通は
「セキュリティ保護のため、〜〜〜」
っていう文言がでてしまいますが、最近そうならないページを見つけました。
ttp://www.blueberryeye.co.jp/
の注文ページなんですが、間違っても簡単に前のページに戻れるのはいいなぁと思いますが、
やり方がわかるかたいますか?
866nobodyさん:04/05/19 18:01 ID:???
lwpを使ったスクリプトからのアクセスを禁止する方法はありませんか
.htaccessでIP指定してdenyしてもだめだし
User-Agentがlibwww-perl/5.75なのでそれをdenyしても防げません。

lwpを使ったサンプル探して自分でいろいろテストしてみようと思いましたが
そういうのも見つかりませんし
何方かお知恵を拝借できませんでしょうか
867866:04/05/19 18:02 ID:???
×User-Agentがlibwww-perl/5.75なのでそれをdenyしても防げません。
●User-Agentがlibwww-perl/5.75なのでそれをdenyしてみましたが防げません。
868nobodyさん:04/05/19 18:04 ID:???
>>865
前にもそんなネタ振った人がいたな。
入力値引き渡す方法はいろいろあるんだが
調べる気がさらさらない様子で放置されてたような。
869865:04/05/19 18:12 ID:???
>>868
入力値の引継ぎではなくて、多分キャッシュ関係なんだと思います。

例えば前ページに戻ったとき、フォームに入力していたのが消えずにそれぞれのボックス内に
残ってるんですよ。フォームのあるページを普通のHTMLで作った場合と同じ事が、CGIから吐き出されるHTMLでも
できてるって話です。

870nobodyさん:04/05/19 18:17 ID:???
それをやる為には入力値の引継ぎ方法を考えないといけないわけなんだが。
871nobodyさん:04/05/19 18:20 ID:???
>>865
スレ違い

>>866
板違い
872nobodyさん:04/05/19 19:01 ID:???
キャッシュにフォーム値が残るとは初耳。
そんな方法があるのなら知りたいな。
873865:04/05/19 19:03 ID:???
>>870
そうなんですか?HTMLではその入力値の引継ぎを自動でやってるってことですか?

ただ単にCGIから吐かれたHTMLをブラウザに一定の時間のキャッシュを許すだけとかかなぁと
思ってました。

CGIで作られたページのキャッシュを制御するような機能をPERLで作れるのかなと。
874nobodyさん:04/05/19 19:19 ID:???
POSTかGETかによってブラウザの挙動が違う
Perlのコーディングとは全く関係ない
875nobodyさん:04/05/19 19:23 ID:???
>>873
ていうか>>865のページのソースでも読んでろって
876865:04/05/19 19:41 ID:???
>>875
何度も読んだ。

なんかみんな質問を勘違いしてるぽ

引継ぎなんてやっぱり関係ないみたい。ブラウザの戻るボタンで情報の再送信普通は自動
でしないけど、それを自動でやっている。っていう話でもない。

例えば、a.htmlにテキストボックスがある。そこに「あいうえお」といれてb.cgiに移る。
b.cgiが何するかなんてどうでもよくて、b.cgiからa.htmlに戻った場合、a.htmlのテキスト
ボックスには、さっき自分で書いた「あいうえお」が残ってるよね。

それは入力値の引継ぎなんて全く関係ない。ブラウザは新しく何かを読みこむわけじゃないし。

それのa.htmlがa.cgiになっても同じ様にするにはってことなんだけどね。
877nobodyさん:04/05/19 20:03 ID:???
勘違いしてるのはお前の方だって。
さっさと消えろ。


では、次の人どうぞ。
878865:04/05/19 20:13 ID:???
>>877
う〜ん結局誰もわからないか。まあすぐに必要なわけでもないので、地道に色んなページで勉強してきます。
ありがとうございました。
879nobodyさん:04/05/19 20:30 ID:???
香ばしい匂いが漂っていると思ったら、なるほど・・・
880nobodyさん:04/05/19 20:52 ID:???
HTMLからCGIにSSIで値を渡すときってどうすればいいんでしょうか。
テキストカウンターなのですが、
 <!--#exec cgi="./counter.cgi?id=tes&md=4" -->
とするとSSIエラーが出ます。
?以降を外せば動くんですが・・・。
881nobodyさん:04/05/19 20:59 ID:???
882nobodyさん:04/05/19 21:07 ID:???
少しでも気にくわない事があると、「消えろ!」とはねつけて殻に閉じこもってしまう大人になれない>>877
しかし>>878よ、>>877は決して間違ってはいないんだぞ。そこの所は理解して欲しい。

>>877の本心を明かす男は↓
883nobodyさん:04/05/19 21:08 ID:???
さっさと消えろ!
884nobodyさん:04/05/19 21:09 ID:???
↑いいや違うぞ!本当の本心は↓
885nobodyさん:04/05/19 21:10 ID:???
まんげが生えてきたーーー!!
886nobodyさん:04/05/19 21:11 ID:???
>>865
POSTでアップロードしてから戻ると「セキュリティ保護のため、〜〜〜」
ってことならもう少し盛り上がったんだろうけどねぇ。

HTTPヘッダのLocationですっとばすぐらいしか策を思いつかないが、
Perlには関係ないか。
887nobodyさん:04/05/19 21:54 ID:???
ちょっと不安になったんですが、
ある一つのデータファイルに対して、二つ以上の
Perlプログラムからファイルの読み書きを行う場合、
flockを使っていれば排他処理は問題ないですよね?
888nobodyさん:04/05/19 22:04 ID:???
>>887
スレ違い
889nobodyさん:04/05/19 22:21 ID:???
>>887
コード書いて試してからまたきてね。
890nobodyさん:04/05/19 22:33 ID:ObBdfHPa
みなさんはじめまして。
以前、板違いのところで質問しまいましたが、親切にこちらを紹介して頂いたので
来た次第です。今回は教えを乞いたく伺いました。

私はsendmailを使ってメールフォームCGIを作ろうとしています。しかし、
No recipient addresses found in headerというエラーが出てしまいます。
エラーは受け取り人のアドレスがヘッダーにないといっているようなのですが、
変数の中にはアドレスがきちんと入っているんです。

現在、いろいろ試して最終的なソースはこうなっています。
$honbunていうのがbody部分(のつもり)です

$sendmail = '/usr/lib/sendmail -t';

if(open(SENDMAIL,"| $sendmail")){;
print SENDMAIL <<"EOM";
From: $motoadr_1
To: $mail_to
Subject: $staff_subj
Errors-To: $errmailadr
MIME-Version: 1.0
Content-Type: text/plain; charset="ISO-2022-JP"

$honbun
EOM
close(SENDMAIL);
}

ヘッダーとボディ部分の間は空行で区切ったのですが、これではダメなのでしょうか?お気付きの方はぜひとも教えてくださいませ。
891nobodyさん:04/05/19 22:57 ID:???
>>890
\n\n
892nobodyさん:04/05/19 23:22 ID:???
>>890
sendmailに食わしている内容が間違ってる可能性が高いと
思われるので、

open(SENDMAIL,"| $sendmail")

のところを

open(SENDMAIL,"> 適当なファイルのパス")

としてファイルに書き出してよく調べてみることをお勧め
する。

ありがちなのはヘッダ部に埋め込んでいる$ほげほげのどれ
かの末尾に改行がついていて、そこが空行になってしまって
いるって奴だね。
893nobodyさん:04/05/20 00:32 ID:UfxuQY5M
#何回も正規表現を使うと
#$1,$2,$3に前回のマッチパターンが入っているからなのかうまく行かないことがあります

$s='921010';
my ($year,$month,$day)=($s=~m/^(\d+)(\d\d)(\d\d)$/);
print "$year,$month,$day\n";

$s2='hogemogesage';

($hoge,$moge,$sage) =($s2= ~m/(hoge)(moge)(sage)/);
print "$hoge,$moge,$sage";

->
92,10,10
4294967295,,Hit any key to close this window...
これを避ける簡単な方法ってないですか?
894nobodyさん:04/05/20 00:39 ID:???
>>893
それ、単にコードの間違い。
895nobodyさん:04/05/20 00:45 ID:???
>>893
↓のようにきちんと出力されたけど。
92,10,10 hoge,moge,sage
896nobodyさん:04/05/20 00:54 ID:???
= ~
897nobodyさん:04/05/20 00:57 ID:UfxuQY5M
あれ?何回かやってみたら下の方だけでもダメですた
ばかでした

結局
= ~→=~
お騒がせスマソ
898nobodyさん:04/05/20 02:58 ID:746RqQ7w
ディレクトリ中から、内容に特定の文字列を含むファイルを一発でgrepってできますか?
ひとつづつopenしてgrepならできるんだけど。
899nobodyさん:04/05/20 03:14 ID:???
そんなんやるべきじゃない。
900nobodyさん:04/05/20 04:43 ID:???
>>899
もまいは生きてるべきじゃない
901nobodyさん:04/05/20 05:07 ID:???
>>898
grep -nH 特定の文字列 `find ディレクトリ -type f`
# find ディレクトリ -type f | xargs grep -nH 特定の文字列
# find ディレクトリ -type f -exec grep -nH 特定の文字列 {} \;

902nobodyさん:04/05/20 05:55 ID:???
903nobodyさん:04/05/20 09:10 ID:???
>>876
Cookie使えばいいんじゃない?

904898:04/05/20 19:49 ID:???
>>901
レスありがと。でもperlだけではできないってことかな。
まじめにひとつづつopenするかー。
905nobodyさん:04/05/20 20:22 ID:???
結局誰かが各ファイルを一つずつ open しなきゃならないことには変わりなく、
それを find にやらせるか、それとも perl が自分でやるか、というだけの違い
906nobodyさん:04/05/20 20:25 ID:???
初心者ってより天然だな。
907nobodyさん:04/05/20 22:11 ID:???
すみません。質問させてください。
perlでレスポンスヘッダに含まれるHTTPのバージョンを
変更したいのですが、できるのでしょうか?
908nobodyさん:04/05/20 22:40 ID:???
>>907
出来なくは無い。
ひとつの方法を教えよう、perlでhttpサーバを書け。
909nobodyさん:04/05/20 22:56 ID:???
Jcode.pmで半角カナを含んだ文字列を使いたいのですが、どうやらgetcodeが
うまく動かないようですね。で、getcodeを使わずに直で指定して、
$line = Jcode->new($line, 'sjis')->euc;
のようにしたのですが、この$lineをEUC_JPで定義されているDBに渡すと
eucじゃないと言われます。
これは何故なんでしょうか。半角カナの有無を意識せずに文字列を扱うことはできないのでしょうか?
Perl5.6.1、Jcodeは最新のです。
910nobodyさん:04/05/20 23:03 ID:???
答えは出てる。
EUCじゃないと言われてるんならEUCじゃないんだよ。
DBに渡している文字コードを再確認
911nobodyさん:04/05/20 23:22 ID:???
>>910
typoでsjisじゃなくjisになってましたワン
というか、直に指定してやるしかないのでしょうか?
$lineの入力として複数ファイルを同時に扱う時に、
複数の文字コードがあったりすると困るのですが…。
912nobodyさん:04/05/20 23:25 ID:???
Cookie発行について質問です。

    # ローカル変数を定義する
    local ($sec, $min, $hour, $day, $mon, $year, $date);
    # グリニッジ標準時刻を取得する(localtimeは1900年から換算だが、GMTは1970年から)
    ($sec, $min, $hour, $day, $mon, $year, $date) = gmtime (time + 60 * 24 * 60 * 60);
    # 曜日を表すハッシュの文字列を定義する
    $date = ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday") [$date];
    # 月を表すハッシュの文字列を定義する
    $mon = ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") [$mon];
    # フォーマット指定の文字列を変数へ書き出す
    $vaild = sprintf ("%s, %02d\-%s\-%04d %02d:%02d:%02d GMT", $date, $day, $mon, $year + 1900, $hour + 9, $min, $sec);

この状態で$vaildを見てみると、今日の日付のはずが
Monday, 19-Jul-2004 23:18:34 GMT
のように曜日と月が正確に表示されなくて困ってます。
どの部分を修正すればよろしいのでしょうか。
913nobodyさん:04/05/20 23:34 ID:???
すんませんワケわかんないことやってました
↑のこと忘れてください・・・
914nobodyさん:04/05/20 23:37 ID:???
>>912
time + 60 * 24 * 60 * 60
これ何してんの?
915nobodyさん:04/05/21 00:18 ID:2dDSzz6y
FreeBSD、もしくはLinux と Perl5 で
EAN128バーコードを作成したいのですが、
何か良い方法はありませんでしょうか?
GD::BarcodeではEAN128は出力できないし、
まともなサーバサイドアプリケーションは100万円程するしで
悩んでいます。。
916nobodyさん:04/05/21 00:33 ID:???
>>915
そりゃコーディング以前に設計の問題だろ
917nobodyさん:04/05/21 01:06 ID:???
Perlモジュールスレで質問していたら Barcode::Code128 を試してみろと教えてあげたところだが
スレ違いなので教えてあげない
918nobodyさん:04/05/21 04:22 ID:hNvgkOa1
@ニフティで、
下のどっちのやりかたでもエラーとなってしまうのですが、(ほかサーバではOK)
対処方法ご存じのかたいらっしゃらないでしょうか?
@ニフティ特有の事情ではないかとは思うのですが。
(なんせsendmailすら使えないし@ニフティ)

use Jcode;
Jcode::convert(\$in{'q'}, 'utf8', 'euc' );



require 'Jcode.pm';
Jcode::convert(\$in{'q'}, 'utf8', 'euc' );
919918:04/05/21 04:32 ID:hNvgkOa1
どうやらuseそのものが使えない気がしてきたんですが・・・
KCatch.pmをおいてuse KCatchしても、エラーがでるし。
920918:04/05/21 04:41 ID:hNvgkOa1
@nifty では /usr/local/bin/perl しか使えない。 通常は /usr/local/lib/perl5 以下に存在しているはずの標準ライブラリの中で、
動作させたい perl スクリプトが必要とするライブラリを全部転送する必要がある。

ということがわかったのですが、今回のeuc⇒utf8変換をできるようにするためにおいとく必要のあるライブラリはなんでしょうか?
921918:04/05/21 06:09 ID:hNvgkOa1
http://studioddtonline.web.infoseek.co.jp/plan/niftyefstat.html
を参考にがんばってるんだがねー。。。足りないモジュール大杉にふてー
922nobodyさん:04/05/21 06:18 ID:???
ここは日記じゃないぞ
923918:04/05/21 06:25 ID:???
すみません、もう終わりましたので許してください。20弱のモジュール入れまくった。
924nobodyさん:04/05/21 06:34 ID:???
925nobodyさん:04/05/21 12:22 ID:ERQd2RKf
とほほのPerl入門をコピペ改造中ですが、教えて下さい。

無料HPエリアサービス等で「http://www.server.com/~temp/」が短縮URL「http://temp.server.com」でも表示できる場合、
http://temp.server.com/index.htmを指定しても取得できないファイルが
http://www.server.com/~temp/index.htmで取得できたりするケースがあるんですが
この場合は「短縮されてないURL」をどのように察知すればよいのでしょうか。

http://tohoho.wakusei.ne.jp/wwwperl2.htm#Sockets
↑コピペ中のソース
926nobodyさん:04/05/21 13:16 ID:???
ログの特定の場所のみを書き換える方法ってどんなのがありますか?
例えば
00000000000
00000000000
という内容のログファイルがあったとして、2行目の左から5番目の文字だけを0から1に書き換える等…
927nobodyさん:04/05/21 13:17 ID:???
seek
928926:04/05/21 13:25 ID:???
ありがとうございました
929nobodyさん:04/05/21 13:26 ID:???
DBD::Pgで、
$sql = "SELECT foo FROM table WHERE bar = ? OR bar = ? OR bar …";
$sth = $dbh->prepare($sql);
しておいて、
@array = ("hage", "hige", "huge");
$sth->execute(@array);
$ref = $sth->fetchall_arrayref();
みたいなことをしたいのですが、0個以上の可変個数の要素をバインドするときって
SQL文の宣言はどういう風にすればいいのでしょうか?
要するにWHEREのOR bar = ?の個数が動的に変化して困るって事なんですが…。
930nobodyさん:04/05/21 15:45 ID:???
>>925
404などのエラーになるかどうか
931nobodyさん:04/05/21 15:54 ID:???
>>929
固定されたSQL文を使い回すのが bind で、
要素が可変個数になるということはSQL文も可変なはずだから、そもそもダメ。
個数が確定してから prepare せんといかん。

SQLの書き方や考え方の話は、ここよりもDBIスレあたりが妥当だろう。
932nobodyさん:04/05/21 16:18 ID:???
>>931
では@arrayを受け取ってから、joinか何かで動的にSQL文を生成して
prepare、つかそういうやり方ならdoをするしか無いって事ですかね
933925:04/05/21 16:32 ID:ERQd2RKf
>930
「短縮されてないURL」を知るべき必要がある事をどこで察知するかじゃなく、
「短縮されてないURL」を知る方法、
ないし短縮URLでもファイルをダウンロードする方法を教えて下さい。
934nobodyさん:04/05/21 16:47 ID:???
>>933
>「短縮されてないURL」を知る方法
そんなものはアクセスしなけりゃわかるわけがない。

>短縮URLでもファイルをダウンロードする方法
長いURLから短縮URLを推測して試すしかない。

スレ違いなのでここまで
935nobodyさん:04/05/21 19:38 ID:???
>>925
コピペはやめて、こっちで基礎から勉強。
http://x68000.startshop.co.jp/~68user/net/
936925:04/05/21 20:15 ID:???
>935
すっげ、1行追加で動くようになったわ。
thx!
937915:04/05/21 20:27 ID:2dDSzz6y
>>917
(笑) 親切に教えてくれて有難う。
Barcode::Code128、大変参考になりました。
938907:04/05/21 21:58 ID:jMqF5hwG
>>924 さん
ありがとうございます。やってみます。
939nobodyさん:04/05/22 06:36 ID:???
質問です。
perlスクリプトでGETメソッドから文字列を取り出したいんですが、文字列に半角#が含まれていると#とそれ以降が無視されてしまうんですが回避方法はないでしょうか?

ソース抜粋です。
$buffer = $ENV{'QUERY_STRING'};
@temp = $buffer;
foreach $x (@temp) {
 ($name, $value) = split(/=/, $x);
 $FORM{$name} = $value;
}
$str = $FORM{'str"};

これで $str には#が入ったとき以外は **tp://localhost/test.cgi?str=文字列 の文字列が思ったとおりに取り出せます。
半角=が入ったときもおかしいですが、それは使用予定のケースにないので今回はどうでもいいです。

テストサーバーの環境は
WindowsXP SP1
apache_2.0.47
ActivePerl-5.8.0.806
このようになってます。
よろしくお願いします
940nobodyさん:04/05/22 06:40 ID:???
間違いがありました。
>$str には#が入ったとき以外
入りません。
#の直前までしか入りませんでした。
ちなみに $buffer にも#以前までしか入っていないようです
941nobodyさん:04/05/22 06:56 ID:???
#以降はfragmentだよねえ
942nobodyさん:04/05/22 07:05 ID:???
>>939
>>941さんの通り、URIでは'#'以降はフラグメントとして扱われるので、
'#'を'%23'にエスケープしておく。
CGI側で元に戻す。

いろいろ問題の多そうなソースなんで、
どこかのスクリプトを参考にして作ってださい。
(CGI.pmを使うのが一番なんだけど)
943nobodyさん:04/05/22 07:10 ID:???
>>939
str=文字列 の部分に使える文字は決まってるから、
それ以外のものを使いたい場合はURLエンコードしなきゃいけない。
<scheme>://<authority><path>?<query>#<anchor>
#はこんな風に(HTMLの)アンカーとして使うと決まってるので、
鯖にも($buffer)として渡ってきてないんじゃないかな。
詳しいことはrfc2396あたりかな。英語読むと眠れなくなるんで自分で確かめてください . 。oOオヤスミ
944nobodyさん:04/05/22 07:17 ID:???
>>941-943
レスを参考に調べていろいろ試してみます。
ありがとうございました。
945nobodyさん:04/05/22 07:24 ID:???
試すも何も答え書いてあんじゃん
946nobodyさん:04/05/22 13:02 ID:prWBgoDS
ダウンロードカウンタを設置しようと思って
http://www.csmoon.com/prog/dcnt.html ここにあるサンプルCGIを設置したんだけど
なぜかinternal Server Error が出まくって全然動かない

環境はRed Hat Linux + Apache 2.0.48です
パーミッション、転送法などが原因かな?
だれか教えて!
947nobodyさん:04/05/22 13:25 ID:???
あんまり面白くないな。2点。
948nobodyさん:04/05/22 14:43 ID:???
>>946
>>1を100回、大きな声を出して読め。
949nobodyさん:04/05/22 16:46 ID:???
そんなここで読むのですか?
はずいです
950nobodyさん:04/05/22 16:53 ID:???
恥辱プレーだから。
951座敷荒氏:04/05/22 19:43 ID:PaJLGSDA
教えてくださいませm(_ _。)m
以下、内容を自分宛にメールで送信する部分です。
「$in{'_email'}」は相手のメアドをFrom:にしないで、
本文のほうに載せたい場合どうしたらいいのでしょうか?
**************************
if (!open(OUT,"| $sendmail -t")) { &error("異常停止","$!","back"); }

print OUT &jis("X-Processed: $date_now\n");
print OUT "X-SENDER: $REMOTE_HOST\[$REMOTE_ADDR\]\n";
print OUT &jis("X-AGENT: $HTTP_USER_AGENT\n");
print OUT "From: $in{'_email'}\n";
print OUT "To: $mailto_order\n";
print OUT &jis("Subject: $mail_subject [$date_num]\n");
print OUT "Content-Transfer-Encoding: 7bit\n";
print OUT "Content-Type: text/plain; charset=iso-2022-jp\n\n";

print OUT "\n";
foreach (@in) {

s/"/"/g;
s/&/&/g;
s/</</g;
s/>/>/g;

if (/^\.\t(.*)/) { print OUT &jis("$1\n"); }
elsif (/(.*)\t(.*)/) { print OUT &jis("[$1] $2\n"); }
}
print OUT "\n";

print OUT &jis("$sign\n");
close(OUT);
**************************
952nobodyさん:04/05/22 20:20 ID:???
てにをはがおかしい上に何をしたいのか分からん。
953座敷荒氏:04/05/22 20:44 ID:PaJLGSDA
>>952
いまはメールの差出人のところに変数$in{'_email'を入れてますが
メール本文の一行目に入れるように変更したということです。

よろしくおねがいします。
954座敷荒氏:04/05/22 20:57 ID:???
>メール本文の一行目に入れるようにメール本文の一行目に入れるように変更したということです。
入れるように変更したいということです。

訂正でつ(/_<。)
955nobodyさん:04/05/22 21:24 ID:???
Perl語も日本語も不十分だと不便だろ。
幼稚園生からやり直せ。
今のお前に必要な事だ。
956座敷荒氏:04/05/22 21:26 ID:???
あはは
957nobodyさん:04/05/22 21:46 ID:???
>Perl語
958nobodyさん:04/05/22 21:58 ID:???
>>951はマルチなので放置
959823:04/05/22 22:57 ID:???
やっぱわがんね;;
960nobodyさん:04/05/22 22:59 ID:???
>>959
monazillaのサイトになんか解説があった気がする。あと、RFCよめば?
961nobodyさん:04/05/22 23:22 ID:???
>>959
ttp://age.s22.xrea.com/talk2ch/
ここのDAT差分を取得のところ。
962823:04/05/22 23:24 ID:???
RFCっていっぱいあってどうすればいいのか・・・
963nobodyさん:04/05/22 23:34 ID:???
>>962
RFC2616。Rangeはページ138。
http://www.ietf.org/rfc/rfc2616.txt
964座敷荒氏:04/05/22 23:45 ID:???
あーぁー
965823:04/05/22 23:49 ID:???
>>961
おそらくRange: bytesで比較するのですね。
>>963
Range Retrieval Requestsというのがありましたので、たぶんそれっぽいですね

皆様お手数かけてすいませんでした。
今日はもう時間なので、明日がんばってみますです。
ありがとう〜
966nobodyさん:04/05/23 18:00 ID:fkswZRQD
$hoge = "今日はスノボーに行った。";
$str = "スノボー";

if( $hoge =~ /$str/){
}

こうするとこういうエラーが出るのですが、どうすれば直りますか。
Unmatched [ before HERE mark in regex m/スノボー << HERE / at hoge.cgi line xx.
967nobodyさん:04/05/23 18:09 ID:???
\Q\E
968nobodyさん:04/05/23 18:59 ID:fkswZRQD
>>967

if( $hoge =~ /\Q$str\E/){
}

こうやったらうまくいきました。
だいたい意味はわかったのですが、日本語を正規表現する時はいつも
\Q\Eで囲まないといけないのですか?
969nobodyさん:04/05/23 19:52 ID:???
>>968
残念ながら、おそらくSJISをつかうなら
970nobodyさん:04/05/23 20:33 ID:???
>>969
かといってEUCは一バイトずれでマッチする問題がおきやすかったりで、
よほど注意しないと日本語の正規表現はお勧めできない。

use utf8にしちまえば大丈夫らしいけど、それはそれで今度は正規表現
以外の点でいろいろめんどくさいことがあるしなぁ。
971nobodyさん:04/05/23 23:42 ID:???
SJISでマッチさせると\Q\Eしても意図しないところで
マッチするから気をつけろ。
972nobodyさん:04/05/23 23:57 ID:???
結局、正規表現で日本語を扱うときはどの文字コードが良いの?
いつも普通にSJIS使ってるけど
973nobodyさん:04/05/24 00:00 ID:???
漏れも新規に作るサイトは UTF-8 に切替えた。HTMLもDB(Pg)も全部 UTF-8 なので割と楽。
しかし既存サイトを一部だけ UTF-8 にするんだと死にそうだ。
974nobodyさん:04/05/24 06:52 ID:???
ただの文字列マッチなら、string::multibyteのindex。
マルチバイト文字を考慮して作られているので、
ずれた位置でマッチすることもありません。

Perl version 5.8.0以降なら、encoding。
マルチバイト文字の正規表現も素で使えるようになります。
(5.8.1以降ならtr///も対応。)
975nobodyさん:04/05/25 07:37 ID:???
おはようございます。質問させてください。
perlでリクエストヘッダのHTTPバージョンを任意に変更したいのですが、
実現できる方法はあるでしょうか?

どなたかご回答お願い致します。よろしくお願いします。
976nobodyさん:04/05/25 07:41 ID:???
>>975
何のコーディングが分からないんですか?
977nobodyさん:04/05/25 07:52 ID:???
>>976 さん
例えば普通なら
GET http://www.yahoo.co.jp HTTP/1.0
とリクエストを送りますが、このHTTP/1.0の部分をHTTP/0.9とか
HTTP/1.2など任意に変更したいのです。

その実現方法が分からず、質問させていただいています。
978nobodyさん:04/05/25 07:56 ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

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

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
979nobodyさん:04/05/25 20:18 ID:???
>>977
LWPモジュールはHTTP/1.0と1.1しか対応してないので、
IO::Socket::INETモジュールまたはネットワーク関数(素のソケット)で書くしか。
980nobodyさん:04/05/26 03:45 ID:???

なんかCGIのログが頻繁にぶっ飛ぶ(0バイトになる)んですが、
ファイルロック以外でこんな状況になるのはどんなミスが多いんでしょうか?
漠然とした質問で申し訳ないっす。
981nobodyさん:04/05/26 03:47 ID:???
>>980
△▲ WebProg 初心者の質問 Part8 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1078568723/
982nobodyさん:04/05/26 03:59 ID:???

>>981
ああ、すみません。通信間の問題ではないと思うんです。

ファイルロックはflock使ってて、しかもそのプログラム自体にはほとんどアクセスがない状態なんです。
んで、それなのに1日2回くらい飛ぶんです。
さらに、実際には使ってるサーバーが複数プロセスが同時に動かないようになってるんで、
実際んとこファイルロックさえいらん、って状況なんです。

で、ハマってしまって全く原因が分からないから、そーゆう時はどんなミスが多いのかなー?
と言った内容の質問です!長くてすみませぬ。

983nobodyさん:04/05/26 04:06 ID:???
だーかーらー、スレ違いだって言ってるの
984nobodyさん:04/05/26 05:25 ID:???
>>982
肉屋でトマト頼みますか?
985nobodyさん:04/05/26 16:10 ID:???
次スレキボン
986nobodyさん:04/05/26 16:48 ID:???
じゃあ立ててくる
987nobodyさん:04/05/26 16:54 ID:kkhhiYmo
立ちました

【次スレ】
Perl コーディング初心者質問コーナー Part35
http://pc5.2ch.net/test/read.cgi/php/1085557731/

過去ログのpart30〜32がpc2にもpc5にも見つからんのだけど・・・
988nobodyさん:04/05/26 20:33 ID:???
>>987
乙です
989nobodyさん:04/05/27 09:56 ID:???
埋めませうか
990nobodyさん:04/05/27 17:13 ID:???
ばったり書き込みなくなったしね
991nobodyさん:04/05/27 17:15 ID:???
埋めときますね
992nobodyさん:04/05/27 17:15 ID:???
埋め
993nobodyさん:04/05/27 17:17 ID:???
埋め
994nobodyさん:04/05/27 17:18 ID:???
埋め
995nobodyさん:04/05/27 17:19 ID:???
埋め
996nobodyさん:04/05/27 17:20 ID:???
埋め
997nobodyさん:04/05/27 17:21 ID:???
埋め
998nobodyさん:04/05/27 17:22 ID:???
埋め
999nobodyさん:04/05/27 17:23 ID:???
埋め
1000nobodyさん:04/05/27 17:25 ID:???
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。