Perl 初心者コーナー Part24

1 ◆fBgbHI04bQ
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。


CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/

過去ログやお勧めサイトは >>2-10
2 ◆fBgbHI04bQ :03/06/07 22:30 ID:GbQKLcPE
3nobodyさん:03/06/07 22:30 ID:???
立てなくていいってば。
4 ◆fBgbHI04bQ :03/06/07 22:31 ID:GbQKLcPE
5 ◆fBgbHI04bQ :03/06/07 22:32 ID:GbQKLcPE
[総合]
 ・Perl Com: http://www.perl.com/pub/
 ・CPAN.com: http://search.cpan.org/
 ・ActivePerl: http://www.activestate.com/
 ・CGI-ML:http://forest.ne.jp/cgi-ml/

[お薦め]
 ・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm ★読んどけ
 ・Perl Recipes: http://www.effectiveperl.com/recipes/
 ・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
 ・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
 ・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
 ・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
 ・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
6 ◆fBgbHI04bQ :03/06/07 22:32 ID:GbQKLcPE
[Document&Tutorial]
 ・Perl News: http://www.news.perl.org/
 ・Perl Monks: http://www.perlmonks.org/
 ・use Perl; : http://use.perl.org/
 ・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
 ・Perldoc.com: http://www.perldoc.com/
 ・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
 ・Rex Swain's Home Page: http://www.rexswain.com/
 ・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
 ・Perl Tuts: http://savage.net.au/Perl-tutorials.html
 ・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
 ・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
 ・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
 ・Perlfect Solutions: http://perlfect.com/
 ・The Perl Archive : http://www.perlarchive.com/
 ・Perl6 & Parrot VM についての情報: http://dev.perl.org/perl6/
 ・use Object; : http://perl.infoware.ne.jp/
7 ◆fBgbHI04bQ :03/06/07 22:33 ID:GbQKLcPE
[Module]
 ・Perl Module Reference: http://www.bekknet.ad.jp/~bero/docj/module_/
 ・PPMPackages: http://www.activestate.com/PPMPackages/
 ・河馬屋二千年堂's Page: http://member.nifty.ne.jp/hippo2000/index.htm

[Security]
 ・安全なプログラミングのためのガイドライン:http://www.FreeBSD.org/ja/security/#spg
 ・Perl security:http://www.perldoc.com/perl5.6/pod/perlsec.html
 ・Perl security和訳:http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlsec.html
 ・CGI and Security http://www.ansi.co.jp/tech/cgi/security/
 ・The Unofficial Web Hack FAQ:http://www.nmrc.org/faqs/www/
 ・How to Write Secure Code:http://www.shmoo.com/securecode/
 ・Safe CGI Programming :http://www.improving.org/paulp/cgi-security/safe-cgi.txt

[OS]
 ・Linux日本語マニュアル:http://www.linux.or.jp/JM/
 ・FreeBSD日本語マニュアル:http://www.jp.freebsd.org/man-jp/
8nobodyさん:03/06/07 22:35 ID:???
part23 http://pc2.2ch.net/test/read.cgi/php/1053051519/l50
ちゃんと貼れ馬鹿。

そしておつ
9 ◆fBgbHI04bQ :03/06/07 22:35 ID:GbQKLcPE
>>8
スマソ。すっかりわすれてた
10nobodyさん:03/06/07 23:37 ID:???
どんまい(´∀`*
11nobodyさん:03/06/07 23:39 ID:???
おい!おまいらもすごろく作りに参加汁!
http://life2.2ch.net/test/read.cgi/offreg/1054655407/l50
ちなみにこれはコピペしてひろめてくれ。
12nobodyさん:03/06/07 23:51 ID:???
ABCDEFGという文字列からABだけ取る方法教えてください
13nobodyさん:03/06/07 23:54 ID:???
>>12
substrで先頭から二文字抜き出す。
14nobodyさん:03/06/07 23:56 ID:???
$a = "ABCDEFG";
$b = substr($a,0,2);
ネタにマジレスしときます
15nobodyさん:03/06/07 23:56 ID:???
>>12
正規表現で/(AB)CDEFG/
16nobodyさん:03/06/08 00:00 ID:???
s/CDEFG//
1712:03/06/08 00:08 ID:???
みなさんありがとうございました!
cryptで暗号化した文字の最初の2文字が邪魔でした。
助かりました。
18nobodyさん:03/06/08 00:18 ID:???
htmlのソースを、cgiで開いて、
tetxareaに入れてかえすスクリプトですが、
ソースもhtmlのタグと勘違いして、
変になるんです。

=====================
| #!/usr/bin/perl    |
|               |
|               |  ←テキストエリア(ソースが表示される)
|               |
| print "<html><body> |
|====================|
print "aaa"\n;         ←テキストエリア外で、タグとして読んでしまう。

こうなるんですが、対処法はないですか?
<>などを変えないでできる方法ってないですか?
19nobodyさん:03/06/08 00:29 ID:???
>>18
ここはPerlのコーディングスレ。
どこが悪いのか質問したいならソースぐらい貼って。

単に方法を知りたいだけならスレ違い。
20nobodyさん:03/06/08 00:31 ID:???
>>19
あ、違いました。
ソースファイルの中の</textarea>を
実際に出力している</textarea>と勘違いしているようです。
これを、見た目の変化を変えずに表示できませんか?
21nobodyさん:03/06/08 00:33 ID:???
Perlと関係ねー(T_T)
<を<に、>を>に変える。嫌なら諦める。
2221:03/06/08 00:33 ID:???
あら・・・・
<を&lt;に、>を&gt;に変える。
23nobodyさん:03/06/08 00:39 ID:???
>>18
クロスサイトスクリプティングって聞いたことあるか? 知らないなら
そんなCGIは作るな、設置するな。いいな命令だ。
24nobodyさん:03/06/08 00:39 ID:???
>>22
あ、その方法がありましたね。
それでやてみます。。。
でも、すべて変えるとめんどそーなので
</textarea>のところのみにしときます。
ありがとうございました。
25nobodyさん:03/06/08 00:40 ID:???
>>24
氏ねバカ
26nobodyさん:03/06/08 00:41 ID:???
>>23
掲示板に
<#-- exec
↑あいまい
みたいに、タグ書くやつでしょ?
27nobodyさん:03/06/08 00:45 ID:???
28nobodyさん:03/06/08 01:07 ID:???
>>26
バーカ
29nobodyさん:03/06/08 01:13 ID:???
フォームから送られてきた内容をPerlのevalで実行するCGIを置いているけどまずいの?
30nobodyさん:03/06/08 01:15 ID:???
31nobodyさん:03/06/08 01:31 ID:???
>>29
あたりまえでしょうが!何を考えてんだか・・・
どっちにしてもスレ違いなので終了するか適切なスレに移動して
32nobodyさん:03/06/08 01:36 ID:XzEWy/kW
すいません。少々質問です。

http://atashi.net/inu/ja/software/msnp_status.txt

これってどういうモノなのでしょうか?
MSNの何かのようですが,どういうモノなのか知りたいです。
それでは宜しくお願いします。
33nobodyさん:03/06/08 01:36 ID:???
>>29
サーバは、レンタルサーバ?
最悪、損害賠償を請求される場合があります。
悪い事言わないから、
もうちょっと分かるまで勉強してから動かすか、
諦めるかしなさい。
34nobodyさん:03/06/08 01:42 ID:???
>>32
質問は適当なスレでやってください。

URL削ればわかるだろうに

ttp://atashi.net/inu/ja/software/
msnp_status.cgi version 1.02
MSN Messangerのオンライン状況を表示するためのものです。
35nobodyさん:03/06/08 02:51 ID:???
>>34
作者の宣伝に決まってるだろ。
36nobodyさん:03/06/08 03:04 ID:???
>>35
うん、しかもパクリだ
37nobodyさん:03/06/08 12:52 ID:???
>>32
$passwdの所でいきなり構文エラーだね。
38nobodyさん:03/06/08 14:10 ID:???
>>24
志ねヴァカ。

とりあえず、そのHTMLのソースに
<script>(中略)</script>
なんてあったらどうなるか分かっているの?

とりあえず、>を&gt;に、<を&lt;に、&を&amp;に位はやっとけ。
ついでに"も&quot;に。

置換の順序も分からん馬鹿はいないと思うので、略。
39nobodyさん:03/06/08 14:23 ID:???
>>38
エェー、危ないのでcryptパスワード認証つけて、ファイルの作成、編集ができるようになっているから、
<script>はないと思うけど、でもしたほうがいいかな。。。

疑問に思うんだけど、>とかしても、実際には<って表示されるんだけどなぜ?
>とかってするとただの特殊記号とみなすの?
40nobodyさん:03/06/08 14:24 ID:???
ごめん、表示されてない。

疑問に思うんだけど、&gt;とかしても、実際には<って表示されるんだけどなぜ?
&gt;とかってするとただの特殊記号とみなすの?

41nobodyさん:03/06/08 14:26 ID:???
>>40
&gt; は <と
&lt; は >と。
&&は & と
&quot; は " 表示される。
42nobodyさん:03/06/08 14:27 ID:???
<や>がHTMLでは何を意味するのか考えれば分かると思うけど
43nobodyさん:03/06/08 14:27 ID:???
>>41
ミス &ampは&
44nobodyさん:03/06/08 14:29 ID:???
あぁそっか。
htmlで<などを表示するときに>などを使うから、
タグではなくなるってことか。。。
45nobodyさん:03/06/08 14:33 ID:???
>>44
いままで理解してなかったのか。場亀。
46nobodyさん:03/06/08 14:34 ID:???
$_ =~ s/</</g;
$_ =~ s/>/>/g;
$_ =~ s/&/&/g;
$_ =~ s/"/"/g;

なんで、これでできない・・・・・・
ダブルクォーテーションとアンドはできるのに・・・
47nobodyさん:03/06/08 14:37 ID:???
&をさきにエスケープしなければだめだろ。
前の処理で&lt;にしたものが(ry
48nobodyさん:03/06/08 14:37 ID:???
実体参照ネタは相変わらずめちゃくちゃになるなぁ。
ちゃんと書けないんなら全角にでもしとけ。
49nobodyさん:03/06/08 14:38 ID:???
>>38の最終行にぴったりの質問が来ました。

超・初心者な質問だから他へ・・・と思ったらここが初心者スレだった罠。
でも、もう少し頭を使ってくれよ
50nobodyさん:03/06/08 14:39 ID:???
>>47
そうでした。
ありがとうございます
51nobodyさん:03/06/08 14:41 ID:vz1j93aY
質問です。
WinXP HOME EDITION(←スペルちがってたらすいません)でアクティブパール5.8なんですが、
unlink(<*.txt>)でうまくいかないんですが、Winだからですか?
52nobodyさん:03/06/08 14:41 ID:???
foreach( <FILE> ){

# タグを特殊記号に変換
$_ =~ s/&/&amp;/g;
$_ =~ s/</&lt;/g;
$_ =~ s/>/&gt;/g;
$_ =~ s/"/&quot;/g;
print;
}

こんなんでできました。
下3つの順番はどうでもいいですよね?
53nobodyさん:03/06/08 14:43 ID:???
unlink(<*.txt>)

こう書くとワイルドカードが使えるようになるの?
54nobodyさん:03/06/08 14:43 ID:???
>>51
()いらない
5553:03/06/08 14:44 ID:???
らくだに書いてあったか。
5651:03/06/08 14:45 ID:???
>>54
書いたらだめなんか?()
消しても結果は同じだった。消えない・・・。
57nobodyさん:03/06/08 14:47 ID:???
>>56
unlink <*>
やってみて
てか、;忘れてるなんてないよね?
5853:03/06/08 14:50 ID:???
Windows2000ではできたぞ。
5951:03/06/08 14:51 ID:???
>>57
フォルダが読み取り専用になってた。
でも、みてみたら、どのフォルダも(PC内)読み取り専用だった・・・。
しかも、解除できない。関係ある?
60nobodyさん:03/06/08 14:54 ID:???
読みとり専用でも消せるけど・・・
61nobodyさん:03/06/08 15:03 ID:???
>>59
うまくいかないときは「どううまくいかないのか」を書いてくれ。
6261:03/06/08 15:05 ID:???
ああ、消えないのか……
スクリプトは削除対象のファイルと同じディレクトリで実行させてるよね?
6351:03/06/08 15:08 ID:???
>>62
ありがとう。
すごくあふぉなことやってた。↓の階層にファイルあるのに消そうとがんばってた。
消す前に、chdirで移動したら消せた。
お騒がせしてすみませんでした。
64直リン:03/06/08 15:10 ID:+3TQ1ee9
65nobodyさん:03/06/08 15:10 ID:???
66nobodyさん:03/06/08 17:40 ID:???
2chのトリップみたいのを付けたいです。
名前#123
↑で123だけ抜き出す方法が知りたいです。
67nobodyさん:03/06/08 17:54 ID:???
あのさ。
ここはなんで調べもしないで来る人が多いのか?

初心者だから分からない、ではなくて調べてないから分からない。
って質問ばっかりだぞ。
6851:03/06/08 17:55 ID:???
>>66
my($name,$trip) = split(/#/, $name);
69nobodyさん:03/06/08 17:57 ID:???
>>67
調べ方を教えてください
70nobodyさん:03/06/08 17:58 ID:???
>>68
ありがとうございます。
それをどうやって組み込めばいいのでしょうか?

……って返されそうだな。
7151:03/06/08 18:03 ID:???
>>70
そだね。 69は偽者じゃないの?
さすがにそこまでプなやつはおらんだろ。
72nobodyさん:03/06/08 18:03 ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
73nobodyさん:03/06/08 18:03 ID:???
>>70
あなたは
名前#123 をなんという変数に代入してるですかー
74nobodyさん:03/06/08 18:09 ID:???
$nameです
75nobodyさん:03/06/08 18:10 ID:???
>>67
自分のサイト作って次はCGIだーって思ってる奴が迷い込んで来るんだよ。
質問者は>>1読まないしね。読んだとしても1行ぐらいじゃないかな。
76nobodyさん:03/06/08 18:11 ID:???
>>68
split(/#/, $name, 2);にしないと$nameが"名前#12#3"とかなっていたら$tripが"12"になってしまうけどいいの?
77nobodyさん:03/06/08 18:13 ID:???
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。

これを強制させるのはどうだ?
例えば>>66にこれを書かせると

1:自分はこう言う事がしたい。
2chのトリップみたいのを付けたいです。

2:それでこんな風にやってみたが・・・
何もしてません。

3:それだとこんなエラーが出て上手く行かなかった。
何もしてないのでエラーはありません。


となって、自分で全く調べてないって少しは自覚できるんじゃないかな。
78nobodyさん:03/06/08 18:14 ID:???
>>76
スマソ。
>>66は気づかないからヨロシ。
79nobodyさん:03/06/08 18:16 ID:???
そもそもスレのレベルが下がり過ぎ。
ここは「Perl初心者」のためのスレだろう。
"努力・常識のかけらも無いアホ"の"質問にすらなっていない独り言"で埋まってしまうのはいかんだろ。
80nobodyさん:03/06/08 18:17 ID:???
&jcode::tr(\$FORM{'FROM'}, '#', '#');
if($FORM{'FROM'} =~ /([^\#]*)\#(.+)/){
my $main_message = $1;
my $handle_pass = $2;
my $change_salt = substr($handle_pass, , 1) . "H";
$handle_pass = substr(crypt($handle_pass, $change_salt), -8);

if($main_message ne ""){
$FORM{'FROM'} = "$main_message </b>◆$handle_pass <b>";
}else{
$FORM{'FROM'} = "</b> ◆$handle_pass <b>";
}
}
81nobodyさん:03/06/08 18:18 ID:???
>>80
がんがるなよ。
82nobodyさん:03/06/08 18:20 ID:???
$nameに#aiusiauがあるとする
$sharp = index($name);
$sharp++:
$trip = substr($name,$sharp);

ではダメ?
無駄が多い?
8382:03/06/08 18:22 ID:???
ミスった。

$sharp = index("$name","#");
$trip = substr($name,$sharp++)
これでいいや;
84nobodyさん:03/06/08 18:25 ID:???
なんで++するの?前置インクリメントならわかるけど。
8582:03/06/08 18:27 ID:???
>>84
ぇ?indexは1文字目を0から、substrは1文字目を1とするから足す必要あると思うんだけど、、、
てか、実際これでやってる
86nobodyさん:03/06/08 18:29 ID:???
>>85
$i=0;
$j=$i++;
としたとき、$iは1になるけど$j=0になることは知っているよね?
もちろんそれでいいならいいんだけど。ただ、あとで$sharpを使わなければ意味ないなぁと思って。
87nobodyさん:03/06/08 18:33 ID:???
>substrは1文字目を1とするから
88nobodyさん:03/06/08 18:40 ID:???
#の次からを取り出すわけだから+1は必要だと思うけど、特に$[をいじっていなければsubstrは一文字目は0。
8982:03/06/08 18:43 ID:???
あぁ、そうだった。
次からとるから+1だったな
90nobodyさん:03/06/08 18:45 ID:???
>>89
実際これでやってる ってホント?
91nobodyさん:03/06/08 18:50 ID:???
if(($sharp = index($name,'#')>=0){
$trip = substr($name,$sharp+1);
#ここでトリップ生成
}
92nobodyさん:03/06/08 18:52 ID:???
>>91
そりゃできるだろ。
if(($sharp = index($name,'#')>=0){
$trip = substr($name,$sharp++);
#ここでトリップ生成
}
では動かんよ。
93nobodyさん:03/06/08 18:53 ID:???
>>92
括弧の対応があわないね(汗

if(($sharp = index($name,'#'))>=0){
$trip = substr($name,$sharp+1);
#ここでトリップ生成
}
9482:03/06/08 19:02 ID:???
>>90
カウンターとかで使ってるよ
95nobodyさん:03/06/08 19:06 ID:???
へんなふうに書くなぁ・・・
96nobodyさん:03/06/08 19:40 ID:???
>>93>>94
あ、いや、そういうことじゃない。
$trip = substr($name,$sharp+1);

$trip = substr($name,$sharp++);
だと動かんでしょ?って>>82に言いたかった。
9782:03/06/08 20:39 ID:???
>>96
それはわかってる。
=でつなぐと、後に++したら、足す前の値を代入するからだろ?
98nobodyさん:03/06/08 20:40 ID:???
>>97
は?・・・>>83
9982:03/06/08 20:43 ID:???
>>98
ぃやぃや、こちらこそ「は?」
なにを指してるんだこいつは
100nobodyさん:03/06/08 20:51 ID:???
>>99
え?・・・>>83は君が書いたんじゃないの?
101ラヴ:03/06/08 21:07 ID:Sf/nGZf1
#/usr/local/perl
#学籍番号
#氏名
print(" a =?");
chomp( $a = <STDIN>);
print("演算子?");
chomp( $op = <STDIN> );
print(" b = ?");
chomp( $b=<STDIN> );

if($op eq '+') {
$c=$a + $b;
print (" $a + $b = $c\n");
} else {
if($op eq '-'){
$c=$a - $b;
print ("$a - $b = $c\n");
} else {
if($op eq '*'){
$c = $a * $b;
print ("$a * $b = $c\n");
} else {
if($op eq '/'){
$c = $a / $b;
print ("$a / $b = $c\n");
}
}
}
}
のフローチャートはどうやって書いたらいいのでしょう??
102無料動画直リン:03/06/08 21:10 ID:+3TQ1ee9
103nobodyさん:03/06/08 21:19 ID:???
>>101
本よめ。つか、いまどきなんでそんな原始時代のことをしてるのか。
10482:03/06/08 21:19 ID:???
>>100
書いたけど、、、

>は?・・・
ってのはどういうこと?
105nobodyさん:03/06/08 21:21 ID:???
>>101
なんだその分岐文は・・・
106nobodyさん:03/06/08 21:50 ID:???
>>105
分岐文って何だ? 三項演算子なら知ってるが。
107nobodyさん:03/06/08 22:02 ID:???
>>101
ifelseをつかいなさい
108nobodyさん:03/06/08 22:05 ID:???
どうせ本7だろ。放置放置。

>>80
> &jcode::tr(\$FORM{'FROM'}, '#', '#');

Jcode.pm に入れ替えたらエラーになた。(s/jcode/Jcode/g したあと)
でも、Parse したときに、Shift_JISに変えているんだから、
s/#/#/g; にしちゃった。
109nobodyさん:03/06/08 22:09 ID:???
日本語が文字化けをするのですが
どうすればいいでしょうか?
英数なら大丈夫です。
110nobodyさん:03/06/08 22:15 ID:???
( ´_ゝ`)ツーン
111nobodyさん:03/06/08 22:19 ID:???
>>104
>>83は合ってるのか?
11282:03/06/08 22:20 ID:???
>>111
あってるよ
113nobodyさん:03/06/08 22:23 ID:???
>>109
超超超特別サービスでおまいに説教を送ってやろう。
普通は叩かれるだけなのに説教を貰えるとは幸せと思え。

①まずどうやって生成した文字列なのか。
どのような過程を通り、どう言ったアプリケーションで文字列に直しているのか書くべきである。


>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
さらにこのスレのルールとして以上の事を書かねばならない。


これ決定的。
スレ違いだから他に行って下さい。
記述やコーティングのスレだから。
114nobodyさん:03/06/08 22:24 ID:???
>>113
>普通は叩かれるだけ
普通は無視で流れてくだけだよ
115nobodyさん:03/06/08 22:25 ID:???
>>89って言ってるけど全然分かってないじゃん。
>>83-86もっかい読んでみ。
11682:03/06/08 22:30 ID:???
>>115
わかってるから
117nobodyさん:03/06/08 22:33 ID:???
>>116
じゃあ、

>>112
> >>111
> あってるよ

合ってないのになんでそういうこと言うの?
$name = "hoge#hage";
$sharp = index("$name","#");
$trip = substr($name,$sharp++) ;
print $trip,"\n";



$name = "hoge#hage";
$sharp = index("$name","#");
$trip = substr($name,++$sharp) ;
print $trip,"\n";

の結果比べてご覧。
#なんで切れ気味なの?
11882:03/06/08 22:34 ID:???
アヒャーン。
違うねぇ、スマン、見間違えてた
119nobodyさん:03/06/09 02:42 ID:KAhSj8Gh
日時の取得なのですが、

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$month = ($mon + 1);
if ($sec < 10) { $sec = "0$sec"; }
if ($min < 10) { $min = "0$min"; }
if ($hour < 10) { $hour = "0$hour"; }
if ($mday < 10) { $mday = "0$mday"; }
if ($month < 10) { $month = "0$month"; }
$date = "$month/$mday/$year $hour\:$min\:$sec";

これで実行すると、2003年が103年となってしまいます。
2003年に正しく修正するにはどうしたらいいでしょうか?
120_:03/06/09 02:54 ID:???
121nobodyさん:03/06/09 02:58 ID:???
それやらなくてもなると思うよ。
122nobodyさん:03/06/09 03:01 ID:???
初心者のオレにも答えられそうな質問だ。

>>119
2003って表示させたいなら
$year += 1900;

下二桁「03」って表示させたいなら
$year = sprintf("%02d",$year%100);

を追加すればいいんでね?
123nobodyさん:03/06/09 03:09 ID:???
>>119
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
の$yearは1900年からの経過年数
124nobodyさん:03/06/09 11:48 ID:s9oH3tCT
すみません。
jcode.plを使っていて
WARNING: UtfToLocal: could not convert UTF-8 (0xd6a5). Ignored
というようなエラーが出た方はいらっしゃいませんか?

特にUTFは使っていないのに、必ず出てきてエラーになってしまいます。
ファイルはshift_jisで、それを読み込んでeucに変換しているのですが・・
このエラーはネットで探しても見つからないので
ご存知の方がいらっしゃいましたらよろしくお願いします。

125nobodyさん:03/06/09 12:41 ID:???
utftolocalで検索するとjdbcがヒットするのだけど、そういうのを使ってない?
126nobodyさん:03/06/09 12:42 ID:???
>>124
jcode.plにはUtoToLocalなどない。つまり、お前は決定的に何か間違っている。
127124:03/06/09 12:54 ID:s9oH3tCT
すみません。解析した結果、
DBとのコネクト時のことだったみたいです。
申し訳ありありませんでした。
jcode.plにも、そのメソッドを検索して、存在しないから
内部的なものかとおもっていました。

Posgresqlに文字コードをEUCを指定して接続する方法はあるのでしょうか?
DBIを使っています。

interbaseのibperlを使っていた頃は、Charsetでできたのですが・・
128無料動画直リン:03/06/09 13:10 ID:GjkKVS2A
129nobodyさん:03/06/09 13:45 ID:???
>>127
スレ違いにつき、お引き取りください。
130nobodyさん:03/06/09 14:01 ID:QAgTJ6O8
いつでも激安

安心して24時間お買い物ができる!
セルビデオ店が近くにないお客様も気軽にお買い物を楽しめます。
http://www.net-de-dvd.com/
安心確実

お支払は安心の代金引換です
振り込んだのに商品が届かない等
の心配は無用!
http://www.net-de-dvd.com/
131nobodyさん:03/06/09 19:15 ID:???
正規表現の最長マッチと最短マッチで同じ結果が得られることが明らかな場合、
どちらを使用した方が、処理速度・負荷の面で有利なのでしょうか?
132nobodyさん:03/06/09 19:26 ID:???
正規表現は「マッチしない」時にどっちが手っ取り早く記述を抜けれるか考えるのがミソ

133nobodyさん:03/06/09 20:52 ID:???
$ImageDir = "../image/photo/";
$in{id} = 8;
$in{file1name} = "hoge.jpg";
$in{file1name} = "fuga.jpg"
rename($ImageDir.$in{file1name}, $ImageDir."photo1_id".$in{id}."jpg");
rename($ImageDir.$in{file2name}, $ImageDir."photo2_id".$in{id}."jpg");
とやっても、renameされません。

パス付きファイル名をrenameに渡してもダメなのでしょうか?
だとしたら、同じことを実現するにはどうすればいいのでしょうか?
134nobodyさん:03/06/09 21:32 ID:???
パス付きでもいけるはず。
・ フィアル名が正確かどうかprintで出力して確認
・ エラーがあれば、エラー内容を出力

エラー内容は$!に入ってるので、
rename $file1,$file2 or die "rename Error : $!"; で見てみればいい。
135nobodyさん:03/06/09 23:23 ID:???
>>134
あ、renameでもor dieできるのですね。。。
そっか、openのときしか使ったことなかったです。さんくすです。
136nobodyさん:03/06/10 02:08 ID:0JHS1DHo
1バイトとかバイト単位ではなく、1文字という文字単位で抜き取る関数はありますか?
半角カナとかの1バイト文字と、1バイト文字も含めた全ての文字列との比較させて、その結果によって処理を振り分けるスクリプトを作りたいんで。
ちょっと説明が難しいんですが、知ってる方いたら教えて下さい。
substrではダメなんです。
137nobodyさん:03/06/10 03:04 ID:???
>>136
2バイトも一文字として認識してほしいって事?
そんな関数ないっぽいです。
モジュールなら、どこかにあるかも。

極論で言わせてもらえば、jperl使えって事になってくるかな。
138nobodyさん:03/06/10 03:07 ID:???
それは極論なんだろうか
139nobodyさん:03/06/10 03:16 ID:???
>>138
たぶん極論・・・
って言うか、俺的に極論かな・・・?

日本語文字列で問題がおきてる。

jperl使え。 終了。

これが、黄金パータンでしょ?(w
140nobodyさん:03/06/10 07:44 ID:???
>>136
sjisじゃできんが(2バイト文字と1バイト文字が重複する)、eucならできる。
perlメモの「日本語を扱う」に書いてある。がいしゅつ
141nobodyさん:03/06/10 09:10 ID:???
1:CGI::Sessionモジュールを使ってセッション管理をしてみたい

2:CGI::Sessionモジュールを試用してテスト中、
クライアントからセッションIDを取得できなかった場合のテストをやってみたら...

3:サーバにセッション情報を保持したファイルが残って、更新されることも消えることもなかった。

該当のセッションを使用してのアクセスがないので更新されないのはあたりまえなのですが、
もう使われることのないセッション情報を消す管理用メソッドとかないのでしょうか。
142nobodyさん:03/06/10 14:45 ID:H1NA4Acv
$ORG[0] = {
"person" => "tanaka",
"adana" => "tanachan",
"adanaid" => 5,
};
$ORG[1] = {
"person" => "takada",
"adana" => "takachan",
"adanaid" => 2,
};
$ORG[2] = {
"person" => "imai",
"adana" => "imachan",
"adanaid" => 3,
};
@tmp = sort { (${ORG[$a]->{adanaid}} <=> ${ORG[$b]->{adanaid}}) } 0 .. $#ORG;
foreach (@tmp) {
print 'person='. $ORG[$_]->{person}. "\n";
print 'adana='. $ORG[$_]->{adana}. "\n";
print 'adanaid='. $ORG[$_]->{adanaid}. "\n";
}
はわかるのですが(以前こちらで教えていただいたのですが)
そうではなく、@ORGを、${ORG[?]->{adanaid}}でソートした結果を、
再び@ORGとして得るにはどうすればいいのでしょうか?
(ただし、一個一個person、adana、adanaid などとせずに。。。実際は項目が多いもので)
foreach my $key (keys %{$ORG[0]}){
\$ORG[0]->{$key}
}
↑この辺をどうにかするよな気がするのですが・・・

143nobodyさん:03/06/10 15:16 ID:???
>>142
よくわかんないけど、こんな感じ?

@tmp = sort { (${ORG[$a]->{adanaid}} <=> ${ORG[$b]->{adanaid}}) } 0 .. $#ORG;
foreach (@tmp) { push(@temp,$ORG[$_]); }
foreach (@temp){
 while(($i,$j) = each(%$_)){
  print qq|$i = $j\n|;
 }
}
144142:03/06/10 15:42 ID:???
>>143
ありがとう、できますた!
145nobodyさん:03/06/10 18:37 ID:???
解凍してコピーだけで使えるXMLパーサモジュール教えてください。
XML::Parser::Liteで読めるようになったけど書き込めない・・・。
146通行人さん@無名タレント:03/06/10 18:53 ID:???
@ORG = sort { $a->{ adanaid } <=> $b->{ adanaid} } @ORG;
foreach my $man(@ORG){

#print_man
foreach my $atti(keys %{ $man }){
print $atti, ' => ' ,$man->{ $atti }, "\n";
}
print "\n";
}

147nobodyさん:03/06/10 20:01 ID:???
>>139
jperl 使うぐらいなら Perl 5.8.0 使え。
148nobodyさん:03/06/10 20:13 ID:???
表示部分だけ

foreach my $person (@ORG) {
 foreach my $attr (sort keys %$person) {
  print $attr, ' => ', $person->{$attr}, "\n";
 }

 print "\n";
}
149nobodyさん:03/06/10 23:10 ID:???
Perlでつくったプログラムをexeファイルにして誰でも使えるようにできますか?
150nobodyさん:03/06/10 23:15 ID:???
 (-_- ) ……
  (∞ )  …出来ないんじゃないか?
   | |
151nobodyさん:03/06/10 23:46 ID:???
>>149
perlcc
152nobodyさん:03/06/11 01:07 ID:b6wCYV2G
糞な質問で申し訳ありません。

subInputPage {
print "Content-type: text/html; charset='Shift_JIS'\n\n";
$fname = $FORM{'name'};
print <<END;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><body>
<strong>$fname</strong>さん<br>
</body></html>
END
}

subResultPage {
print "Content-type: text/html; charset='Shift_JIS'\n\n";
print <<END;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head><title>名前入力</title></head>
<body>
<strong>$fname</strong>さん
</body></html>
END
}

↑ResultPage内の $fname が空になってしまうのですが、
InputPage内の $fname に格納したもの(これは表示される)を
ResultPageの中の $fname に受け継がれるようにするには
どうしたらいいのですか?
153無料動画直リン:03/06/11 01:10 ID:xrcrQEEf
154nobodyさん:03/06/11 01:19 ID:???
>>149
http://www.indigostar.com/perl2exe.htm
>>152
表示されるよ?
ちなみにsubの後にスペースが無いのは関係ないよね?
155nobodyさん:03/06/11 01:20 ID:???
>>154
if (...) {
  &InputPage;
} else {
  &ResultPage;
}
ってやってんだろ。
156nobodyさん:03/06/11 01:34 ID:b6wCYV2G
早速答えていただいてありがとうございます。

>>154
subは関係ないです。

>>155
全くその通りです。

if($FORM{'mode'} eq 'enter') {
InputPage();
}
elsif($FORM{'mode'} eq 'result'){
ResultPage();
}
ってやってます。
どうやったら表示されるようになりますか?
157nobodyさん:03/06/11 01:58 ID:???
>>151
ActivePerlのperlccはエラーコード吐いて意味なし。
158nobodyさん:03/06/11 02:04 ID:???
Cコンパイラを用意していないだけだったりして。
159nobodyさん:03/06/11 02:04 ID:???
>>156
そのif分岐の前に $fname を設定しなきゃダメだよ(´・ω・`)マジデ マジデ
160nobodyさん:03/06/11 02:07 ID:???
>>158
Cコンパイラを用意しないといけないんですか・・・。

どうやってやるんですか?
161nobodyさん:03/06/11 02:09 ID:???
bcc
162152:03/06/11 02:10 ID:b6wCYV2G
>>159
たびたびすいません、ネタじゃなくてまじわからんです。

$fname = '名無し';
if($FORM{'mode'} eq 'enter') {
InputPage();
}
elsif($FORM{'mode'} eq 'result'){
ResultPage();
}

これだと$fnameに「名無し」がはいちゃうし・・
163nobodyさん:03/06/11 02:14 ID:???
>>152
myやlocalをつけなければグローバルになるはずだから、そのままでも受け継がれるはずだけど・・・
サブルーティンを呼び出す順番は正しい?
164nobodyさん:03/06/11 02:15 ID:???
>>162
入っちゃいけないの?(´・ω・`)
そういう風に自分で設定してるんだよ(´・ω・`)マジデ マジデ

$fname = $FORM{'name'};
if($FORM{'mode'} eq 'enter') {
 InputPage();
}
elsif($FORM{'mode'} eq 'result'){
 ResultPage();
}

これじゃだめなの?(´・ω・`)
165nobodyさん:03/06/11 02:18 ID:???
if-elsifじゃそのどちらかしか呼ばれないだろ。
166nobodyさん:03/06/11 02:22 ID:???
両方ともこうやっちゃえ

<strong>$FORM{'name'}</strong>さん<br>
167nobodyさん:03/06/11 02:29 ID:???
ResultPage()の中で$fname=$FORM{'name'};とやればいいと思うんだけど。
InputPage()とResultPage()は一度に両方とも呼ばれることはないんでしょう?
168152:03/06/11 02:42 ID:b6wCYV2G
みなさんレスありがとうです。正直こんなに親切にレスしてもらえると思ってなかったので(笑
感激しております。

if($FORM{'mode'} eq 'enter') {
InputPage();
}
elsif($FORM{'mode'} eq 'result'){
ResultPage();
}
else {
EntryPage();
}
exit;

EntryPage()のフォームで読み込んだものをInputPage()で表示し、
その後、InputPage()でボタンを押すと、ResultPage()に移って表示
って感じなんです。
やっぱり表示されないです・・・
何かうまい方法ないですかねぇ
169nobodyさん:03/06/11 02:45 ID:???
InputPageは確認画面なのか? Inputと名付けているから違うとは思うけど。。。
170152:03/06/11 02:59 ID:b6wCYV2G
>>169
InputPageは入力のページですよ。
名前を表示してその下に入力フォーム
171nobodyさん:03/06/11 03:00 ID:???
>>166-167は試したのか
172nobodyさん:03/06/11 03:01 ID:???
EntryPageも入力ページなんでしょう?なんで分けるの?
173_:03/06/11 03:03 ID:???
174nobodyさん:03/06/11 03:04 ID:???
うまい方法っていうよりうまくいかなくなるように書いてるからだろ
こんな初歩的なことで躓いてるようじゃ全部晒したほうが早いわ
175nobodyさん:03/06/11 03:09 ID:???
>>152のInputPageは略したものだよね?まさかそのままじゃないよね?
もしそのままだったらフォームが(ry
176152:03/06/11 03:10 ID:b6wCYV2G
>>171
試しましたよー

>>172
分ける必要は無いんだけど、その方がわかりやすいかなーと思って

やっぱり、ひとつのページにまとめる事にしました。
ご迷惑をおかけしました。
考えてくださった方々ありがとうございました。
177152:03/06/11 03:12 ID:b6wCYV2G
>>174
あ、ごめんなさい、確かにその通りなんですが・・・

>>175
そりゃ略したものですよ(w
178nobodyさん:03/06/11 03:13 ID:???
>>158
Cコンパイラを用意するとはどういう意味ですか?
179nobodyさん:03/06/11 03:20 ID:???
>>178
関係ないから気にするな
180nobodyさん:03/06/11 03:20 ID:???
>>178
そのままの意味。
perlccはPerlのソースをCのソースに変換するものだから、実行可能なものにするためにはCコンパイラが必要。
一連の処理をまとめてやってくれるから(実はPerlスクリプトやバッチファイルだったりする)Perlのソースを直接実行可能な形式にしているようにみえるけど。
Windowsの場合はVC++6.0ならOKだった。他のコンパイラは試していない。
181nobodyさん:03/06/11 03:28 ID:???
>>180
VCはあります。
そのあとどうすればいいかわかりません。
182nobodyさん:03/06/11 03:30 ID:???
>>181
perlccのあるディレクトリを環境変数PATHに追加してperlccを実行するだけ。
183nobodyさん:03/06/11 03:39 ID:???
>vcvars32
>perlcc hello.pl
>a.exe
Hello World.
184nobodyさん:03/06/11 06:42 ID:u2aqyjyI
解決せぬまま、朝になってしまいました。
すみません、一つ質問させてください。

HTMLファイル内のアンカータグで指定されているURLを全てエンコードして返すコードを書きましたが、どうも思う
ように動いてくれません。問題のコードは下記となっております。
-----------------------------------------------------
while(<FH>){
  if($_ =~ /\<a.*?href.*?\=.*?\>/ig){
    my $tmp = $_;
    while($tmp =~ /(.*\<a.*?href.*?\=)(.*?)(\>.*?)(\<|\n)/ig){
      my $tmp1 = $1; my $tmp3 = $3;
      my $tmp2 = main::url_encode($2);#エンコードルーチン
      $tmp2 =~ s/\%20//g; $tmp2 =~ s/\%22/\"/g;
      $index_file .= $tmp1 . $tmp2 . $tmp3;
    }
  }
  else{
    $index_file .= $_;
  }
}
-----------------------------------------------------
1行に2つ以上のアンカータグがあった場合を考えてwhileを使用しておりますが、その部分の正規表現に問題が
あるというところまでわかっていながら、全く前進せぬまま朝になってしまいました。情けないです。
ここの正規表現の区切りとなるものが曖昧なことから、うまく認識してくれず、整形後のHTMLファイルがおかしく
なってしまっているのだと思われます。

もし宜しければ、教えてください。
すみませんが宜しくお願いいたします。
185nobodyさん:03/06/11 07:22 ID:???
>>184
正規表現道場@2ch Part2
http://pc2.2ch.net/test/read.cgi/php/1038146241/432-n

このへんでグダグダやっているようだが
186nobodyさん:03/06/11 11:58 ID:???
foreach (@tmp) {

}
と、
for ($i=0;i<=$#tmp;$i++){

}
って、何が違うのでしょうか?
187nobodyさん:03/06/11 12:20 ID:???
>186
前者は@tmpの中身を順番に参照する。
後者は0から$#tmpまで$iがカウントアップしていく。

前者は数字とは限らないが、後者は確実に数字。
188nobodyさん:03/06/11 12:47 ID:???
unlink(<tmp*>);
したら、
glob failed (child exited with status 127) at index.cgi line 863.
といわれてしまったのですが、
どうすればいいのでしょう?
glob関数は使ってないはずなのですが・・・
189nobodyさん:03/06/11 12:48 ID:???
>>187
ありがとうございます。やっとわかりました(情けない
190nobodyさん:03/06/11 13:16 ID:???
>>188
<tmp*> <- ファイル名glob演算子
なんでエラーになるかは知らない。
191nobodyさん:03/06/11 16:26 ID:???
文字列のパターンマッチした部分を別の変数に代入する
スマートな方法はありませんか?
今はこんなやり方をしてるんですけど…

$_="0123aa456789";
m/([a-z]+)/;
$str = $1;
192nobodyさん:03/06/11 16:31 ID:???
>>191
$_="0123aa456789";
s/([a-z]+)/$str = $1/e;
193nobodyさん:03/06/11 16:40 ID:Gw/QAyIn
$_="0123aa456789";
($str) = /([a-z]+)/;
194 :03/06/11 17:17 ID:???
perlをレンタルサーバーと同じバージョンにしたいのですが、
winの5.004_01が入手できるところをご存じないでしょうか?
195_:03/06/11 17:19 ID:???
196194:03/06/11 18:07 ID:???
自分で解決しました、失礼しました。
197nobodyさん:03/06/11 18:08 ID:???
>>194
スレ違い&winの5.004_01は存在しない&同じにしても意味なし
198nobodyさん:03/06/11 19:14 ID:???
Perlのバージョンよりも、OSを同じにしたほうがいいかもね。
処理系依存の関数ってけっこうあるし。
199nobodyさん:03/06/11 20:11 ID:fefOLsV8
1通のメールに、普通のメールの内容とHTMLメールの内容を一緒に入れて
送れる(どっちを表示するかはメーラーがきめる)と聞いたのですが
sendmailにどういう風に渡したらいいんでしょうか?
Content-Type: multipart/alternative;を使うらしいとこまでは
わかったんですが…
(プログラムを動かそうとしているサーバには、モジュールは入れられないみたいです)

どなたか御存じの方がいらっしゃったら、よろしくおねがいします。
200nobodyさん:03/06/11 20:13 ID:???
>>199
スレ違いですので、お引き取りください。
201nobodyさん:03/06/11 20:16 ID:???
$b ="$aいうえお";
$a = "あ";
print $b;

このとき、当然ですが「いうえお」しか表示されません。
「あいうえお」と表示したい場合はどうすればいいですか?
$aを$bの前に持ってくるというのはナシで。置換しかないですかね?
202YUIS:03/06/11 20:28 ID:oL0No0ho
「2chからきました」ってコメントに書いたら値引きしちゃうよ(^_^)v
↓↓↓
 http://www.dvd-yuis.com/
203nobodyさん:03/06/11 20:35 ID:???
>201
print eval($b);

$aや$bにコマンドを入れられてたら、かなり危険な状態になるのであまりお勧めできない。
204_:03/06/11 20:44 ID:???
205nobodyさん:03/06/11 21:02 ID:OIUswXrq
レスありがとうございます。

print eval($b);
↑何も表示されない。
print eval{$b};
↑「いうえお」しか表示されない。

アルェー?
206nobodyさん:03/06/11 21:09 ID:???
>205
すまん。
俺の記憶違いだった。
207nobodyさん:03/06/11 21:25 ID:???
$b ='"${a}いうえお"';
$a = "あ";
print eval($b);
208nobodyさん:03/06/11 21:33 ID:OIUswXrq
>>207
できた!
シングルクォートで囲まないといけないんですね。
サンクス。

>>206さんもありがとうがざいました。
209_:03/06/11 21:35 ID:???
210nobodyさん:03/06/11 21:38 ID:???
>>208
シングルクォートじゃなくても良いけど$bの内容が「""」とか「qq!!」と文字列リテラルとしてエバれるようになってりゃいい。
211nobodyさん:03/06/11 23:03 ID:???
>>201

$b ='"(split(/<>/))[0]いうえお"';
print eval($b);

だと
いうえおと表示されます。
(split(/<>/))[0]にはある文字列がはいっています。
212nobodyさん:03/06/11 23:26 ID:???
>211
evalがどういう働きをするものか勉強しなおしてください。
あなたの期待している通りにならない事がわかります。
213188:03/06/11 23:39 ID:???
>>190
ありがとうございます。なるほど。
ところで、こういう場合、考えられる原因ってなんでしょうか・・・?
いちお、「tmp*」のパーミッションは666にしてます。
214nobodyさん:03/06/11 23:56 ID:???
>>213
こういう場合って?直してもだめだったの?
215nobodyさん:03/06/12 00:07 ID:???
複数の画像を一度にアップするCGIを製作しています。
フォームから
<input type="file"~(以下略
と言う風に入力してもらいcgiでcgi-libを使用してデコード、とまでは
できたのですが、どのようにして拡張子を取得するべきか・・・

複数のファイルをアップロードする場合、どのようにして拡張子を取得するのでしょうか?
(今現在、プログラムが手元にないのであまり詳しく状況を書けなくて申し訳ありません。)
216nobodyさん:03/06/12 00:33 ID:???
>>215
スレ違いですので、お引き取りください。
217nobodyさん:03/06/12 00:35 ID:???
>>215
もちろんヘッダから
218君のBodyはNobody:03/06/12 01:23 ID:???
すみません、初心者なんですが教えてください。

Webでアンケートを作成し、その結果をCSVファイルにしました。
それをWindowsマシンにダウンロードして、Excelで開くと
日本語部分が文字化けをしてしまいます。

一応、SJISコードに変換してからCSVを作成しているのですが...
やり方として、根本的なことを分かっていないがために
何か間違っているような気がします。

恐れ入りますが対処方法を教えてください。
219sage:03/06/12 01:30 ID:SEaNTt27
>>218
どのようにSJISに変換している?
220nobodyさん:03/06/12 01:31 ID:???
221nobodyさん:03/06/12 01:31 ID:WFfieXIn
Perlって読みにくくてやっぱ、Rubyのようがいいよ ねぇ、
222nobodyさん:03/06/12 01:37 ID:???
sjis変換にperlを使ってなかったら、どこもperlの話題ではないな
223君のBodyはNobody:03/06/12 01:38 ID:???
>>219
こういう説明で十分なのか不安なのですが
&jcode'convert(*form,'sjis');
というようなコードを使っています。
224nobodyさん:03/06/12 01:57 ID:???
コーティングの話ではないんですが、ちょっと玄人の方にアンケート取ります。
ちなみに俺は素人さんです。

・腹の立つほど複雑な処理を数日考えて作りました。
・記述の量はかなり多いです。
・強引に作ったので処理はめちゃめちゃで見れた物じゃないです。
・多分半年後の自分は、解読出来ません。
・さらに、メンテしにくくバグが出たら大変そうな仕組みです。
・ついでにデータファイル(txt)の書き換えもめんどくさそうです。

しかし!
上記のダメダメな処理が出来た直後に。。。
もっと効率が良くて、見やすくて、メンテしやすくて、スマートな処理を思いつきました。

・でも、ハッキリ言って書き換えるのめんどいです。
・データ(txt)も全部書き換えです。
・データの書き換えも含むと1日では出来なさそうです。
・しかも苦労して作ったダメの処理を破棄するのは抵抗があります。

普通はそんな時どうするんですか?
ダメな処理を強引に使いますか?
プログラムは苦労するものなのだと割り切って作り直しますか?
多分、処理は使い捨てではなく、ちょくちょく直しながらそれなりに使うと思います。

・そこら辺の常識を玄人さんに聞きたいです。
225nobodyさん:03/06/12 01:58 ID:???
おい、そこのロンドンブーツ!
226nobodyさん:03/06/12 02:03 ID:???
まず、データの書き換えをするプログラムを作るな
227君のBodyはNobody:03/06/12 02:15 ID:???
>>219
ちなみに、Print文で空のファイルに書き込みをしています。
print FILE $data;
みたいにです。
228nobodyさん:03/06/12 02:17 ID:???
>>224
たった数日で出来るものを「かなり多い」というな。
229nobodyさん:03/06/12 02:34 ID:???
>>224
良いと思う処理方法が見つかったなら、ソースは書き換えるべき。
データファイルは、Perlで新しいフォーマットに書き換えるスクリプトを作ればいい。

俺は、そうしてる。
いや、そうするべき。
230nobodyさん:03/06/12 02:49 ID:???
分かりました。
スパッと気分を変えて書き直したいと思います。
って言うか、もう始めてます。
綺麗な記述&処理のほうが後々イライラせずにすみそうだし。。。

データはperlに直接埋め込む方式に変更したので書き換えスクリプトは作れなさそうです。
まったく変な構造を持ったデータでして…。

では、ありがとうございました。
231nobodyさん:03/06/12 03:08 ID:???
>>230
頑張れFIGHT (^○^)//Ω\\(^○^)ドンドコドンドコ
232nobodyさん:03/06/12 03:47 ID:???
スクリプトでそのスクリプトを書き換える進化型のプログラムでも
作ったのかい?

ま、書きかえってのはそのうちやらないといけない時がくるわな。
233nobodyさん:03/06/12 04:07 ID:???
readdirで読み取ったファイルやディレクトリはどういう順番の配列になるんですか?
234224,230:03/06/12 04:13 ID:???
いえ、RPGです。
実は俺、以前にもここに来た事があったりして…

モンスターデータが当初の予定より複雑になった(量も多くなった)ので他の記述との折り合いが悪く、
強引に組み込んだらぐっちゃぐちゃになってしまった次第です。

素人な俺は、なぜか強引に作ってしまいスグぐっちゃに。。。恥

235nobodyさん:03/06/12 09:54 ID:???
>>233
たぶん処理系に激しく依存すると思うが、おそらくディレクトリエントリに格納されている
そのままの順番(ファイルを作った順番)ではないかと。
236188:03/06/12 11:13 ID:???
私は>>188( = >>213 )ですが、

>>214
「直しても」ってどういうことですか?、
unlink(<tmp*>);って直しようないかと思うのですが・・・
237nobodyさん:03/06/12 11:49 ID:???
>>236
( )はいらないだろ。>>190が答えてくれてるじゃないか。
unlink <tmp*>;
238 ◆hMJAPH9PWA :03/06/12 13:09 ID:???
>>236
Perlのバージョンとプラットフォームは必ず書くこと。
そのエラーはglob()したときにシェルを子プロセスを起動したが、その子プロセスが正常終了しなかった、といっている。
何故かはそのエラーからは分からない。
File::Globも試すこと。

>>237
unlink(<...>)でも全く問題ないよ。間違った解答をするのはやめてほしい。
239nobodyさん:03/06/12 13:16 ID:???
どのPerlのバージョンとプラットフォームでやって問題なかったか必ず書くこと。
それ以外でやってみてから言え。
240nobodyさん:03/06/12 13:34 ID:???
>>235
ありがとうございます。
241nobodyさん:03/06/12 14:32 ID:???
Perlは実行される命令毎に翻訳されるんでしょうか?
(実行されていない部分は翻訳されていない?)
それとも一旦スクリプト全体が翻訳されて実行されるんでしょうか?
require するライブラリなどはどの時点で翻訳されるんでしょうか?
(翻訳ってのは機械語に解釈って意味で使ってます)

処理の分岐がたくさんある場合にそれぞれサブルーチン化するんですが
これは外部にライブラリとして出した方がいいんでしょうか?
242nobodyさん:03/06/12 15:57 ID:F+7kv9WZ
perlでSystem関数とOpen関数を実行させたくないのですが、どうすればいいでしょうか。
verは5.xだったと思います。よろしくお願いします。
243236:03/06/12 16:58 ID:???
>>238

ちょっと今そとなので、Perlのバージョンは5.*ということしかわからないのですが、
(プラットホームはコバルト)、
そういえば、lsコマンドをperlから実行できない設定になってました。
きっと、それと同じ理屈ですよね?
セキュリティポリシー的に、シェルコマンドをperlから実行できないようになってるという。
244nobodyさん:03/06/12 17:10 ID:???
簡単なダウンロードCGIを作成しています。
巨大テキストから一部分を一つのCSVとして出力しています

ieで実行するとダウンロードダイアログが開くのですが
その時ファイル名が「~.cgi」になってしまいます
この「~.cgi」を任意に変えられないでしょうか?

具体的には
1.getcsv.cgi にアクセス
2.ダウンロードダイアログが開く
3.ダウンロードファイル名が「data.csv」になっている

のような事がしたいのです
245nobodyさん:03/06/12 18:13 ID:???
>>244
スレ違いですので、お引き取りください。
246nobodyさん:03/06/12 18:50 ID:???
掲示板に書き込まれたメッセージ内のURLに自動的にリンクを張るのはどういう構文を追加したらいいんでしょうか?
247nobodyさん:03/06/12 18:51 ID:???
>>246
Perlメモ嫁
248nobodyさん:03/06/12 19:00 ID:???
>>241
Perlは最初に全部を構文解析して、実行する。

useとrequireの違いでも調べてみればいいかな。
249nobodyさん:03/06/12 19:08 ID:OAyD+tHP
レスキューさんの掲示板スクリプトを今までLinuxで
動作させていましたが、このたびWindowsXP+ActivePerl5.6.1-635
で動作させようとしましたが、いまいち変な動作で頭を抱えています。
スクリプトはTrees↓です。
http://www.rescue.ne.jp/cgi/trees/

変というのは、一見動作はするのですが、「新しい話題」で新規書き込み
をしようとすると、
「.は削除されていますので、コメントの投稿はできません. 」
というメッセージでエラーになります。
調べてみると、1340行付近の
if ($in{'resp_number'} ne '' && -s $in{'resp_number'}==0) { &error("File Not Found","$in{'resp_number'}は削除されていますので、コメントの投稿はできません."); }
の&&の後の条件でひっかかってしまうようです。
ちなみに、新規書き込みの時には$in{'resp_number'}の中には「.」のみが入っています。
ふつーのif文なのに、linuxで動作してActivePerlでNGなのです。
250nobodyさん:03/06/12 19:17 ID:???
>>242
perl -M-ops=system,open -e 'open(IN, "<hoge"); system("ls")'

man Safe
man Opcode
man ops
251nobodyさん:03/06/12 19:23 ID:???
>>249
ディレクトリを-sでチェックしてるから。 しかし、レスキューってへぼだなぁ。
252nobodyさん:03/06/12 19:40 ID:???
>>244
ヘッダーで変える
253188:03/06/12 19:46 ID:???
>>188 ですが、
Pelrのバージョンは、5.00503で、
Apache/1.3.26 (Unix) でした。

>>243で自分が言ったことで、間違いないでしょうか?
254nobodyさん:03/06/12 20:26 ID:???
>>241

>>248を補足。
Perlは疑似インタプリタ言語。
実行の度にコンパイルして実行すると言う手順を踏む。
従って、先にコンパイルしておく全ての言語と比較して低速になる。
255nobodyさん:03/06/12 20:28 ID:???
>>253
「間違いない」と誰かに言ってもらわないと納得できないと。
256nobodyさん:03/06/12 20:29 ID:???
>>242
意味がわからない。
openもsystemも使いたくなければ使わなければいい。

もし、>>242が鯖管だったとしたら、
その程度の能力しかなくて鯖なんか扱うなとマジで忠告する。
257nobodyさん:03/06/12 20:30 ID:???
>>253
鯖の設定が怪しいのだと思ったら、その鯖の管理人に聞け。
ここで聞くことじゃあないだろ。
258nobodyさん:03/06/12 20:38 ID:???
>>247
読みました。
$message =~ s/\n/<br>/g;
みたいな簡単な構文じゃ無理なんですね。
私にはまだ理解できそうにないです。
259nobodyさん:03/06/12 20:43 ID:???
>>258
少々逆説的だが、
あれを読んで理解できないと匙を投げるくらいの動機しかないなら、
むしろはじめからやらない方がいい。
よって、やらないでいるのは結果的に正解。
260nobodyさん:03/06/12 20:51 ID:???
>>259
さじを投げたのではなくて、もっと勉強しなければいけないな、と思ったという意味だったんですけどね。
なんかマイナスに解釈されたようですが、お気を悪くさせたようですみません。
261nobodyさん:03/06/12 20:55 ID:???
>>260
わからないながらも使ってみてうまくいった、
とか言うのであれば、前言を撤回する。
262nobodyさん:03/06/12 21:03 ID:???
>>261
どこにいれたらいいのかわからない、というレベルですからねえ。
263nobodyさん:03/06/12 21:37 ID:xj4xPJ4f
>>251
-s 消しても同じ結果なんですが…。
264nobodyさん:03/06/12 22:01 ID:???
>@newls2 = sort { $b <=> $a; } @newls2;
>return($newls2[0]); # 最高番号検出

さすがレスキュー・・・・
265nobodyさん:03/06/12 22:27 ID:???
えーでも、
何個か数字があってその中から最高値を取り出せって言われたら
オレもソートさせちゃうけど・・・楽だし。
自分で、一個ずつ比較させる処理書いてもいいけど・・・
266nobodyさん:03/06/12 23:27 ID:???
うん。sortはCで書かれてるから、(データ量に依存はするが)perlでちまちま比較するよか早いかも新米。
267nobodyさん:03/06/12 23:47 ID:xj4xPJ4f
>>249
ActivePerl5.8.0最新版でもNGでした。
誰か、暇な方、試して頂けないですかね…
268nobodyさん:03/06/12 23:53 ID:???
cgiを改造してくれるスレってなかったっけ?
269nobodyさん:03/06/12 23:54 ID:???
すいません。
FlashCGIつかっているのですが、こっちと、トリプが合いません。
新サバではないとおもいます。。。
はじめの2文字って「H.」から何かに変わったんでしょうか?
270nobodyさん:03/06/13 00:03 ID:???
>>267
もう回答は出てるので、お引き取りください。
271nobodyさん:03/06/13 00:10 ID:???
>>266
そうか?1回のループでいけるだろ。ソートするよりマシ。
272nobodyさん:03/06/13 00:25 ID:???
>>269
変わってません。スレ違い。
273nobodyさん:03/06/13 00:27 ID:???
>>272
そんな、ちょっとまえにローカルでしたときは変わってなかったのに、いまやると変です。。。なぜでしょうか
274nobodyさん:03/06/13 00:28 ID:???
数値の大小を比較する演算子をきみたち初心者諸君に授けるぞよ。

A > B  ←これはAが大きいと真をかえすのだ

275nobodyさん:03/06/13 00:35 ID:nrl/A00g
“ヘ( ̄- ̄ )カモォーン♪
http://www.k-514.com/
276nobodyさん:03/06/13 00:41 ID:???
その1回のループをまわすためにインタープリターがどれだけ働くかと...
実際のところは計測しなきゃわからないが。
277nobodyさん:03/06/13 00:44 ID:???
Perlは逐次解析するわけじゃないし・・・
278nobodyさん:03/06/13 00:58 ID:???
インタープリターとか言ってるあたりが初心者スレだな
279nobodyさん:03/06/13 01:16 ID:???
>>276
何行ってんだ?ソートすると何度もコピーが行われるだろ。
最大値抽出ごときでソートするなんてとんでもない。
280nobodyさん:03/06/13 01:49 ID:???
foreach(@num){
$max = $_ if($_ > $max);
}
これが一番早くてメモリも使わず?
281nobodyさん:03/06/13 01:57 ID:???
$max の初期値は?
282nobodyさん:03/06/13 02:08 ID:???
負も考えて@numの第一要素でもぶちこめば?
283nobodyさん:03/06/13 02:12 ID:???
>>278
はて? perlgutsにもperlembedにもinterpreterと書いてあるが何か?

>>279
こういう恣意的なデータも取れるんだよ。
use Benchmark;
@ar = (1 .. 5);
timethese(10000, {
sort => '@br = sort { $b <=> $a; } @ar',
loop => '$max = $ar[0]; for (@ar[1..$#ar]) { $max = $_ if ($_ > $max);}'
});
Benchmark: timing 10000 iterations of loop, sort...
loop: 2 wallclock secs ( 2.23 usr + 0.01 sys = 2.24 CPU)
sort: 3 wallclock secs ( 1.98 usr + 0.00 sys = 1.98 CPU)
284nobodyさん:03/06/13 02:19 ID:???
必 死 だ な
285­:03/06/13 08:01 ID:???
print "location: ***" で飛ぶとリファラは残りますか?
286nobodyさん:03/06/13 08:01 ID:???
1回余分にチェックするほうが、スライスするより安くすむと思うが。。。
287nobodyさん:03/06/13 09:29 ID:???
>>241さんの質問に関連してお聞きしたいのですが。
外部ファイルにして、requireするにせよ、useするにせよ、
perlは、皆コンパイルするということなんですが、
以下のようにするより、

use Hoge;
if (...) {
 kore; # koreはmainの関数
} else {
 are; # areはHoge.pmの関数
}

以下のようにした方が負担が減るということでしょうか。

if (...) {
 kore;
} else {
 use Hoge;
 are;
}

288287:03/06/13 10:01 ID:???
ごめんさい。1回限りしか、この部分が実行されないことが
前提です。そして、ifになる確率が50%はあるとして。
289nobodyさん:03/06/13 10:19 ID:???
>>287
useの場合は一緒じゃない?
requireなら、そうやったほうがいい。(require文が実行された時点で読み込むから)
290287:03/06/13 10:31 ID:???
そうだったっす。requireですた。
うん、こういうの書いた覚えあるんで、正しい判断だったんだと
わかってほっとしますた。
291nobodyさん:03/06/13 11:18 ID:???
>>284 必死だな。これくらいのインチキも見破れないのか。(w

-----BEGIN PGP MESSAGE-----
Version: PGP 6.5.8ckt - ja http://www.hizlab.net/pgp/

qANQR1DDDQQDAwKzdZAaYlhVL2DJvuMRq1Krlrlnei+qaIGlODje1KRbdRDVTD1/
h7dQ6RfnS3GkGv2RNdvpZgVvgQqkSXcM3N8o9AkvtrmRtO3BsJJ1id5RArQwjmEE
kVXhF6Y5HdeQfOOTRjTMV2kS0i27sza8Gv+g+uFFTozzmsJ2ffbmrUi/K4MjsNnN
yh/mrKF/MkenFZqjnQobAHmjqzYxj8VMyx31Ar1GM4g/2UiEtAErfz//cJCJ0zsB
akVGj67i/wWnQoZgYVxe1sSyT/0=
=+BHl
-----END PGP MESSAGE-----
292nobodyさん:03/06/13 11:41 ID:???
Perlでwordファイルを検索することってできますか。
Namazuの仕組みを調べればいいんでしょうが、もっと簡単に
モジュール組み込んで、テキストファイル検索するみたいに、
バリバリ、正規表現検索がしたいのれす。
なにか情報の載っているサイトでもいいですから教えてくらはい。
293nobodyさん:03/06/13 12:41 ID:1CoOWAYz
質問です。

CGI.pmはmultipart/form-dataで送られたきたデータを受け取ると、
即座に一時フィルを作成するようなんですが、
このファイルを削除するか、ファイルを作成しないようにする方法はないですか?
294nobodyさん:03/06/13 12:50 ID:???
>>292
Wordファイルの仕組みを調べれば、簡単じゃないことが分かるよ。
とりあえずバイナリエディタで開いてみ。
Namazuを使いたいってことなら、wordファイルからテキスト部分を抜き出して
インデックス作ればいいからそっちのやり方だと簡単かも。

>>293
全然CGI.pmの中身も見ずに反応するけど、
最後にファイル削除されないの?
ファイルを作成しないってことはメモリに全部蓄えるつもり?
予測可能なファイル名になっちゃうのなら問題だろうけど、
予測不可能なファイル名になってない?

295nobodyさん:03/06/13 13:24 ID:???
初心者諸君よ! ベンチマークの採り方もお勉強しよう。

use Benchmark;

$count= 100;
@array= (0 .. 5000);

timethese($count, {
'code1'=> q{
    $max= $array[0];
    for (1 .. $#array){
        $max < $array[$_] and $max= $array[$_];
    }
},
'code2'=> q{
    @array2= sort {$b <=> $a} @array;
    $max= $array2[0];
},
'code3'=> q{
    $max= (sort {$b <=> $a} @array)[0];
},
'code4'=> q{
    ($max)= sort {$b <=> $a} @array;
}});
296nobodyさん:03/06/13 13:43 ID:U7lWej0V
☆セクシーヌードを生クリック☆! ~まずは無料です~
http://endou.kir.jp/moe/linkvp.html
297nobodyさん:03/06/13 14:45 ID:???
>>292
ActivePerlならWin32::OLEで、WordファイルをCOMオブジェクトとして開けば、
Wordオブジェクトのメソッドを呼び出せる。

ActivePerlじゃないならOLE::Storageで頑張る。
298292:03/06/13 16:14 ID:???
>>294
wordファイルをバイナリエディタで開いて解析しようとしたが、
ちょっと漏れには無理だと悟って聞いたのです。大分前の話。
word2txtでwebを漁ってもぱっとしなかったし・・・
Namazuは、wordファイルも検索するって知ってる?つまり、
テキスト部分を抜き出すエンジンを備えているんじゃないかなぁ。
調べてみます。

>>297
うーん、ちょっとOLE::Storage見てみたけど、難しそうです。
Win32::OLEとかこれ使って、川合さんや極悪さんがExcelファイルを
簡単に扱えるモジュール書いてくれているんですが、やはり、word
は難しいんでしょうね。


299nobodyさん:03/06/13 17:49 ID:???
>>294
> >>293
> 全然CGI.pmの中身も見ずに反応するけど、
> 最後にファイル削除されないの?
> ファイルを作成しないってことはメモリに全部蓄えるつもり?
> 予測可能なファイル名になっちゃうのなら問題だろうけど、
> 予測不可能なファイル名になってない?

それが、削除されないんですよ。
new CGIした時点で一時ファイルが作られて、
exit(0) or dieしても消えないんですよ。
どんどんファイルが増えていくのはちと問題ありかと。
300nobodyさん:03/06/13 18:16 ID:???
>>299
サーバがUNIXなら対応法はman CGIすりゃ書いてある。
301nobodyさん:03/06/13 18:18 ID:???
>>299
その現象Windowsではなるよね
アップした際のファイルのファイルハンドルが開きっぱなしなのが原因

$q = new CGI;
$upfile = $q->param('upfile');
$tmpfile = $q->tmpFileName($upfile);#一時ファイル名取得CGItemp12345みたいな

~処理~

eval{close($upfile);}; #一応ファイルハンドル閉じる
unlink($tmpfile); #一時ファイル削除
302nobodyさん:03/06/13 18:27 ID:???
んまぁ 最後のunlinkはなくてもいいかもしれないけど
保険として残ってたら削除ってことで。

ちなみにclose()をevalで囲っておかないと添付ファイルがない場合
特定のPerlのVerではエラーするよ
303nobodyさん:03/06/13 18:29 ID:???
>>300
Linuxだが、

man: ??????????????????????
Failed to open the message catalog man on the path NLSPATH=<none>

No manual entry for CGI
304299,293:03/06/13 18:31 ID:???
>>300
>>301
> >>299
> その現象Windowsではなるよね
> アップした際のファイルのファイルハンドルが開きっぱなしなのが原因
> $q = new CGI;
> $upfile = $q->param('upfile');
> $tmpfile = $q->tmpFileName($upfile);#一時ファイル名取得CGItemp12345みたいな
> ~処理~
> eval{close($upfile);}; #一応ファイルハンドル閉じる
> unlink($tmpfile); #一時ファイル削除

Thanks、解決しますた。
無料鯖なんで詳しく知らないけど、
環境変数見る限りではApache/1.3.27 (Unix) らしい。
でもunlink($tmpfile);しないと消えないんだよな・・・
305nobodyさん:03/06/13 18:36 ID:???
>>303
だったらCPANで見れ
306nobodyさん:03/06/13 19:35 ID:???
string literals, numeric literalsとありますが、literalの意味が
わからないのですが。わかる方います?
307nobodyさん:03/06/13 19:36 ID:???
文字って意味よ。だからliteralsなわけよ。
308 ◆fvP8C22Kzg :03/06/13 19:43 ID:???
#PK,a
309nobodyさん:03/06/13 19:45 ID:???
>>295

#そのまま・・・
Benchmark: timing 500 iterations of code1, code2, code3, code4...
code1: 4 wallclock secs ( 3.98 usr + 0.00 sys = 3.98 CPU) @ 125.63/s (n=500)
code2: 5 wallclock secs ( 5.05 usr + 0.00 sys = 5.05 CPU) @ 98.97/s (n=500)
code3: 2 wallclock secs ( 1.37 usr + 0.00 sys = 1.37 CPU) @ 364.70/s (n=500)
code4: 1 wallclock secs ( 1.36 usr + 0.00 sys = 1.36 CPU) @ 367.65/s (n=500)

#@arrayをランダムに
Benchmark: timing 500 iterations of code1, code2, code3, code4...
code1: 2 wallclock secs ( 2.60 usr + 0.00 sys = 2.60 CPU) @ 192.23/s (n=500)
code2: 8 wallclock secs ( 7.98 usr + 0.00 sys = 7.98 CPU) @ 62.64/s (n=500)
code3: 4 wallclock secs ( 3.95 usr + 0.00 sys = 3.95 CPU) @ 126.71/s (n=500)
code4: 4 wallclock secs ( 3.93 usr + 0.00 sys = 3.93 CPU) @ 127.13/s (n=500)

#code1 を $max= $array[0]; for (@array){ $max < $_ and $max= $_ } に修正
Benchmark: timing 500 iterations of code1, code2, code3, code4...
code1: 1 wallclock secs ( 1.73 usr + 0.00 sys = 1.73 CPU) @ 289.02/s (n=500)
code2: 8 wallclock secs ( 8.03 usr + 0.00 sys = 8.03 CPU) @ 62.29/s (n=500)
code3: 4 wallclock secs ( 3.92 usr + 0.00 sys = 3.92 CPU) @ 127.62/s (n=500)
code4: 4 wallclock secs ( 3.90 usr + 0.00 sys = 3.90 CPU) @ 128.11/s (n=500)
310nobodyさん:03/06/13 20:24 ID:???
>>244
いまさら言うのもアレだが、2chみたいにPATH_INFOを使って
hoge.cgi/fuga.jpgのようにすれば、IEなどを騙せ・・・たと思うけども。
311188:03/06/13 21:06 ID:???
glob使えないそうな・・・
で、glob使わないで、
unlink(<tmp*>);と同じことする方法ってないですか?
312nobodyさん:03/06/13 21:20 ID:???
>>311
readdir と grep 辺りで。
313nobodyさん:03/06/13 21:29 ID:???
>>309
普通に考えて、配列にはforeachが最速なんじゃないの?

$max = $array[0];
foreach my $array (@array) {
 $max < $array and $max = $array;
}
314nobodyさん:03/06/13 21:29 ID:???
あぁ、ごめん、最後に書いてあった。。…
315nobodyさん:03/06/13 21:37 ID:???
>>311
$path = ".";
opendir(DIR, $path) or die;
unlink grep { /^tmp.*/ and -f "$path/$_" } readdir(DIR);
closedir(DIR);
316311:03/06/13 21:57 ID:???
>>312
>>315
あー、なるほどー。そっちでくるとはおもわなかった。
ありがとうございます。
317315:03/06/13 22:02 ID:???
あ、これだとカレント以外のディレクトリを指定したときカレントのを消そうとして失敗するな。
書いてから気が付いた。ごめん、適当に修正してくれ。
318315:03/06/13 22:10 ID:???
やっぱ直した。3行目だけ。
unlink map { "$path/$_" } grep { /^tmp.*/ and -f "$path/$_" } readdir(DIR);
319nobodyさん:03/06/13 22:14 ID:???
2ちゃんねるのトリップ作成法を教えてください
320nobodyさん:03/06/13 22:24 ID:???
>>319
スレ違い
321nobodyさん:03/06/13 22:29 ID:???
>>320
Perlのはずです。
322nobodyさん:03/06/13 22:30 ID:???
323nobodyさん:03/06/13 22:33 ID:???
>>321
カエレ(・∀・)ニドトクルナ!!
324nobodyさん:03/06/13 22:35 ID:???
トリップのアルゴリズムは公開されてたっけ
2ch互換のBBSを作るくらいしかメリットは無いかな
325nobodyさん:03/06/13 22:40 ID:???
>>319
いろんな2ch互換掲示板でも落としてきて解読しろ
326nobodyさん:03/06/13 22:41 ID:???
>>325
ただcryptやっているだけでした。
ですので、2chのアルゴリズムと一致しません。
327nobodyさん:03/06/13 22:52 ID:???
( ゚д゚)ポカーン
328nobodyさん:03/06/13 22:58 ID:???
あーすまんハゲども。
トリッパーで十分だ、
ノシ
329nobodyさん:03/06/13 23:11 ID:???
globって今は標準組み込み関数じゃないの?
330nobodyさん:03/06/13 23:11 ID:???
↓次の話題どうぞ
331nobodyさん:03/06/13 23:12 ID:???
↓ ↑
→→→
332nobodyさん:03/06/13 23:15 ID:???
標準だけど、内部動作は処理系依存だから、環境によって結果が異なる。
333329:03/06/13 23:27 ID:???
例えば動かない環境教えてくれ
334nobodyさん:03/06/13 23:39 ID:???
>>333
内部的にはシェルを呼び出してるんだから鯖がそれを規制してたらダメだな
335311:03/06/14 00:24 ID:???
>>315
丁寧にありがとうございます。
で、
$path = "../image/photo";
opendir(DIR, $path) or die;
unlink map { "$path/$_" } grep { /^tmp.*/ and -f "$path/$_" } readdir(DIR);
closedir(DIR);

とやったのですが、結果を見ると、消えてないんですよね・・・
なんでなんでしょう?スクリプトも間違いがあるとは思えないし、
別にcgi自体は正常に終了してるしからエラーログも見れないし、
$path のディレクトリも存在してるし・・・

いったい何が原因なんでしょうか?
恐縮ですがもう少しおつきあいねがえれば幸いです。
336nobodyさん:03/06/14 00:27 ID:???
>>335
tmp.* でいいのか?
337nobodyさん:03/06/14 00:28 ID:EElS1+7W
perlでcgi作りたいです。
でもCGIの設置くらいしかしたことありません。
1から勉強しようと思います
で、参考書籍のスレに行ったんですがなんか微妙なので
こっちで手っ取り早く教えてください
ソースはメモ帳で書けるんですよね?

お勧めの本おしえてください。
プログラムはやったことないに等しいです
(HTMLはある程度書けます。それとHSPくらいなら・・・)
宜しくお願いします
338nobodyさん:03/06/14 00:30 ID:???
>>335
・print map { "[$path/$_]" } grep { /^tmp.*/ and -f "$path/$_" } readdir(DIR);
等としてみて本当に拾えているか確かめる。
・unlink 後に print $!; してみる。
339 ◆hMJAPH9PWA :03/06/14 00:31 ID:???
>>335
unlinkの後に$!を見てみる。
空ならunlinkは成功しているよ。
…というか、CGIスクリプトなのか。共用サーバでは実験しないでね。

CGIスクリプトは、途中でdieしても、HTTPヘッダさえ出力してあれば問題ないように見えることもあるから、注意してね。
340311=335:03/06/14 00:31 ID:???
もうしわけないです。>>335 ですが、ファイルアップする場所がまちがってました。
正常に動きました。
申し訳ございません。
341nobodyさん:03/06/14 00:38 ID:???
>>336
いいんだよ。それ正規表現だから。

>>337
ソースはメモ帳でOK。ただ扱えるサイズに制限があったような?
フリーのテキストエディタを使うといいよ。プログラミングに便利な機能がたくさんある。
342337:03/06/14 01:25 ID:EElS1+7W
>>341
HTML書くとき使ってるエディタ使うことにします
本はどうしようかな…
やはり見てから決めたほうがいいかな。
343nobodyさん:03/06/14 02:19 ID:???
>>342
独習perlで初歩を勉強できる。
344nobodyさん:03/06/14 05:08 ID:CEUIIJh6
Perlで、アクセス者のプリンタを制御することなんてできないですよね。
VBAならできるかもしれないけど。
345nobodyさん:03/06/14 05:46 ID:???
>>344
Perlを何か勘違いしてる。
サーバサイドプログラムを勘違いしてる。

そういうのは、クライアントサイドプログラム。
346nobodyさん:03/06/14 07:32 ID:FbHmkvIr
キタ━━━━━(゚∀゚)━━━━━!!!!
http://homepage3.nifty.com/coco-nut/
347nobodyさん:03/06/14 12:59 ID:???
>>345
そんな事ないよPerlは何でもできるはず
348nobodyさん:03/06/14 13:13 ID:???
句読点を抜いた文章は、バカっぽく見えるうえに説得力がまるでない。
349nobodyさん:03/06/14 15:23 ID:???
サブルーチンで
sub sub{

}


sub sub($){

}
にはどういう違いがあるんですか?
350nobodyさん:03/06/14 15:48 ID:???
>>349
sub 'hoge';
みたいに括弧なしで呼べたり、
sub @hoge;
とかした時の動作が変わったり。
351nobodyさん:03/06/14 22:11 ID:???
>>350
>動作が変わったり

どうかわるの?
352nobodyさん:03/06/14 22:33 ID:???
Perlでping撃ちたいんですけど、

プロンプトみたいに、撃つ回数
平均時間、最短時間、最長時間
を得ることができますか?
リファレンスみると、生きてるか死んでるか、しかわからないみたいなので・・・
353 :03/06/14 22:44 ID:???
質問します。

アクセスログのファイルのファイルハンドルをFとすると

@line=<F>;

のようにするのは、よくないとどこかで見たのですが
ファイルサイズが小さい場合でも駄目なのでしょうか?
もしよかったとして、どれくらいのサイズまでなら大丈夫なのでしょうか?
もし過去ログにあるのならば、どのあたりの過去ログにあるかを教えて欲しいです。

よろしくお願いします。
354nobodyさん:03/06/14 22:47 ID:???
>>352
system("ping");
355nobodyさん:03/06/14 23:03 ID:???
>>353
小さきゃかまわないよ。
どのくらいのサイズまで大丈夫かなんて、環境によって違うので分からない。
「みんなはどれぐらいで線引きしてるか」の答えなら得られるかもしれない。
356nobodyさん:03/06/14 23:06 ID:???
>>353
別に良くも悪くも無い
自分の用途によって使い分ける
357nobodyさん:03/06/14 23:11 ID:???
>>349
「プロトタイプ」でググってみりる。
358 :03/06/14 23:19 ID:???
>>355
>>356
レスありがとうございます。
なるほど、確かに環境によってかわりますよね。
では、どのくらいの大きさで区別をなさってるのでしょうか?

私は30~50k程度のファイルでする予定です。
359nobodyさん:03/06/14 23:33 ID:???
そんぐらいだと、一行づつ読んだ方がいいと思う。
360nobodyさん:03/06/14 23:33 ID:???
>358
なんで差が出るかの理由を考えろ。
その方が早い。
361nobodyさん:03/06/14 23:35 ID:???
ちなみに、私はカウンターとかダウンロード用のスクリプトみたいな、
かなり小データ以外は一行筒読んでます。
362nobodyさん:03/06/14 23:36 ID:MAEKWf+y
SSIでCGIを呼び出そうとして失敗したときに
[an error occurred while processing this directive]
というエラー文が.sthmlファイルの中に出てくるんですが、
この文章を自由な文面に変更したり出来るんでしょうか?
363nobodyさん:03/06/14 23:42 ID:???
シーケンシャルな処理でいいなら一行ずつ
ソートするとか、順序を入れ替えるとかしたいなら、一括で
364 :03/06/14 23:55 ID:???
>>359>>360>>361>>363

またまたレスありがとうございます。

>>359
なるほど、1行ずつのほうがいいですか。
変更はすぐできるのですが、15~20kくらいのファイルでもだめでしょうか?


>>360
1行に記録するデータの項目がある場合と無い場合があるからです。
例えていったら、掲示板で名前だけ書く人と、名前もメアドも両方書く人がいる、みたいな。
365nobodyさん:03/06/15 00:01 ID:???
>>364
大きさだけじゃない。
例えば、速攻で作らなきゃならない、使い捨てのスクリプトを占有サーバで実行するなら
数十MBでもやるかもしれない。
366 :03/06/15 00:13 ID:???
>>365
レスどうもです。
有料ですがレンタル鯖なので他の人に迷惑がかからないように
1行ずつ処理した方がよさそうですね。
ありがとうございました。
367nobodyさん:03/06/15 02:55 ID:???
ディレクトリの作成日時ってどうやって取得するんですか?
368nobodyさん:03/06/15 03:19 ID:???
>>367
stat
369nobodyさん:03/06/15 04:19 ID:???
セッション管理を一時ファイルを作る形で実現させたいと思っているのですが、
プロセス番号($$)のファイル名を作成させて管理する形式でユニークに
しようかと思っております。

プロセス番号で管理すれば、完全にユニークになると考えて宜しいのでしょ
うか。
まだまだ初心者のため、自信がありません。
どうか教えていただければありがたいです。
370nobodyさん:03/06/15 05:09 ID:???
>>367
(stat("dir"))[9]
371nobodyさん:03/06/15 05:34 ID:???
あ、、、
FFFTPで表示されてる、サーバーにあるディレクトリの作成日時と
(stat("dir"))[9] 使って取得した日時(unixtime)が一致してない・・・・・

なぜだろう
372nobodyさん:03/06/15 06:24 ID:m8nOAT8L
サブルーチン名を変数にして実行する方法はありません
でしょうか。どうもうまくいきません。
373nobodyさん:03/06/15 06:39 ID:???
>>372
こういうやつ?

$foo = \&bar;
$foo->();

sub bar {
print "manko";
}
374nobodyさん:03/06/15 10:52 ID:???

$hoge = "test";

&$hoge;

sub test{

}
375nobodyさん:03/06/15 17:55 ID:fAURPzIq
CGIを転送したつもりなのに、
機能してませんよね。以下↓
http://www.keddy.net/~gekiya77/ore_plus_v02-04-16/
原因が分かるのならば、教えて下さいませ。
376nobodyさん:03/06/15 18:08 ID:???
>>375
パーミッションがない
377nobodyさん:03/06/15 18:51 ID:???
>>375
マルチ先でも言われてるが、パーミッションに問題がある。
378nobodyさん:03/06/15 18:58 ID:???
379nobodyさん:03/06/15 19:01 ID:???
>>378
ディレクトリ作成なら (stat("dir"))[10] ではどうだ?
380nobodyさん:03/06/15 19:32 ID:???
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
381nobodyさん:03/06/15 19:37 ID:???
>>380
パーミッションって「許可」っていう名詞だよ。
「『実行パーミッションがない』と言え」って意味かな。
382nobodyさん:03/06/15 19:48 ID:???
ミッションがないパー
383nobodyさん:03/06/15 20:01 ID:???
釣られすぎ(w
384nobodyさん:03/06/15 20:07 ID:???
>>380=>>383
苦し紛れの言い訳?
385nobodyさん:03/06/15 20:27 ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。


煽りや荒らしは放置で
次の方どうぞ。
386nobodyさん:03/06/15 20:36 ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。


煽りや荒らしは放置で
次の方どうぞ。
387nobodyさん:03/06/15 20:49 ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。


煽りや荒らしは放置で
次の方どうぞ。
388nobodyさん:03/06/15 20:50 ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。


煽りや荒らしは放置で
次の方どうぞ。
389nobodyさん:03/06/15 21:03 ID:m8nOAT8L
>>373-374
ご返答有難うございます。
やりたいことは>>374さんのようなことなのですが、
このように実行すると、
Bad name after main:: at -.cgi
と出てしまいます。

use strictをはずせば回避はできるのですが、
いろいろと試してみたいと思います。
ご親切に有難うございました。
390nobodyさん:03/06/15 21:04 ID:QzYzFnUN
391nobodyさん:03/06/15 21:20 ID:???
>>389
%funcs = (
hoge => sub {return 1},
hage => sub {return 0}
);

$name = 'hage';
print $funcs{$name}->(), "\n";
392nobodyさん:03/06/15 22:12 ID:???
>>379
それでもだめでした。
違う日付になってしまいます。
393nobodyさん:03/06/15 22:17 ID:???
389とちょっとかぶっちゃうかもしれませんが、%{変数}でエラーが
出てしまいます。strictはずせばいけるのですが、、、
先生方、もしお分かりでしたら教えてください、、、
394nobodyさん:03/06/15 22:43 ID:???
>>393
それはソフトリファレンスだからではないか?
変数の部分は文字列が入っている?

回避方法としては、
1.プログラムの構成を考え直す(ソフト・リファレンスを使わない)
2.no strict;を直前に入れる。
3.eval を使う。
などが考えられる。
395nobodyさん:03/06/15 22:45 ID:???
>>392,>>393
>>1
>【投稿する際の注意】
>質問するときは内容をよく吟味してから投稿してください。
>
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
>
>最低でも1と3が無いと誰も答えられないよ。
396nobodyさん:03/06/15 22:48 ID:???
>>394
そのとおりでございます。
変数の部分には文字列がはいっております。
リファレンスから勉強しなきゃ駄目ですね。
本当にご親切に有難うございました。
397nobodyさん:03/06/16 00:08 ID:CSJJat6/
指定したURLのソースを取得したいのですが、Perlで可能でしょうか?
もし可能でしたらやり方を教えてほしいです。
398nobodyさん:03/06/16 00:16 ID:???
>>397
LWP
399nobodyさん:03/06/16 00:35 ID:???
mkdir関数でディレクトリをパーミッション777で作成したのですが
755で作成されてしまいました。
ラクダ本を読んでみたところ
>数値MODEで指定したパーミッション(を現在のumask値で修飾したもの)を持つ
とあるのですが、umaskで修飾とはどういうことなのでしょうか?
原因の分かるかたがいらっしゃいmしたらよろしくお願い致します。

以下の様にやっています
mkdir( './dir', 0777 ) or die( "ディレクトリを作成できません\n" );
400nobodyさん:03/06/16 00:56 ID:???
>> 399
print umask; # 現在値
my $umask = umask 0; # umask を 0 にし、前の値を退避
mkdir ...
umask $umask; # 元に戻す

see also: http://www.google.co.jp/search?q=umask&hl=ja&lr=lang_ja
401nobodyさん:03/06/16 00:57 ID:???
>>397
普通にGETしても割と簡単だし、面白いからやってみるべし
402nobodyさん:03/06/16 01:13 ID:???
403nobodyさん:03/06/16 01:49 ID:DMh466I+
掲示板を作っているのですが、
$content =~ s/([a-zA-Z0-9\.\-\_]+@[a-zA-Z0-9\.\-\_]+)/<a href=\"mailto:$1\">$1<\/a>/g;
↑この正規表現で、$content内に”(sage@hoge.com)”(←カッコは全角)
という文字が含まれていた場合、最初のカッコ部分で文字化けしてしまいます
・・・というか、IEでは<a>タグの"<"部分が文字化けしてそれ以降の
</a>部分までのHTMLが表示されてしまい、NN6ではsage@hoge.comの前に
余計な文字がくっついたものにリンクが貼られている状態になってしまいます
文字化けせずに、”sage@hoge.com”だけがマッチするようにするには
どうしたら良いでしょうか?
404nobodyさん:03/06/16 02:30 ID:???
405nobodyさん:03/06/16 02:35 ID:cMLQJvQF
自分なりに検索をしたのですが、解決策は見つかりませんでした。
探し方が悪いのかもしれませんが…

ファイルオープン時に、対象ファイルがないと『Internal Server Error』が表示されるのですが、
このエラーの変わりにメッセージを表示、もしくはHTMLで作成したエラーページにジャンプ
させたいと思っています。

そこで、まずはメッセージの表示から挑戦したのですが、上手く行きません。

$fname1 = "ファイルのパス/ファイル名";

open(FILE, "$fname1") or die "File Open Error.\n";
open(FILE, "$fname1") || die "File Open Error.\n";
open(FILE, "$fname1") or &Error "File Open Error.\n";
open(FILE, "$fname1") || &Error "File Open Error.\n";

以上のどの方法でも『Internal Server Error』が表示されています。

ファイルのパス/ファイル名は、HTMLフォームに入力された内容を取得しているのですが、
存在するファイル名を指定すれば、正常にファイルの入力は行われます。

以上、説明の不備等あるかもしれないのですが、よろしくお願いします。
406nobodyさん:03/06/16 03:15 ID:???
>>405
CGIでdieするのはあんま意味ないです。
sub Errorのほうではちゃんとヘッダとか出力してますか?
407nobodyさん:03/06/16 03:22 ID:X/Zl1g96
Apacheで print 'a' 等の後、エラーが出た場合バッファをクリアしてエラーを出力したいのですが、
バッファをクリアするにはどうすればいいのでしょうか?
408nobodyさん:03/06/16 03:29 ID:???
>>406
レス有難うございます。

> sub Errorのほうではちゃんとヘッダとか出力してますか?

&Errorって、dieの代わりに使う…ってモノじゃ無いんですね…
どうも的違いの事をやってしまっているようですね。
もう少し勉強してから質問するようにします。

なんにせよ、解決に向かって一歩進んだような気がします。(気のせい?)
本当に有難うございました!
409405:03/06/16 03:40 ID:???
解決しました!
下記のようにすることで、無事にエラーページに飛ぶ事が出来ました。

open(FILE, "$fname1") or &Error;

sub Error{
print "Location:エラーページのURL\n\n";
}

>>406さんにヒントをもらえたおかげです。有難うございました!
また、板汚し失礼いたしました。
410nobodyさん:03/06/16 03:45 ID:???
>>403
これでどうだ?
文字化けしそうな時は、スペース1個入れてごまかしてみた。

$content =~ s|(?<=[\x81-\x9f\xe0-\xef][\x40-\x7f])([\w\.\-]+@[\w\.\-]+)| $1|g;
$content =~ s|([\w\.\-]+@[\w\.\-]+)|<a href="mailto:$1">$1</a>|g;
411nobodyさん:03/06/16 04:06 ID:???
>>410
ごめん。間違い。
↓こうしないと失敗するかも。

$content =~ s|((?:[\x81-\x9f\xe0-\xef][\x40-\xfc])*(?:[\x81-\x9f\xe0-\xef][\x40-\x7f]))([\w\.\-]+@[\w\.\-]+)|$1 $2|g;
$content =~ s|([\w\.\-]+@[\w\.\-]+)|<a href="mailto:$1">$1</a>|g;
412_:03/06/16 04:23 ID:???
413nobodyさん:03/06/16 08:18 ID:???
perlができることを自慢するために何か証明になる資格試験とかありませんか。
Cとかjavaとか、Linux、word、一太郎などまであるわけですが、perlはなぜか
聞かない。


414nobodyさん:03/06/16 08:44 ID:???
とても初歩的な質問で申し訳ないのですが、

2003年6月16日(月)8:44

という文字列から
「6月16日(月)」と「8:44」
を取り出すにはどうしたらよいか教えていただけませんか?
よろしくお願いします。
415nobodyさん:03/06/16 09:06 ID:???
>>414
$hiduke='2003年6月16日(月)8:44';
@hiduke=$hiduke=~m/(\d+月\d+日\(.+?\))(\d+:\d+)/;
print "@hiduke";

416nobodyさん:03/06/16 10:42 ID:QXmqryyp
>>413
http://www.dtek.chalmers.se/groups/icfpcontest/
これで優勝すると「無制限に自慢する権利」を得ることが出来ます。

http://slashdot.jp/developers/03/06/13/1610225.shtml?topic=58
417nobodyさん:03/06/16 10:52 ID:01UxcTvV
質問です
エディタで見るとちゃんと改行されて見れますが
log.dat内でも改行される様に
するのはどすればいいのでしょうか
すんません。初歩的質問で
よきお知恵を

例えばこんなのです

$log = $ENV{'HTTP_REFERER'};

open(LOG, ">>./log.dat");
print LOG "$log\n";
close(LOG);
418nobodyさん:03/06/16 11:04 ID:???
>>417
意味不明。
log.dat内でも見られるってどういう意味?
改行っつったら、文字コードの話か、<br>の話か。

ともかく落ち着いてわかりやすく説明してくれ。
419nobodyさん:03/06/16 11:38 ID:01UxcTvV
>>418
すんません。ちょっと落ち着いてみます。

えーと
FTPとかでlog.datを落としてメモ帳で見る、もしくは
その場でメモ帳とかで開くとlog.datがバイナリなので
改行されず見難いです。

まあ普通にエディタ使えばいいじゃんと
言われればそうなんだけど
出来ないのかなぁ と

うぐ、なんか説明へただぽ
420nobodyさん:03/06/16 11:41 ID:???
>419
激しくスレ違いだな。
改行コードの問題だ。
素直にエディタ使え。
421nobodyさん:03/06/16 11:43 ID:???
>>419
うむ、たしかにちとスレ違い。
まあ、どうしてもメモ帳が使いたいなら、SJISにして書き込むなり
なんなりしたまい。
果てしなく意味のない行為だとは思うが…。
422nobodyさん:03/06/16 11:51 ID:???
>>419
バイナリ?だって、そこが勘違いの元じゃないかな。
HTTP_REFERRERは、飛んでくる前のページだから、普通のテキスト
ファイルのはず。改行コードがLFだけだとしても、windows PCだと
行がつながらないはず。Macだと?逆に、CRだけだと、windows PC
で見ると行がつながる。とっちか確かめて、
s/\r/\r\n/とか、s/\n/\r\n/とかすりゃいいんじゃ?

423nobodyさん:03/06/16 11:53 ID:???
awkのnextfileは、Perlではどうすればいいですか。
たくさんあるファイルの1行目だけ表示したいんですが、
perl -ne 'print if $. == 1;'
だと1つのファイルだけしか処理できないんで困ってます。
よろしくおながいします。
424419:03/06/16 11:56 ID:???
みんなすまんぽ

いろいろ調べても解からなかったので
かなーりパニックになってたぽ

>>422
なんか道が開けたぽ
425nobodyさん:03/06/16 11:57 ID:AbGOHEQT
>>401
すみません、普通にGETとはどういうことでしょうか…?
それが分からなくて困ってます。
426nobodyさん:03/06/16 12:02 ID:???
>>423
1行読込をたくさんあるファイルに対して繰り返し行う
427nobodyさん:03/06/16 12:04 ID:???
>>426
どいうこと?ワイルドカード使ってやる方法キボンヌ。
awkにできてPerlにできないはずないだろうから。
428nobodyさん:03/06/16 12:07 ID:???
429nobodyさん:03/06/16 12:11 ID:???
>>427
できません
430nobodyさん:03/06/16 12:18 ID:8IGausxn
>>428
ありがとうございます
431nobodyさん:03/06/16 12:19 ID:???
>>429
厨め。できたよ。教えてやらない。
432nobodyさん:03/06/16 12:59 ID:???
>>425
>>398は無視か?この糞野郎。二度と来んなボケ。氏ね。
433nobodyさん:03/06/16 13:34 ID:???
この場合は
$a = 0;
if (!$a)
真でいいんですよね。
では↓こういう式の時は
if (!($a==0 && $b))

変数が
$a = 1 $b = 1 の時は 偽
$a = 1 $b = 0 の時は 真
$a = 0 $b = 1 の時は 偽
$a = 0 $b = 0 の時は 偽

でいいのかなそれとも

$a = 1 $b = 1 の時は 真
$a = 1 $b = 0 の時は 真
$a = 0 $b = 1 の時は 偽
$a = 0 $b = 0 の時は 真

こっちでしょうか? よろしくお願いします。
434nobodyさん:03/06/16 13:50 ID:???
>>433
そこまでわかってるなら自分で試せよ…。
435nobodyさん:03/06/16 13:56 ID:???
>>419
ASCIIモードで転送しろ
と誰も言わないのはなぜだ・・・
436nobodyさん:03/06/16 13:59 ID:???
>>433
なんだ、そのif文の条件は。
ただの嫌がらせだろ。

$aが真であり、なおかつ、$bが偽の場合という条件。
437nobodyさん:03/06/16 14:08 ID:???
>>434
自分で書いたものではなくて試そうにも中に実際中に何が
はいっているのかも解らず1つ1つ解決していこうとは思っているのですが、
検索したり、リファレンスみたりしてるのですが、こういった例が見当たら
なかったので質問しました。よろしくお願いします。
438nobodyさん:03/06/16 14:13 ID:???
>>436
ありがとう。助かりました。
439nobodyさん:03/06/16 14:32 ID:???
>437
ローカルにテスト環境を作って試す。
これ常識。
マジで。
440nobodyさん:03/06/16 14:40 ID:???
>>439
一応ためしているのですが
解ったことは
$a = 0 $b = 0 は実行されているみたいです。
でもそれだとアレ?
441nobodyさん:03/06/16 14:41 ID:???
>>437
まあマジレスすると

$a=1;
$b=1;
if (!($a==0 && $b)){
print "ok\n";
}

こんな感じにして、4回変数を書き換えればテストは出来る。
記述が正しいかの動作確認だけなら、一々スクリプト全体を
見直す必要は無い。
442nobodyさん:03/06/16 15:37 ID:???
>>441
ありがとうございます!!
結果がわかりました。
でも、頭で理解しようとすると自分にはとても難しい。。。
443nobodyさん:03/06/16 17:25 ID:0o9Ehb4h
メールフォームを作ってます。
$addr = $ENV{'REMOTE_ADDR'};
でIPアドレスを取得するように設定したのですが
友人に送ってもらったメールのIPアドレスと自分で送ってみたものが
同じIPアドレスになってました。
なんでー???
444nobodyさん:03/06/16 17:32 ID:???
>>443
念のため確認だが、実は二人とも同じケーブルで同じ収容局とか、
そういった落ちは無いよな?
445nobodyさん:03/06/16 17:34 ID:???
>>443
> なんでー???
あなたの描いたスクリプトがバカだから。
と答えて欲しいの?
446nobodyさん:03/06/16 17:34 ID:???
>>443
REMOTE_ADDRが同じだったから。
447nobodyさん:03/06/16 17:45 ID:???
>>425
$port = getservbyname('http', 'tcp');
$iaddr = inet_aton($host);
$sock_addr = pack_sockaddr_in($port, $iaddr);
socket(SOCKET, PF_INET, SOCK_STREAM, 0);
connect(SOCKET, $sock_addr);
select(SOCKET); $|=1; select(STDOUT);
print SOCKET "GET /$path HTTP/1.0\r\n";
print SOCKET "\r\n";
@get = <SOCKET>;

こんな感じで
448443:03/06/16 18:05 ID:0o9Ehb4h
REMOTE_ADDRは同じではないと思います。
住んでる所は友人は関東で私は中部だしプロバイダーも違うし。
$addr = $ENV{'REMOTE_ADDR'}; の箇所以外に
IP取得に干渉するものがあるんでしょうか?
もちょい試行錯誤してみます。
449nobodyさん:03/06/16 18:43 ID:???
1秒ごとに@dataの文字を書き出したいのですが、
↓のようにすると、sleep(1)×配列の個数ぶん待った後
一気に出力されます。。
1文字づつ1秒間隔で出力したいのですが、、どこがまちがってますか?


@data = ("あ","い","う","え","お","か","き","く","け","こ");

print "Content-Type: text/html\n\n";
print "<html>\n";
print "<title>self</title>\n";
print "<body>\n";

for($i=0; $i<=$#data; $i++){
print "$data[$i]<br>\n";
sleep(1);
}
450nobodyさん:03/06/16 19:35 ID:???
>>449
CGIスクリプトとして動かしてる?
451nobodyさん:03/06/16 19:42 ID:???
>>450
どういうことでしょうか?
ローカルで動かしているんですが、
AddHanderもして、
拡張子もcgiで、ちゃんとスクリプトのはずですが。。。
452nobodyさん:03/06/16 19:47 ID:???
>>448
REMOTE_ADDRを記録して、それが同じだったということはREMOTE_ADDRが同じだったということではないですか?
>>451
CGIは全部実行した後出力するんだよ。たしか。
453nobodyさん:03/06/16 19:51 ID:???
え、じゃあスリープの意味って・・・・
454nobodyさん:03/06/16 19:51 ID:???
>>453
PerlはCGIためだけのものではありません。
455nobodyさん:03/06/16 19:56 ID:???
456nobodyさん:03/06/16 20:40 ID:???
MobileType(スペルあってるかな?モバイルタイプ)っていう
スクリプトで、mt-load.cgiを実行したときに1行ずつ表示されてたんだけどなぁ。
nphでもなさそうだし・・・
457nobodyさん:03/06/16 21:32 ID:???
>>456
mt-load.cgi の20行目で、>>455の "$|=1" してるから
458nobodyさん:03/06/16 21:34 ID:???
>>457
ほんとだ、localついてて見落としてた。。。
でも、sleepもないし、nph-*.cgiでもないのに・・・
どういう仕組みなんでしょうか?
459nobodyさん:03/06/16 21:38 ID:???
うぅ、何回も1行ずつ流れてるのみてる・・
イイナァ
460nobodyさん:03/06/16 22:00 ID:???
>>443
IPをHOSTに変換してみたら何かわかるかも
461nobodyさん:03/06/16 22:06 ID:???
どれもこれもネタか?
あああ鬱。
462458:03/06/16 22:08 ID:???
ほんとお願いしますよ~~
どうやったらできるんでしょ。。
ネタとか言わないで・・・
463nobodyさん:03/06/16 22:26 ID:???
REMOTE_ADDRが常に同じ値になるように設定してあるサーバがあるよ。
464nobodyさん:03/06/16 23:52 ID:???
REMOTE_ADDRを表示するだけのスクリプト書いて
いろんな串さしてみて試せば?
465nobodyさん:03/06/16 23:55 ID:???
>>449

$| = 1;
@data = ("あ","い","う","え","お","か","き","く","け","こ");
print "Content-Type: text/plain\n\n";
for($i=0; $i<=$#data; $i++){
print "$data[$i]<br>\n";
sleep(1);
}
exit;

これでやってみれ。
466458:03/06/16 23:57 ID:???
>>465
ん~、やっぱり始めに全部sleepして一気に吐き出しますねぇ。。。
467nobodyさん:03/06/17 00:02 ID:???
いっそのこと、1行ずつ表示する部分はJavaScriptに任せちゃうとか。
468nobodyさん:03/06/17 00:09 ID:???
>>466
そりゃ環境がおかしいんだわ
469458:03/06/17 00:12 ID:???
>>468
マジっすか?
470nobodyさん:03/06/17 00:14 ID:???
>>466
htmlについてもよく考えてみれ。
ブラウザがソースを受け取り、解釈してからレイアウトを決めて
どの時点でどういう順番で表示するか保証はないんだぞ?
471458:03/06/17 00:14 ID:???
NNならちゃんと1文字ずつ出ました。
IEだと無理です。
472458:03/06/17 00:17 ID:???
うーんと、、、
1行ずつ表示する文字をdatなりに保存して読み出したいので、cgiがいいんですけどね~。。
javaはソース見え見えなのがいやだなぁ。。
473nobodyさん:03/06/17 00:18 ID:???
>>465
WinのIE6で1秒ずつ表示になるね
474458:03/06/17 00:20 ID:???
>>473
え???
俺、ローカル(Win)でやると、
あ<br>
い<br>
ってのが一気に表示されて、
レンタルサーバ(linux)だと、
ファイルのダウンロードになった
475nobodyさん:03/06/17 00:31 ID:???
>>472
とりあえずJavaとJavaScriptは別モンだゴルァ!とお約束の突っ込み。

CGIでは、表示するぶんだけの文字列とそれを表示するためのJavaScriptを出力して
実際の表示はJavaScriptに委ねる、って意味なんだけど。
まあ、可能かどうかは分からんが。
476nobodyさん:03/06/17 00:39 ID:fNA5EU9/
初心者の質問で申し訳無いのですが
foreach文の中で次のループに移るコマンド(for文のcontinueみたいなやつ)
はあるのでしょうか?
御教授くださいませ。
477nobodyさん:03/06/17 00:40 ID:???
sage忘れスンマソン(;´Д`)
478nobodyさん:03/06/17 00:43 ID:???
>>476
next

あとsageてもスレが下がるわけじゃないんで。
479nobodyさん:03/06/17 00:48 ID:???
>>476
goto

あとsageてもスレが下がるわけじゃないんで。

480nobodyさん:03/06/17 00:50 ID:???
>>478,>>479
即レスありが㌧。早速試してみます。
481nobodyさん:03/06/17 01:02 ID:???
しかし何で一文字づつ表示させたいの?
まさか、CGIで よ う こ そ とか、下らない事やりたい訳じゃないよね。
JavascriptやFlashが無難だと思うけど・・・。
482nobodyさん:03/06/17 01:06 ID:???
だよな
見るほうはさっさと表示されたほうがありがたいだろうに
自分のセンスでおもしろいカッコイイと思ってもみんながそうとは
483nobodyさん:03/06/17 01:08 ID:3tOJ9ih6
皆さん目が悪いようなのでもう一度質問します。

SSIでCGIを呼び出そうとして失敗したときに
[an error occurred while processing this directive]
というエラー文が.sthmlファイルの中に出てくるんですが、
この文章を自由な文面に変更したり出来るんでしょうか?
出来ればリンクタグに変えたいんですが・・・
484nobodyさん:03/06/17 01:10 ID:???
えっと、まずスレタイと>>1をどうぞ。
485nobodyさん:03/06/17 01:12 ID:???
>>483
<!--#config errmsg="?????" -->
486nobodyさん:03/06/17 01:13 ID:QhMbf/ik
globについて質問ですが、

my $file = '/dir/*';
my @list = glob("$file");

このようなイメージでglob内ワイルドカードを
変数化することは可能でしょうか。
487nobodyさん:03/06/17 01:22 ID:???
>>486
>>1を読んで出直せ。答える必要なし。
488nobodyさん:03/06/17 01:22 ID:???
>>486
そのやり方じゃダメなの?

それより、何でスカラー変数をいちいち "" で囲むんだろう。
たまにリストでそれやってハマってる人がいるけど、なんかそういう参考書があるのだろうか。
489nobodyさん:03/06/17 01:29 ID:???
>>483
頭が悪いようなのではっきり言っておきます。
Perlに関係ないだろうが。
490486:03/06/17 02:09 ID:???
いや、ごめんなさい。

$file = '/dir/*';
my @list = <$file>;

はいかないのに

$file = 'dir/*';
my @list = </$file>;

はいったので、すごい疑問に感じ、ここでglobについて
質問させていただきました。
雰囲気を壊してしまいすみませんでした。
491nobodyさん:03/06/17 06:23 ID:???
>>490
<$file>と書いた場合は、$fileがファイルハンドルと解釈されてるだけだよ。
<>演算子は、中身によって行入力になったりグロブ演算子になったりと、紛らわしい。
だからPerl5以降では、glob()を使ったほうがいい。
492nobodyさん:03/06/17 07:06 ID:???
掲示板の記事削除処理において
ファイルを開き、記録された記事番号とパスワードを取りだし
入力されたパスワードと選択された記事をそれぞれ比較して
該当した記事以外を記録しなおすという処理を作ったんですが
いろいろいじってるうちになんだか変な動作するようになりました。
入力したパスワードが正しいとなぜが一番違いの記事のパスワードと比較します。
入力されたパスワードが間違ってると、その記事のパスワードと比較します。
何が悪いんでしょう?
493nobodyさん:03/06/17 07:07 ID:???
foreach $line (@lines) {
$del = 0;
local($no,$key) = split(/,/,$line);
if( ( $FORM{'delete'} eq $key ) ){
if ( $no eq $FORM{'target'} ) {
$del = 1;
}
if ( $del == 0 ) {
push (@line2,$line);
}
}
else {
&error("キーが違います。");
}
}
494492:03/06/17 07:08 ID:???
493も俺です(´∀`;)
495nobodyさん:03/06/17 09:48 ID:???
オブジェクト指向で書いているのですが、ファイルのラッパーのような
ものを作っています。その際、ファイルハンドルなどはインスタンスごとに
違うものにしたいのですが、どのようにすればよいのでしょうか?

滅茶苦茶な例なのですがC&Perlで言うと下のようなイメージでやりたいと思っています
my $seif = shift;
$self->{handle} = fopen( …
496nobodyさん:03/06/17 10:39 ID:???
>>495
IO::File
497>>492:03/06/17 13:30 ID:XeNVFdef
foreach $line (@lines)
{
  $del = 0;
  local($no,$key) = split(/,/,$line);
  if( ( $FORM{'delete'} eq $key ) ){
   if ( $no eq $FORM{'target'} ) {
    $del = 1;
   }
   if ( $del == 0 ) {
    push (@line2,$line);
   }
  }
  else {
   &error("キーが違います。");
  }
}

字下げくらいしろ。
見易さが違うだろうが。

っといいつつ、俺はPerlに関しては初心者だからまだ分からんがな。
今アクセスログやってんねや。んじゃ
498nobodyさん:03/06/17 13:36 ID:???
>>492-493
その書き方はおかしいだろう。
記事番号$noはユニークだろうが、パスワード$keyは同じ値が
ありえるはず。
評価の順番が逆だ。
これでどうだ?

foreach $line (@lines) {
local($no, $key) = split(/,/,$line);
if ( $FORM{'target'} eq $no) {
if ( $FORM{'delete'} ne $key ) { &error("キーが違います。"); }
} else {
push (@line2, $line);
}
}

書き直しただけで、上記は再考の余地あり。
最初のほうで一致しても最後までループ処理が続いてしまって無駄。
499新着:03/06/17 14:12 ID:nJC3WMH6
ホームページはこちら---> http://www.ecopig.jp/comucale/index.htm
500nobodyさん:03/06/17 14:23 ID:???
質問です。
cryptの暗号化についてです。
cryptによる暗号化は、サーバーによって結果が異なるのでしょうか?
自分のローカル環境とinfoseekの鯖では同じ結果になったのに、
友人のFreeBSDの鯖では結果が異なりました。
ラクダ本も見てみたのですが、詳しく載ってないみたいで。

以下がソースです。
#!/usr/local/bin/perl

$salt = 'sa';
$key = 'hogehage';
$crypt = crypt($key,$salt);
print "Content-type: text/plain\r\n\r\n";
print "salt=$salt\n";
print "key=$key\n";
print "crypt=$crypt\n";

ローカルの結果が、
salt=sa
key=hogehage
crypt=saaqOoONNsWPU

友人の鯖での結果が、
salt=sa
key=hogehage
crypt=$1$sa$YaIYjBa3kyQD6Oqo6pfMi.

でした。
もし可能なら、暗号化した後の結果が同じにしたいのですが、
どなたか方法をご存知ないでしょうか?
501nobodyさん:03/06/17 14:34 ID:???
というか、同じになったら暗号化にならないだろ。
502nobodyさん:03/06/17 14:37 ID:???
同じ種と同じキーを使えば、同じ結果になるのがcryptではないんでしょうか?
503nobodyさん:03/06/17 14:40 ID:???
>>500
cryptはOSによって暗号化のアルゴリズムが異なることがある
ttp://hasunuma.pobox.ne.jp/support/cyclamen.cgi?log=perl&tree=r18

こんなのを使う手もあるし
ttp://www.mikeneko.ne.jp/~lab/perl/des/
504500:03/06/17 14:56 ID:???
>503
どうやら友人の鯖ではMD5がなにか関係しているようですね。
ライブラリの紹介もありがとうございました。
試してみたところ、これを利用すれば同じ結果になりました。
ありがとうございました。
505nobodyさん:03/06/17 15:37 ID:in7oUIeX
CSVを開いたあと、各行(@values)について、
$LOCATION[$values[0]] = {
"locationname" => $values[1],

としているのですが、


@locationlist = split(/_AND_/,$in{'locationid'});
#($in{'locationid'}は「1_AND_3_AND_7」のカタチで入ってきます。)
for($i = 0; $i <= $#locationlist; $i++){
  $HtmlLocationList .= $LOCATION[$locationlist[$i]]->{locationname} . "***":
}

で、表示されるのでが「***」の部分だけで、
$LOCATION[$locationlist[$i]]->{locationname}の部分が表示されません。
なぜなのでしょうか?
506nobodyさん:03/06/17 16:03 ID:???
document.write("<font color="#FF9900">◆</font>リニューアルオープンいたしました!");
というものから、「<font color="#FF9900">◆</font>リニューアルオープンいたしました!」を取り出したいのですが、


$JSAll =~ m/document\.write\(\"(.*)\"\)\;)/;

で。$1を得ようとすると、
/document\.write\("(.*)"\);)/: unmatched () in regexp at index.cgi line 34.
といわれてしまいます。
どうしたらちゃんと動くのでしょう?
そもそも、 unmatched ()ってどういう意味なのでしょう?
507nobodyさん:03/06/17 16:37 ID:???
>506
()の数があってない。
板違いだが、1行目のJSすらエラーだな。
508nobodyさん:03/06/17 16:37 ID:AMyzcYWt
$str = 'document.write("<font color="#FF9900">◆</font>リニューアルオープンいたしました!")';
$str =~ s/^\w+\.\w+\(\"(.*)\"\)$/$1/;
509nobodyさん:03/06/17 16:38 ID:???
「2chからきました」ってコメントに書いたら値引きしちゃうよ(^_^)v
↓↓↓
 http://www.dvd-yuis.com/
510nobodyさん:03/06/17 16:41 ID:vHbufOUB
$str = "abcdabcdef";
@array = split(/\t/, $str);

foreach $value (@array){
$flag = 0;
foreach (@result){
if($_ eq $value){ $flag = 1; }
}
if($flag == 0){
push(@result,$value);
}
}

重複した要素を除く処理を作ったんですけど無駄はありますか?
511nobodyさん:03/06/17 16:49 ID:???
>510
ツッコミどころが多すぎてどこからつっこんでいいかわからん。
無駄以前に、思い通りの動作しないだろ。
512nobodyさん:03/06/17 16:51 ID:???
>>506
エスケープしなきゃいけないんじゃないですか?
513_:03/06/17 16:51 ID:???
514nobodyさん:03/06/17 16:51 ID:???
>>512
誤射、すいません。
515nobodyさん:03/06/17 16:52 ID:???
>>510
漏れもそんなに詳しいわけじゃないが、こんなんは駄目か?

$str = "abcdabcdef";
@array = split(/\t/, $str);

foreach $value (@array){
$hoge{$value} = '';
}

foreach $value(keys(%hoge)){
push(@data,$value);
}
516nobodyさん:03/06/17 17:19 ID:???
$a = 'abcdabcdef';
@a = split(//,$a);
for (@a) {
$a{$_} += 1;
}
@a = sort keys %a;
517nobodyさん:03/06/17 17:26 ID:vHbufOUB
>>511
いえ、します。

>>515-516
ちょっと試してみます。
518nobodyさん:03/06/17 17:33 ID:???
>511
@resultはどこから沸いて出たんだ?
$strにタブがないのにタブで区切ってどうするんだ?
519nobodyさん:03/06/17 17:33 ID:???
>518 =~ s/>511/>510/;
520nobodyさん:03/06/17 17:34 ID:UJvendEv
>>510
その処理が、全体のパフォーマンスに影響するのかな?
影響しないなら、考えるのが無駄。
521nobodyさん:03/06/17 17:50 ID:vHbufOUB
>518
@resultは宣言してないだけ、
タブが勝手に消えるのは2ちゃんねるの掲示板の仕様

>520
パフォーマンスのこともあるけど、
もっといい方法があるならそれを見て勉強になるし。
522nobodyさん:03/06/17 17:53 ID:GIfprx1b
質問です。
サブルーチンのなかで、サブルーチン書くのはなんか悪いことありますか?
グローバル変数つかうのと、一連の処理をすべて、同じブロックに入れるのはどれがいいでしょうか?
523nobodyさん:03/06/17 18:16 ID:vgoejlvM
すみませんが、
正規表現で使う「=~」の「~」つまりチルダですが、これってチルダでいいですか?
というのは私の持っている本ではこの波が真ん中に来ていて、チルダに見えないんですよ。
実際これはチルダで委員ですか?
524nobodyさん:03/06/17 18:27 ID:???
>522
サブルーチンの中にあるサブルーチンを
どこか別のサブルーチンから呼び出す時に
面倒だ罠。
525nobodyさん:03/06/17 18:28 ID:???
>>523
それはフォントの問題。どうしても心配ならキャラコード調べてみれば?
526nobodyさん:03/06/17 18:28 ID:???
>>524
その同じブロックにある中から以外から呼ぶことはありません。
それならどうでしょうか?
527506:03/06/17 18:31 ID:???
>>507-508
ありがとうございます。

ところで、

$srt = 'document.write("<font color=#FF9900>◆</font>ホームページがリニューアルオープンいたしました!")';
$str =~ s/^\w+\.\w+\(\"(.*)\"\)$/$1/;

print $str;
とやったのですが、
なんにもprintされません。確かに正規表現はあってるかと思うのですが・・・・・
わかるかたいらっしゃいますか?
528everybody:03/06/17 18:44 ID:???
>>510
my %temp;
@a = grep !($temp{ $_ }++), @a;
529nobodyさん:03/06/17 18:56 ID:???
>>526
local *hogehoge = sub {
return shift ** shift;
};
530523:03/06/17 18:59 ID:SJassQej
チルダでよかったんですね。
動きました。
別のところでエラってました。スマソ
531nobodyさん:03/06/17 19:00 ID:???
ttp://ritsumei.s20.xrea.com/x/

ここの掲示板のソースみてみれ・・・ワラタ
532nobodyさん:03/06/17 19:24 ID:???
チルダではなくティルデ
533nobodyさん:03/06/17 19:48 ID:???
よくBEGIN not safe after errors--compilation aborted at index.cgi line 48
っていうエラーを見るんですが。

BEGIN not safe after errorsってどういう意味ですか?
534nobodyさん:03/06/17 19:58 ID:???
>>529
その手があったか!?ありがとうございます。
それを、ブロック内で呼び出せば、その中の変数使えますよね。
535670=676:03/06/17 20:31 ID:???
>>527
自分の書いたコードをよーく見てごらん。
ちなみに、「"」はメタ文字じゃないから、「\」はあってもなくてもいいよ。
536nobodyさん:03/06/17 20:39 ID:???
535です。↑HNは前に別スレに書いたものが残っていただけです。

537525:03/06/17 21:58 ID:???
>>527

10回*30秒くらいみたのですが、わかりませんでした・・・
どうみても正しいようにしか見えないのですが、
どうしてこんな結果になるのでしょう・・・

どうか教えてください。。。
538nobodyさん:03/06/17 22:13 ID:???
>>537
--- test.p ---
$srt = 'document.write("<font color=#FF9900>◆</font>ホームページがリニューアルオープンいたしました!")';
$str =~ s/^\w+\.\w+\(\"(.*)\"\)$/$1/;
print $str;
---
> perl -wc test.p
Name "main::srt" used only once: possible typo at test.p line 1.
test.p syntax OK
>
539nobodyさん:03/06/17 22:24 ID:???
540458:03/06/17 23:41 ID:???
ほんとしつこいけどお願いします。
おっしゃられたとおり、私の環境がおかしいにしても、mt-load.cgiのは正常に表示されるんです。。
だれか、教えてくださいまし・・・・
541nobodyさん:03/06/17 23:48 ID:???
>540
そのしつこさを別の方向に向ければいいのに。
正常に動くスクリプトがあるなら、いらない部分をガンガン削って、どの部分でそれを表現してるか調べてみるとかあるだろ。

レス遡るのもマンドクセ。
542nobodyさん:03/06/17 23:48 ID:???
>>537
ソースを1文字ずつ声に出して読んでみれば分かる。

>>540
しつこいよ。
そのソースを解析すりゃいいだろう。
543座敷荒氏:03/06/17 23:50 ID:NkO+IDyD
Perlでファイルの存在確認をして
Shellに結果を渡すようにしたいのです。

Perlでtestコマンドを実行してから結果を
どうやってShellに引き渡せばいいのでしょうか?

最終的には1ではなく100や255エラーを返すようにしたいのですが。
544525:03/06/18 00:00 ID:???
>>538
それは、たぶんですが、
文法は間違いないということですよね?


なぜ、$strが空になってしまうのか、教えていただけませんか?
(それともデバッガになれてないので勘違いしてるのかしら)
545nobodyさん:03/06/18 00:05 ID:???
この板ってカスばっかだな
あってもない自分の脳内知識をお互いに自慢してる。
横から見てるとハライテーヨ
546nobodyさん:03/06/18 00:14 ID:???
>>543
exit $error_number;
547nobodyさん:03/06/18 00:24 ID:???
>>544
Name "main::srt" used only once: possible typo at test.p line 1.
(main パッケージの srt という名前の変数は一度しか使われていません。
誤字の可能性があります。(test.p の 1 行目))
548547:03/06/18 00:29 ID:???
>>544
s/の変数//;
549nobodyさん:03/06/18 00:39 ID:???
>>544
なぜって……さっきからみんな指摘してるよ。
550nobodyさん:03/06/18 00:41 ID:???
(≧∇≦)ぶぁっはっはっ!!まだ気がついてなかったのか

(・∀・)ノ" またあとで見に来るよん
551506:03/06/18 01:07 ID:???
ああああ、情けない。。。。
しかし、デバッガって便利なんですね。使ってみよう。
いままでKCatchしか使ってなかった。
552nobodyさん:03/06/18 01:15 ID:???
|_・ ) ワカッタノカナ?
553506:03/06/18 02:39 ID:???
すいません、もう1ついいですか?
実は、「document.write("<font color=#FF9900>◆</font>ホームページがリニューアルオープンいたしました!")';」
というのは外部jsなんです。(SSIが使えないので、SSI Includeみたいに使おうとしている))

なので、↓の1行目で、jSファイルを読み込んでその文字列まるまるを返してます。
    $topics = &responce_filesubstance($PathTopicsJS);
    jcode::convert(\$topics, sjis);
    $topics =~ s/^\w+\.\w+\(\"(.*)\"\)$/$1/;
ところが、そうすると、
$topicsが「document.write("<font color=#FF9900>◆</font>ホームページがリニューアルオープンいたしました!")';」
のままで置換してくれなくなってしまいました。どうすればいいのでしょう?

一応、responce_filesubstanceも書いておきます。
sub responce_filesubstance{
    my($PathFile) = $_[0];
    my($filesubstance);
    #ファイルを開いて読み込む
    open (IN,$PathFile) or die "cannot open $PathFile:$!";
         flock(IN, 1);
            while($LineTmp = <IN>){
                $filesubstance = $filesubstance . $LineTmp;
            }
        close IN;
        &jcode::convert(\$filesubstance, "euc");
    #結果
    return $filesubstance;
}
554nobodyさん:03/06/18 02:45 ID:???
>553
なんで外部JSをそのまま使わないの?
SSIなくても普通に使えるでしょ。
555506:03/06/18 02:52 ID:???
>>554
JSの中身を更新できるスキル?があれば十分なのですが、
HTML知らないお客さんに納品するものなので、
外部JSの中身をコンパネで動作できればなと、。
556nobodyさん:03/06/18 03:37 ID:???
よくわかんないけど
置換する直前に$topicsを一度はき出して中身を確認したら?

eucに変換したモノをまたShift_jisに変換するのって意味あるのん?
557nobodyさん:03/06/18 03:42 ID:???
>>555
>お客さんに納品
プロですか!?それで。
厨房かと思ってた。
558492:03/06/18 06:06 ID:???
>>497
半角スペースで入れたら字下げ消えた(´Д`)

>>497
ありがとう、確かに処理の順番逆だったね(´∀`)
で、やってみたころ
相変わらずエラー表示が出ます
変数を表示させたところ
パスワードはマッチするようになりましたが
559nobodyさん:03/06/18 09:34 ID:???
半角スペースやタブが消えちゃうのはなぜ ?
消えないようにするには、どうすればいいの ?
560nobodyさん:03/06/18 10:18 ID:???
   TEST
561nobodyさん:03/06/18 10:19 ID:???
nbsp;で入るようだ。
全角でもいいけど、えらっちゃうしね。
スペースを 変換してくれれば楽なのに…。
562555:03/06/18 10:44 ID:???
>>557
すまそ。で、最近そんなもんじゃない?前任者はもっとだめだめだった。
563nobodyさん:03/06/18 10:54 ID:???
ふと思ったのですが、JacaScriptで、SSI INCLUDEみたいに、
ファイルを読み込んでくれる関数はないですか?
564nobodyさん:03/06/18 11:42 ID:???
>563
JavaScriptスレで聞いてこい。
565nobodyさん:03/06/18 15:43 ID:???
>>563 JacaScript ?

>>563 JacaScript ?

>>563 JacaScript ?
566nobodyさん:03/06/18 15:57 ID:yTFW11Gl
掲示板などのTDタグでWIDTH=”80”と指定して、そこに半角英数字を80
ピクセル以上書くと折り返し表示してくれなく、80ピクセル以上に
テーブルが伸びてしまいます。
全角文字や半角カナ文字は80ピクセル以上だと自動改行してくれるのに
半角英数字だと改行してくれないのはなぜなのでしょうか?
また、改行できる方法を知ってる方がいましたら教えてください。
567nobodyさん:03/06/18 16:01 ID:???
>>566
あのさあ、何でこのスレで質問したのかをまず教えてくれない?
568nobodyさん:03/06/18 16:02 ID:???
>>566
板違い
569566:03/06/18 16:03 ID:???
>>567
掲示板などのスクリプトの中にperlで
半角英数字が連続したときに自動改行してくれる
構文など有るんでしょうか、と書きたかったのです。すみません。
570DBMのBSD DB(Berkeley DB)はMySQLより早いのか?:03/06/18 16:04 ID:kZ9NfMGd
http://www.ecopig.jp/comucale/index.htm
上記ダウンロードより
DBMのフィールドを自分で作る(分割する)と、
Berkeley DBは、MySQLより早いのか?
この件についてどなたか、教えて下頂けませんか?
571nobodyさん:03/06/18 16:05 ID:???
>>566
板違いも甚だしくてワロタ
<td style="width: 80px;table-layout:fixed;">
とか。
ブラウザ依存だから期待せぬように。
572 :03/06/18 16:09 ID:???
$_="TooLongLongLongString";
s/([a-zA-Z0-9\-_\?\.]{5})/$1\n/g;

かな。この場合5文字で改行。
573nobodyさん:03/06/18 16:34 ID:???
違うと思うが
574nobodyさん:03/06/18 16:46 ID:???
>>569
2バイト文字が混在した文字列を途中で分割するのはわりと面倒なので、
そういうのは普通ブラウザの表示に依存させてしまうことが多い。
んで、>>566の質問については板違いにつき、ここでは答えない。
575nobodyさん:03/06/18 17:45 ID:???
system("ls");
で、得られたファイル名前、ディレクトリ名前を配列に代入したいんですが
どうすればいいでしょうか?
576nobodyさん:03/06/18 18:21 ID:???
>>575
split(/\n/,`ls`);
577nobodyさん:03/06/18 19:49 ID:fCn6DpDd
Cookieについてなんだけど、次の簡単なコードなんだけど、
IEだけが機能してくれない、Opera、Mozilaは問題ないんだけど、
誰かわかりません?、オナガイします、マジでひとつ。


#!/usr/bin/perl -w

print <<"END";
Content-type: text/html
Set-Cookie: DATA=0123456789; expires=Mon, 30-Dec-2020 23:59:59 GMT


END

foreach $var (sort(keys(%ENV))) {
$val = $ENV{$var};
$val =~ s|\n|\\n|g;
$val =~ s|"|\\"|g;
print "${var}=\"${val}\"<br>\n";
}
578nobodyさん:03/06/18 19:57 ID:???
while(1) {
print "ぬるぽ\n";
}
こんな感じに半角でインデントして、
>>578
自分へのアンカーをつけてポップアップで読む
579nobodyさん:03/06/18 20:10 ID:???
>>577
>>1に書いてある3つの手順をちゃんと踏んでおくようにね。
あなたの場合、1番目と3番目が書いてない。
580nobodyさん:03/06/18 20:22 ID:???
>>577
> Content-type: text/html
不要。
よってPerlとは関係なし。
逝って良し。
581443:03/06/18 20:24 ID:???
えっと、>>443です。
みなさん色々ありがとうございます。
2日間調べてやっと原因が解りました。
>>463さんが言ったようにサーバー側の設定の問題でした。
$ip = $ENV{'X_FORWARDED_FOR};に変えたら
ちゃんと違ったIPが取得できるようにました。
$useragent = $ENV{'HTTP_USER_AGENT'};でユーザーエージェントも
取得したんですが、私はWindows xpなのにWindows NTになっていました。
こういうもんなんでしょうか?
582nobodyさん:03/06/18 20:25 ID:???
>>570
どっちが速いとかの問題じゃない訳で、設計しだいな訳で、Perlと関係ない訳で。
583nobodyさん:03/06/18 20:29 ID:???
>>581
Operaだと2000とXPがちゃんと認識されます。
IEだと、2000はNT5.0、XPがNT5.1と識別されます。

って言う話だ。
確かめたわけじゃないが。
584 :03/06/18 20:39 ID:???
http://dream.lib.net/room/
ここで配布してあるチャットの個人会話を覗き見する方法わかる?
ファイル名はわかってるんだけど、拡張子がCGIにされてるから見えない…
585_:03/06/18 20:45 ID:???
586nobodyさん:03/06/18 20:48 ID:???
>>584
無理。
587nobodyさん:03/06/18 20:56 ID:???
>584
FTPでログを見る。
管理人にしかできないがな。
588nobodyさん:03/06/18 21:21 ID:???
>>584
クラックする方法があったぞ、確か
589nobodyさん:03/06/18 21:50 ID:???
てきすとの中にURLがある場合、URLに自動でリンクを張るにはどうすればいいのでしょうか?
(2chみたいに)

なお、テキストの中には、2つ以上URLがある可能性もあります。
590nobodyさん:03/06/18 21:59 ID:???
>>589
置き換えろ、以上。
591nobodyさん:03/06/18 22:01 ID:???
>>589
置き換えろや。
最後にgつけろ
592nobodyさん:03/06/18 22:07 ID:???
>>589
Perlメモ嫁
593nobodyさん:03/06/18 22:22 ID:8AjElXD0
コーディングのお供に
http://mypage.odn.ne.jp/home/dongrico
594543:03/06/18 22:45 ID:???
一日じっくり調べてみました。

system("/usr/bin/test -f /path/file"); #ファイル存在確認コマンド

これでfileという名前のファイルの有無を確認できますよね?
595nobodyさん:03/06/18 23:01 ID:???
>>594
実際に試せ。自分の目で確かめろ。
ついでに「ファイルテスト演算子」でググれ。
596nobodyさん:03/06/18 23:02 ID:???
@aray = qw[12\tあ 5\tい 3\tう 4\tえ 1\tお];
↑のような配列があった時これを "12 5 3 4 1" の部分を見て
下のような数の大きい順にソートするようなスマートな方法は無いでしょうか?
@array = qw[1\tお 3\tう 4\tえ 5\tい 12\tお];


597543:03/06/18 23:06 ID:???
>>595
そうしたいんですけど家に環境ないんです。
・゚゚・o(iДi)o・゚゚・。

検索はしてみますね~♪
ありがと~

他にも助言お願いします。
598nobodyさん:03/06/18 23:15 ID:???
>>597
`/usr/bin/test -f /path/file`

backtick
599nobodyさん:03/06/18 23:42 ID:???
ローカルでは問題無いのですが、サーバにアップしてテストすると、
余計な改行コードが加えられてしまいます。
お願いします。

$match = 0;
open(votelog,"+<vote.log");
@votelog = <votelog>;
$last = @votelog + 0;
for($num=0;($num<=$last)and($match==0);$num++){
($name) = split(/\,/,$votelog[$num]);
if($namekey eq $name){
$votelog[$num] =~ s/\n//;
$votelog[$num] =~ s/\r//;
($name,$comment,$votenum) = split(/\,/,$votelog[$num]);
$votenum = $votenum+1;
$votelog[$num] = "$name,$comment,$votenum\n";
$match = 1;
}
}
seek(votelog,0,0);
print votelog @votelog;
close votelog;
600596:03/06/18 23:53 ID:???
>>596
文字が含まれてても普通に
@array = sort {$a <=> $b} @array;
でやってくれるんですね。。
では↓な場合にスマートに数字の大きい順で
ソートする方法あればお願いします。
@aray = qw[a\t12\tあ b\t5\tい c\t3\tう d\t4\tえ e\t1\tお];
601nobodyさん:03/06/19 00:03 ID:???
>>599
何も言わず氏ね
602543:03/06/19 00:25 ID:n1s+2eOn
家のRedhatでやってみました。
以下のどちらの場合もだめでした。

system("/usr/bin/test -f /path/file"); #ファイル存在確認コマンド
system(`/usr/bin/test -f /path/file`); #ファイル存在確認コマンド

どうしてでしょう?
ご助言くださいませ。
syntax error near unexpected token `system(上記)'
と表示されてしまいます。
603nobodyさん:03/06/19 00:29 ID:???
>>602
確かに test コマンドもシェルではファイルテストに使うが、
Perlerなら

-e "/path/to/file" and print "存在したポ\n";
604nobodyさん:03/06/19 00:29 ID:???
>>600
正規表現使いなさいよ。
605nobodyさん:03/06/19 00:30 ID:???
606nobodyさん:03/06/19 00:31 ID:???
>>602
なあ、なんでsystemなんか使うわけ?
しかもそのリスト・・・
607nobodyさん:03/06/19 00:41 ID:???
>>602
うちのActivPerlでも駄目でありました
608492:03/06/19 00:44 ID:???
謎が解けました。
ループ中にエラー処理はさむと
比較しなくていいものまで反応してエラー出してました。
パスワード間違いの場合はリロードさせる(何もしない)事で回避しましたが
エラー表示やっぱ出したいな……。
609nobodyさん:03/06/19 00:51 ID:???
>>608
それは比較のやり方が間違ってるだけだろう
610nobodyさん:03/06/19 00:53 ID:???
>>597
用意しろ。最低限の義務だ。

>>599
「chomp」や「binmode」で調べろ。あとこれ読め。
ttp://www.din.or.jp/~ohzaki/perl.htm#CRLF_Unify

>>600
print join '/',
map $_->[0],
sort { $b->[1] <=> $a->[1] }
map [ $_, /\\t(\d+)\\t/ ],
@aray;
611543:03/06/19 00:55 ID:???
OSのコマンドを使うにはsystemコマンドと本に書いてあったものですから・・・
いま603さんにいわれたとおりに

#! /usr/bin/perl
-e "/path/path/ファイル名" and print "ok\n";

でokが表示されました。
ありがとうございました。
Perlerっていうのもカッコイイ(゚∀゚)~

やっと次に進めます。
まだとっかかりにすぎないけど
がんばります!
612543:03/06/19 00:57 ID:???
>>610
Linuxですが用意しました。
本番機はHP-UXなのですが
PerlのVerが同じ5なら問題ないですよね?
613543:03/06/19 01:20 ID:n1s+2eOn
>>603
あれ?
「-e」というのは「test -e」とはまったく別なんでしょうか?
ファイルが1つの場合は611で成功したのですが、複数のファイルの存在確認をする必要があるため、
if文で一つでもファイルが確認できなかった場合にはエラーを表示するようにしたいのですが。

ファイル存在確認フロ-(下手でごめんなさい)

ファイルA --
  y|    n |
  ↓ |
ファイルB --
  y|    n |
  ↓ |
ファイルC --
  y|    n |
  ↓ ↓
正常終了 異常終了
exit(0)    exit(100)
614603:03/06/19 01:26 ID:???
for (@files){
        -e $_ or die;
}
615596:03/06/19 01:32 ID:???
>>610
どうもありがとうございます。

が、思った結果とはちょっと違うです。。
しかしなんとなくスマートに書く方法がわかったような気がします。
616543:03/06/19 01:44 ID:???
>>614
ありがとうございます。

さらに@filesで指定したファイルがすべてあった場合には
exit(0)で抜けて、足りなかった場合にはexit(100)で抜けるような
if文を加えることはできませんか?
617603:03/06/19 01:47 ID:???
こう?

for (@files){
        -e $_ or exit(100);
}
exit(0);
618543:03/06/19 02:04 ID:???
>>617
あ、できてます!
どうもありがとうございます\(^▽^)/
ただ上記だと「-e $_ or exit(100);」の方が
@filesが存在した場合に返す終了ステータスですよね?
exit(100)はファイルがない場合の異常終了ステータスにしたいので
ご教授頂いたexit(100)とexit(0)を入れ替えればよろしいですかね?

@filesの部分は本でわかっていたのですが
「-e」や「$_」というのはまったくどういうものか
わからなかったので…
619603:03/06/19 02:07 ID:???
入れ替えなくていいと思うが・・・
まア、実際に試せばわかるけど
620nobodyさん:03/06/19 02:17 ID:???
>>618
自分で調べようとかいう気はないようだな。
>>595でも「ついでに「ファイルテスト演算子」でググれ。」とレス
もらってるのに。
621543:03/06/19 02:20 ID:???
>>619
あ、本当だぁ。
ごめんなさい。完璧でした。
本当にありがとうございましす。

これでファイルの存在確認の方は
終了コードをシェルに渡すことができると思うので
完璧みたいです。

今度はファイル削除…
同じ要領でいいのだろうけど
そのまえに「-e」や「$_」を理解しなくては…
622543:03/06/19 02:24 ID:???
>>620
いえ、調べました。
すぐにひっかかったページをみると
一見してtestコマンドのようにみえたので
「-e」はtest -eかと思って、できるだけ略さずに書こうと思ったら
×でした。

それでtestコマンドではないのだろうと考えてお願いした次第です。
623nobodyさん:03/06/19 03:14 ID:???
-e が他の予約語と対等だとは、普通思わん罠
624nobodyさん:03/06/19 03:30 ID:???
>>623
だから「ファイルテスト演算子」という言葉が出てきたのだが。
入門本ばかり眺めているんだろうな鬱。
625nobodyさん:03/06/19 03:31 ID:???
スペースだけに一致する正規表現はスペースそのものだけしかありませんか?
626nobodyさん:03/06/19 03:40 ID:???
\s
627nobodyさん:03/06/19 04:10 ID:???
>>625
/^ +$/ でも /^\x20+$/ でも /^\040+$/ でも /\Qスペース\E/ でも
ご自由に。

>>626
\s == [ \t\n\r\f]
628nobodyさん:03/06/19 04:33 ID:???
>>612
5 と言っても色々あるし、Linux でも Win でも何でもいいけど、
少なくとも手元のテスト環境で問題なく動くようになってから
本番機にもっていく事が大事。
629nobodyさん:03/06/19 11:39 ID:???
すみませんが、どなたか、Perlで2つのファイルの差分を抽出する
方法をお教え下さいませ。

はてなアンテナ(ttp://a.hatena.ne.jp/)でやっているような、
htmlファイルの中の更新(追加or変更)された部分だけを抜き出して
来る方法です。定番的な一番効率の良いやり方はないでしょうか?
630nobodyさん:03/06/19 11:43 ID:???
631nobodyさん:03/06/19 15:15 ID:???
すみませんが、perlでアクセス解析作っているのですが、
ブックマークと、URL直打ちを見分ける方法ってありませんか?
JSの力を借りなければなりませんか?
632nobodyさん:03/06/19 15:26 ID:???
>>631
IEならfavicon.icoを読みにいっているかも。
って事で板違い。ヴァー。
633nobodyさん:03/06/19 15:33 ID:???
>>632
板違いですか。
スマセン
ありがとうございました
634543:03/06/19 20:19 ID:???
こんばんは。
昨夜はありがとうございました。
家のLinuxで試して成功したので
本番機でテストしたのですが見事に失敗…
以下のように表示されていました。

syntax error near unexpected token `$_ or'

慌てて本番機のPerlのVersionをみてみたらVersion 4でした。
家のテスト環境はVersion 5だったのですが、これが原因でしょうか?

手持ちの本はVersion 5を前提に書かれていますが
エラーを返してきた部分については
特別Versionについては触れられていませんでした。
635nobodyさん:03/06/19 20:29 ID:???
>>634
いまだに、4のサーバなんてやめちまえ!
636nobodyさん:03/06/19 20:48 ID:???
Perl4なんてまだあるのかよ。
ある意味驚きだな。
637543:03/06/19 20:48 ID:???
>>635
さ、さすがにそれは…
やっぱりVersion 4は「$_」に対応していないんですか?
638nobodyさん:03/06/19 21:04 ID:???
>635-636
俺のプロバスペースもPerl4だぞ。

>637
$_は使える。
639nobodyさん:03/06/19 21:04 ID:???
>>638
やめちまえ!
ていうか、myもつかえないんだよね?
640nobodyさん:03/06/19 21:07 ID:???
>639
うん、myは使えない。
かなり不便。
$a ||= 1;もできない。
省略形はかなりピンチかもしれないから、「-e $_ or exit(100);」は
「unless(-e $_){exit(100);}」とかにした方がいいかもしれない。
641nobodyさん:03/06/19 21:13 ID:???
>>640
and/or/not 演算子は Perl4 には無かったような記憶が。
if/unless 修飾子は使えた筈。
あと組み込み関数も split とか括弧を省略出来ないものが多い。

一番いいのは赤ラクダ本を手に入れる事だが、
とりあえずコレ読んどけ。>543
http://www.namazu.org/~tsuchiya/perl/info/perl-ja_124.html
642nobodyさん:03/06/19 21:34 ID:???
4から5への改良点は、痒いところに手が届く感じのが多いから、
5に慣れてから4コンパチで書くのは辛いな
643nobodyさん:03/06/19 22:58 ID:7O2enBqm
質問。
Perlで
SDBM_Fileを使ってるんですけど、
MDBM_Fileにそのまま変えられますか?
SDBMになくてMDBMにある制限みたいなものってあるでしょうか?
644nobodyさん:03/06/19 23:06 ID:QrRxrm0K
sub aaa{
my $abc = 255;
&bbb(\$aaa);
}

なんか変になるんですけど、これって有効にならないんですか?
645nobodyさん:03/06/19 23:06 ID:QrRxrm0K
間違えた。

sub aaa{
my $abc = 255;
&bbb(\$abc);
}

これ。
646nobodyさん:03/06/19 23:13 ID:7O2enBqm
>>645
何が変になるのかわからん限りはなんとも・・・。

きたれ!
http://ex.2ch.net/test/read.cgi/entrance/1055942024/
ファイアーエンブレム風のネトゲツクローヨ
647nobodyさん:03/06/19 23:14 ID:???
>>646
なんでここでそのアドレスが・・・
648nobodyさん:03/06/19 23:17 ID:???
>>655
myしてある変数のリファレンスは無理だよ
649nobodyさん:03/06/19 23:25 ID:7O2enBqm
>>647
なにか心当たりが?
650 ◆hMJAPH9PWA :03/06/19 23:26 ID:???
>>645
何の問題もないように見えるけど?
それが間違っていると思うのなら、間違いなく何かを勘違いしているよ。

>>648
それは問題ない。
というか、出来なきゃ困る。
651603:03/06/19 23:28 ID:???
>>645
sub bbb{ } が定義されてないから当然
652nobodyさん:03/06/19 23:33 ID:???
>>649 ROMってるよ。がんがれ、某コテくん(?)
653nobodyさん:03/06/19 23:34 ID:???
sub bbb{ } の中身がわからんとなぁ
654恐らく:03/06/19 23:37 ID:???
sub bbb
{
print "なんか変\n";
}
655645:03/06/19 23:43 ID:???
すみません。
どっか他の所で重大な間違いをしてたっぽいので、しっかりデバック取ってきます。
656543:03/06/20 00:38 ID:???
>>640
できました。
下の記述でfileが無い場合は100で
fileがある場合は0で終了するようになりました。

------------------------------
#! /usr/bin/perl
@files = ("/home/path/file",);
for (@files){
unless(-e $_){exit(100);
}}
exit(0);
------------------------------

今度はファイル削除用のを作ります。

これまで相談して気になるのは、
なぜ皆さんがsystemコマンドを使わなかったのか
ということです。

お話していなかったのですが、実際のオペレーションでは
ファイル存在確認の後、ファイル削除をおこなうので
systemコマンドであればcommandを書き換えるだけで済むのかなぁと。

なにか理由があるのでしょうか?
657nobodyさん:03/06/20 00:45 ID:???
>>656
簡単に言えば、systemを使わないのは特に必要ないから

それとちょっと気になるんだけど

>>621に書いてあった
>これでファイルの存在確認の方は
>終了コードをシェルに渡すことができると思うので

シェルという語が出てきてるけど、どんなことやってるの?
シェルからperlプログラムを実行して戻り値を受け取るわけ?
658nobodyさん:03/06/20 01:20 ID:???
お前ら>>1読んでんのか?

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

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。


これから質問する奴は

1:○○
2:△△
3:××

と書け。それ以外は皆放置しろ。
どうせ>>1も読まない奴はスレ違い・板違いがほとんどだしな。
659nobodyさん:03/06/20 01:24 ID:2h2vJ76G
すいません。質問させてください。

1:○○
2:△△
3:××
660nobodyさん:03/06/20 01:45 ID:???
あ、ぼくもいいですか?

1:○○
2:△△
3:××
661543:03/06/20 02:40 ID:???
>>657
>シェルという語が出てきてるけど、どんなことやってるの?
>シェルからperlプログラムを実行して戻り値を受け取るわけ?

まさしくそのとおりです。
657さんのいうとおりの動作をさせたいのです。

それを前提にしても
汎用性という意味(?)でsystemコマンドよりも
656記載のもののほうがよろしいでしょうか?
662nobodyさん:03/06/20 03:31 ID:???
 なあ、いいだろ
1:○○ だめよ、こんなところで
2:△△
3:××
663nobodyさん:03/06/20 04:00 ID:PsiyBD1J
すいません。
$bst .= 'W' unless($bst =~ /W/);
の意味が分から無くて困っています。
CGIゲームで、このプログラムにより、
攻撃力が1だけ上がるのですが、
10位上げたいので。
ポイントは戦闘中だけ上がると言う事なので、
難しいんだと思いますが。
664nobodyさん:03/06/20 04:04 ID:???
ゲームは分からないけど、

$bstがWにマッチしなければ、$bstにWを追加
$bst .= 'W' unless($bst =~ /W/);
665nobodyさん:03/06/20 05:04 ID:???
1:自分はエロエロ画像が見たい。
2:それでグーグルとか使って検索をやってみたが・・・
3:それだとなぜかグロ画像ばかりが出て上手くイかなかった。
666nobodyさん:03/06/20 06:09 ID:???
>>665
解決:一つエロエロサイトを見つけて、そこのリンク辿ってがんばれ。
マジレス:くだらんネタはよせ。
667nobodyさん:03/06/20 07:53 ID:???
>>665
> 1:自分はエロエロ画像が見たい。
> 2:それでグーグルとか使って検索をやってみたが・・・
> 3:それだとなぜかグロ画像ばかりが出て上手くイかなかった。
print (1:!~ /○○/ || 2:!~ /△△/ || 3:!~ /××/) ? 'スルー\n' : '回答してみる\n';

# 結果表示
スルー

↓次の質問ドゾー
668nobodyさん:03/06/20 08:28 ID:???
※ 俺脳内処理 ※
if (0) {
  > 1:自分はエロエロ画像が見たい。
  > 2:それでグーグルとか使って検索をやってみたが・・・
  > 3:それだとなぜかグロ画像ばかりが出て上手くイかなかった。
}
669nobodyさん:03/06/20 14:41 ID:CDccIPBD
以下の、 HTML::Templateで、ループ部分がまったく表示されてないのですが、
どこが悪いのかわかりませんでしょうか?

for ($i=0;$i<=$num;$i++){
  $ORG{$i} = {
    "orgname" => $values[$orgmaster_name2seq{orgname}],
    "number_per_class_max" => $values[$orgmaster_name2seq{number_per_class_max}],
    "langlist" => $HTMLlanglist,
  };
}

my $template = HTML::Template->new(filename => './tmpl/search_result.html');
$template->param(
  ORGLIST => \@ORG
);
print $template->output;
---------------------------------------------
以下、テンプレファイル。
<!-- TMPL_LOOP NAME="ORGLIST" -->
  <!-- TMPL_VAR NAME="ORGNAME" --></a></td>
  <!-- TMPL_VAR NAME="LANGLIST" --></td>
  <!-- TMPL_VAR NAME="NUMBER_PER_CLASS_MAX" --></td>
<!-- /TMPL_LOOP -->
670nobodyさん:03/06/20 15:00 ID:59oEJQW+
下のようにしてクッキーを書いたのですが、
cookies フォルダの中に格納されません。

クッキーの有効期限を指定していないからでしょうか?
とするとどこにクッキーの情報は格納されているのでしょうか?

print "Set-Cookie: name=$id; \n";
671nobodyさん:03/06/20 16:34 ID:Me43kE/L
http://www3.biwako.ne.jp/~nobuaki/webcal/

で、時間を1分単位にしようとしてるのですが、まったく分かりません。
いくらCGI内を探しても見つからず・・・・・
教えて頂けませんでしょうか?
672nobodyさん:03/06/20 19:00 ID:???
>>670

printしてるのがヘッダ部分ではない、に1票
673nobodyさん:03/06/20 19:12 ID:???
>>671
http://pc2.2ch.net/test/read.cgi/php/1047806915/
のほうがいいんじゃん?
674669:03/06/20 19:14 ID:???
>>669なんですが、
$iが増えてるのに、$#ORGが、最終的に-1になってしまってます・・・
なぜなんでしょう?
675nobodyさん:03/06/20 19:31 ID:???
>>673
既にそっちに書いているもよう
マルチだから相手にすんな
676nobodyさん:03/06/20 19:35 ID:???
>674
[]と{}の違いわかる?
677nobodyさん:03/06/20 20:58 ID:kJiV021K
webprogじゃないんだけど、perl2exeでfile::copy使った
人います?。コンパイルはできるんだけど実行の時にあれやら
コレやらが足りないっていわれるんだよね。
つーか、いまいちよくわかんないなぁperl2exeって。
678nobodyさん:03/06/20 21:01 ID:1Z33Vqhm
一日たった110円であなたのお店やホームページの宣伝をします!

貴方のお店&サイトを効果的に宣伝できます!
お店の足取りが悪い・・・。私のサイトにはあまり人が来ない・・・。などお悩みの方は、
ぜひおすすめです。手軽&簡単しかも日本中に宣伝できますので、
大幅なアクセスアップが期待できます。

[料金について]
1日110円で宣伝&クーポン券の発行が出来ます。
年間契約で申込された場合、40,000円になります。
6ヶ月契約で申込された場合、25,200円になります。
3ヶ月契約で申込された場合、12,600円になります。

http://www.c-gmf.com/h17103.htm
ぜひ一度お試しになってみてはいかがでしょうか?
679nobodyさん:03/06/20 22:06 ID:Vg4M86DU
カスみたいな質問ですが・・・


#おはよう
#こんにちわ
お元気ですか?
#こんばんわ
おやすみなさい


と中に書かれているテキストの中の文字を、改行を<br>に変換して、
#で区切って配列に入れたいのですが・・・。
どうすればできるのでしょうか・・・( ・ω・)
680nobodyさん:03/06/20 22:14 ID:???
>>679
内容もさることながら、質問の仕方もカスのような気がしますが。
1. \nを<br>に変換する。
2. splitにて、#区切りの配列を生成する。
3. shiftする。
のような手順でしょうかね。
681nobodyさん:03/06/20 22:18 ID:jiB8qm8t
>>679

$text = <<'_END_';
#おはよう
#こんにちわ
お元気ですか?
#こんばんわ
おやすみなさい
_END_
$text =~ s/\n/<BR>/g;
@text = split(/#/, $text);
682679:03/06/20 22:31 ID:Vg4M86DU
>>680
スイマセン、精進しまつ(;;)

>>681
ナルホド!!   ・・・と思ってやってみたのですができない・・・。

$message = "./aisatu.dat";
open(FILE,"$message");
$text = <FILE>;
$text =~ s/\n/<br>/g;
@text = split(/#/,$text);
print "@text\n";

一行目の文字列しか出力されないです・・・( TÅT)
683nobodyさん:03/06/20 22:33 ID:jiB8qm8t
>>682
$text = <FILE>;
これだと、1行しか読めません。
$text .= $_ while(<FILE>);
でいいと思います。
684nobodyさん:03/06/20 22:52 ID:Vg4M86DU
>>683
.+゜(・∀・)+゜. 全部読んでくれました。

改行が<br>に変換されないのが気になるところですが・・・
あとは自分で調べてみます。
(TдT)ノシ アリガトウです
685nobodyさん:03/06/20 22:53 ID:???
>684
あー。
自分で調べるか、がんばれ。

改行コードがヒントだ。
686直リン:03/06/20 23:10 ID:Q1+dqLU8
687nobodyさん :03/06/21 10:55 ID:wNdBDwZ1
質問させていただきます。
1:サムネイル画像の生成を行いたいです。
2:GDを使う方法を試してみたのですが、
3:標準で使える設定にはなっていないようで、エラーになりました。

何か手段はないでしょうか?
・ライブラリを同じとこに置いて使う??
 (あまりよくわからないのですが調べててこんな方法があるのかな?
  と思いました。)
・自分で画像縮小のアルゴリズムを組む。(ちと自信は無いですが)

ちなみにjpeg/png/(gif) などで行いたいです。手助けお願いします。
688nobodyさん:03/06/21 12:00 ID:QZ0EDUba
>>684
MAC?

>>687
gifは無理なんじゃない?
689無料動画直リン:03/06/21 12:10 ID:AstYoKnr
690687:03/06/21 12:57 ID:wNdBDwZ1
インストール無しで使える画像処理用のモジュール御存知の方居ませんか?
(GD,PerlMagickはインストールっぽいので。)
jpegだけでも縮小処理をしたいです。(他 gif/png)
691nobodyさん:03/06/21 14:47 ID:???
>>690
ますますGD入れとけって言いたくなります(w
1.41が旧GDlib使っているんだっけ?(朧)
692687:03/06/21 15:21 ID:fPD3+uod
インストール無しでGDの機能を利用する方法ってあるのですか?
693nobodyさん:03/06/21 15:22 ID:zsFEWp+J
>>692
あきらめれ。
694603:03/06/21 16:25 ID:???
>>692
GDのソース見て、インストールなしでも使えるようにモジュール書き替えれ
695687:03/06/21 16:32 ID:fPD3+uod
やっぱしそれが一番ですかねぇ。必要なところだけで十分なので。
たとえば require "GD"; ってのではやっぱし動かないんですよね?

さっきGDの中身を見てたんですが、一部わからない所もありました。
誰か同じことを考えて、インストール無しで使えるGDを公開してる人って
居ないんですかねぇ・・・
696_:03/06/21 16:42 ID:???
697nobodyさん:03/06/21 17:26 ID:VyXOk/2c
while ($temp = <STDIN>) {
chomp($temp);
print "$tempが入力されました\n";
}

これだとABCDと入力したら ABCDが入力されました、と出て、

while ($temp = <STDIN>) {
$temp2 = chomp($temp);
print "$temp2が入力されました\n";
}

これだとなぜか、1が入力されました、としか出ないのはなぜですか?(´・ω・`)
教えてエロイヒト
698nobodyさん:03/06/21 17:39 ID:???
>>697
chompの返り値は、切り落とした文字数。
ちなみにPHPのchopの返り値は、処理した後の文字列になる。
699 ◆hMJAPH9PWA :03/06/21 17:58 ID:???
>>697
いろいろな本を読んで、またはGoogleで検索して、それでも分からない場合に人に聞きましょう。
chomp()の仕様を答えるのは簡単だけど、そうやって何もかも人に聞くつもりならプログラミングなんて手を出さないほうがいい。

>>698
Perlのchop()も同じ仕様だよ。
というか、なぜそこでPHPが、しかも(関係あるとはいえ)別の関数が出てくるのやら。
700687:03/06/21 18:11 ID:wNdBDwZ1
GD.pm の copyResized の内容って具体的にはどこに記載されているのですか?
ttp://homepage1.nifty.com/smastani/hp/smastani/pc/thumbn.html
コチラに掲載されているようなことをやろうと思っています。
copyResized以外はGD.pmを見ることで理解が出来たのですが。。。
701603:03/06/21 18:12 ID:???
print "Just another Perl hacker\n";
702nobodyさん:03/06/21 18:13 ID:???
>>698
あり。理解しますた。

>>699
初心者煽るくらいならレスしないでください。役に立たないコテハンは目障り。
703nobodyさん:03/06/21 18:23 ID:???
うわー、>>702みたいなバカがまだいるんだ。
天然記念物クラスのヴァカだな。
704nobodyさん:03/06/21 18:26 ID:???
>>703
コテハンから名無しに戻って自演ですか?( ´_ゝ`)
705698:03/06/21 18:36 ID:???
なんだか怒られちゃった(えへ
元質問者がPHPスレに誤爆してたのでPHP+Perl使いと推測。
そして違いを挙げてみた。
それだけなので怒っちゃいやん。
706nobodyさん:03/06/21 18:43 ID:???
DBIについてちょっと疑問なのですが、

WindowsにMySQLをインストールして使う場合、
DBIとDBD::MySQLか
DBIとDBD::ODBC+MySQL ODBC Driverを使いますよね。

問題はDBD::ODBCを使った場合。
$dsn = 'DBI:ODBC:test';
こんな風にデータソースを指定しますが、testっていうデータベース名を
先にODBCドライバにつくる必要がありますよね?

でも、ODBCドライバに作成するときには、それと同時に
ユーザ名やパスワードも入れるじゃないですか。
つまり、testっていうODBCデータソースには、データベース名と
ユーザ名とパスワードがすべて含まれてるってことですよね。

なのに、そのあとそのdsnを使ってDBにつなぐときは、
$dbh = DBI->connect($dsn, 'test', 'test');
という風に、またユーザ名とパスワードを指定する必要があるわけです。

ここが納得できないんですよ。だったらODBCドライバのところでは
ユーザ名やパスワードを入れたくないんですが。

今実験してみたところ、やっぱりODBCドライバのユーザ名とパスワードの欄には
何も入れなくても(または適当にいれても)、正常にDBに接続できています。

なんで?
707_:03/06/21 18:43 ID:???
708nobodyさん:03/06/21 18:44 ID:???
>>705
chomp();なんかで躓くのが、PHPやってるとは思えんが( ´_ゝ`)

でもまぁ、質問スレに無能なコテは要らんわな。
質問厨がイヤならスレ見なけりゃいいんだから、アフォな煽りなんかすんなっての。

で、>>702
そのミスの仕方から察するにとほほ見ただろ?(゚∀゚)
あそこだけを信じるなよ。
709674:03/06/21 19:06 ID:???
>>676
あう、わかります。すみません。。。。。
$ORG{$i} ってなんだよじぶん、、、
710nobodyさん:03/06/21 19:08 ID:???
CSVファイルに、
print LINE $line "\n";
とかいて、
そのCSVファイルをWIn上で開くと、
Winの改行は\r\nのはずなのに、問題なくみれてしまうのはなんでなんでしょうか?
711直リン:03/06/21 19:10 ID:AstYoKnr
712nobodyさん:03/06/21 19:12 ID:???
>>710
Winだからというより、開いたアプリによる。
713nobodyさん:03/06/21 20:17 ID:???
use Fcntl qw(:flock);
flock (LOCKF, LOCK_EX);

みたいにするのって、
flock(DAT, 1);
flock(DAT, 2);
flock(DAT, 4);
flock(DAT, 8)
とただやるのに、比べて、どんな利点があるんでしょうか?;
714710:03/06/21 20:18 ID:???
>>712
ってことは、MS-Excelは、\nだけでも\r\nと同じようにあつかってくれてるってことですか?
715nobodyさん:03/06/21 21:03 ID:???
だろな。秀丸は、\nだけでも改行してくれるが、MGエディタは、
ぜーんぶつながっちゃって困った和さ。
716nobodyさん:03/06/21 21:04 ID:???
use CGI::Carp qw(fatalsToBrowser);
とかKcatchとか、
エラーをブラウザに出力してくれるものって、
初心者にはどれがおすすめですか?

あと、これって使っても、エラーをとらえきれなくて、
結局生エラーログにしかのってない、っってことも、ありますか?
(どーもいろいろためしてみたら、そのように思えるのですが)
717nobodyさん:03/06/21 21:28 ID:aWFirrKr
コーディングのお供に
http://mypage.odn.ne.jp/home/dongrico
718nobodyさん:03/06/21 21:59 ID:???
>>713
移植性の向上
719nobodyさん:03/06/21 22:11 ID:???
>>716
サーバー自体のエラーは捕捉出来ない。
(CGI(perl)が返すヘッダーのエラーとか)
perl自体のエラーは詳しく知らんがたぶん100%捕捉できるだろう。
720nobodyさん:03/06/21 22:46 ID:???
>>713
#define LOCK_UN 8 /* unlock file */
となってるシステムでも正しく動く。
721nobodyさん:03/06/21 23:56 ID:???
だれも>>706はわからないでつか
722nobodyさん:03/06/22 00:04 ID:???
@ORGのm番目からn番目までの要素だけを配列として取り出すには、どうするのがスマートでしょう?

for ($i=m;$i<=n;$i++){
    push (@tmp_ORG,$ORG[$i-1]);
}
@ORG = @tmp_ORG;

てなもんでしょうか?
いや、便利な関数とかあるのかなと思ったもので
723nobodyさん:03/06/22 00:13 ID:???
>>721
何を問題にしているのかがわかりませんが何か?
>>722
@ORG[m .. n]じゃいかんの?
724nobodyさん:03/06/22 00:54 ID:RPCqHkE2
バックボーンを非公開としているサーバー
はヘボイという事でしょうか?
725nobodyさん:03/06/22 01:11 ID:???
>>716
ヴァカ抜かすな。
KCatchが補足できないエラーはきちんとKCatchのページに書いてある。読め。
あ、もう一つ補足できないエラーがあるな。
お前のねじれた脳味噌から生じた論理エラーだ。
726nobodyさん:03/06/22 01:37 ID:???
いきなり質問スマソ。
漏れのHPのKENTWEBのチャットを設置してうまく動作したのを確認して
次はスタイルシート埋め込み。
DLしたら分かるけどwtalk2.cgiの200行目付近にHTMLに出力する記述があるからそこに次の一行を追加。
print OUT "<Link Rel=\"stylesheet\" Type=\"text/css\" Href=\"../../lib/memory.css\"><Blockquote><Blockquote><Blockquote><Blockquote>\n"
もちろん適当に入れたのでなくてそれらしくHEADタグの中に普通に埋め込み。こっちでは203行目ってことになるな。
で、文法チェッカーでみると、いじった筈のない205行目の
print OUT "参加者($num):$member<hr>\n<!--START-->\n";
でエラー。OUTを宣言する必要がありますか?とか言いおる。
かなり分かりにくいと思うので整理。
1.自分はKENTWEBで配布されている「WebTalk」というチャットスクリプトにスタイルシートを埋め込みたい。
2.<Link Rel="~のタグを埋め込む為、wtalk2.cgiの203行目に↑のスクリプトを追加。
3.なぜかエラー。500InternalServerErrorらしい。んで早速文法チェッカー走らせてチェックさせたらいじった筈のない直後の205行目で文法エラー。OUTを宣言する必要がないとかなんとか。
だれか助けて><。
727722:03/06/22 01:50 ID:???
>>723
そ、そんな書き方あったんですね。。。さすがperl
728nobodyさん:03/06/22 01:53 ID:???
>>721
ODBCのドライバの設定は必須ではない。必要なパラメータは全部connectストリングに埋め込む事もできる。

>>726
情けなくなるくらいヘボだな。追加した文の文末に「;」が無い。
この位の事でとうとうと泣き言並べ立てて恥ずかしくないか?
729728:03/06/22 01:55 ID:???
次スレは、シンタックスエラーの質問はお断りにしようぜ。きりが無い。
730nobodyさん:03/06/22 02:08 ID:7kmjTzsL
>>726
(゚Д゚)ポカーン

ネタ・・・だよな?いくらなんでもここまで初心者はないよ・・・な?な?
731nobodyさん:03/06/22 02:21 ID:???
>>729
それ以前に、エラーすら書かない奴がとにかく多い。
なんとか聞き出してみれば、500エラーとか抜かすし。
エラー書けっつーのはちゃんと>>1にも書いてあるんだがなあ。
732nobodyさん:03/06/22 04:03 ID:UMFBhruU
1:画像の転送を(転送量を)軽くしたいです。
2:gzipを使ってみました。
3:どこかのサイトにもあったのですが、既に圧縮されている
  画像などに関しては圧縮されないみたいでした。
  100kbに対して100b程度減りはしました。

画像の転送量を減らす手段は他にありませんでしょうか?
733nobodyさん:03/06/22 04:36 ID:???
>>709
ハッシュと配列を勉強しる。
734nobodyさん:03/06/22 06:17 ID:???
PerlだけじゃなくてPHPでも同じだったので、何処に書けばいいか分からなかったんですが、こちらに。
CGIで作成したファイルですが、パーミッションを変更(666や777)してもFTPから削除できません…。
スーパーユーザーではないので、所有者の変更をする事も出来ません。
rootで無い限り、どうする事も出来ないんでしょうか?
#CGIから削除するしかない?。それともサーバーによるものでしょうか?
#ちなみに、ディレクトリの場合は削除する事ができました。
735nobodyさん:03/06/22 08:36 ID:???
そりゃpermissionじゃない。ownerの問題。よって、
chown ore:ore hoge.cgi
して、自分のファイルにしちゃう。
736nobodyさん:03/06/22 10:55 ID:???
&query_condition(%house))
みたいに、ハッシュ配列を関数に渡したとき、
その引数を関数内で得るにはどうすればいいのでしょうか?

普段ならmy ($foo, $bar, hoge) = @_; とするところの話しです。
737nobodyさん:03/06/22 11:01 ID:???
>>734 ファイルを削除するにはそのファイルのおかれてるディレクトリに書き込み権があればいい。
>>735 他人のファイルの所有者変更できるのは特権が要るだろうが。ボケッ
738nobodyさん:03/06/22 11:30 ID:???
>>736
sub query_condition(%)
{
my $h = shift;
$h->{key};
}

query_condition(%house);
739736:03/06/22 11:53 ID:???
>>738
なるほど。ありがとうございます。
740nobodyさん:03/06/22 11:54 ID:???
&query_condition($foo,$bar);

sub query_condition{
my ($lineid, $staname) = @_;

とやったら、
Can't use global @_ in "my" at search.cgi line 370.
と言われたのですが、
このエラーメッセージの意図がわかりません。
なんでこんなこといわれなきゃいけないんでしょうか?
741nobodyさん:03/06/22 12:01 ID:???
>>740
前後を見ないと何とも言えない。

> なんでこんなこといわれなきゃいけないんでしょうか?

間違ってるからだろ。
742740:03/06/22 12:17 ID:???
>>741
そうですね、すいませんでした。もういちどよくみなおしてみます。
743nobodyさん:03/06/22 12:21 ID:???
>>740
$lineidか$stanameがグローバルでどこかにあるんじゃないか?
744nobodyさん:03/06/22 12:22 ID:???
>>737
自分の所有物でも所有者を変えることはできないけど。
745nobodyさん:03/06/22 12:30 ID:???
そもそも??7なら誰かれ構わず削除出来るっしょ。
746740:03/06/22 12:37 ID:???
>>743
ビンゴでしたもようです。。。thankxです
747nobodyさん:03/06/22 13:33 ID:???
>>737
有難うございます。
ディレクトリのパーミッションが775だったのが原因みたいです。
そのディレクトリも、CGIによって作成したものなんですが、
一生懸命0777を与えてるんですが、どうしても777になってくれません(;ω;)#775になってしまう。
ちなみに、その上のディレクトリはFTPから作成したもので、書き込みもOKです。
サーバーの設定で、ディレクトリ作成時に一般の書き込み許可させないって事とかあるのでしょうか…
兎に角、もうちょい頑張ってみます。
748nobodyさん:03/06/22 13:39 ID:???
>>744
出来るものもある。System-IIIとか。

>>747
CGIでパーミッション変えればいい。
つーかユーザ権限でCGI実行できないヘボイところはとっとと見限ったほうが良い。
749nobodyさん:03/06/22 13:41 ID:???
>>747
umask関数を調べてみれば解決するでしょう。
750nobodyさん:03/06/22 15:47 ID:wDjVUYGM
$STA[$i]->{lineid}
$STA[$i]->{staname}
($iには0から10くらい入ってる)
には文字列があてはめられてるのに、

for ($j=0;$j<=$#STA;$j++){
    push (@TMPSTALIST,$STA[$j]);
}

foreach (@TMPSTALIST){
    $HTMLStaLine .= $TMPSTALIST[$_]->{staid}."/" .$TMPSTALIST[$_]->{staname}|;
}

で、何も表示してくれないんですが、なぜなんでしょうか?
751750:03/06/22 15:47 ID:wDjVUYGM
あ、もちろん、
$HTMLStaLineをprintしてます。
752732:03/06/22 16:18 ID:qinZbGMm
1:画像の転送を(転送量を)軽くしたいです。
2:gzipを使ってみました。
3:どこかのサイトにもあったのですが、既に圧縮されている
  画像などに関しては圧縮されないみたいでした。
  100kbに対して100b程度減りはしました。

画像の転送量を減らす手段は他にありませんでしょうか?
753nobodyさん:03/06/22 16:23 ID:???
>752
Perlのコーディングによる問題ではない。
よってスレ違い。
754nobodyさん:03/06/22 16:44 ID:???
>>752
画像を使わない。
755603:03/06/22 16:50 ID:???
>>752
画像のファイル構造自体が圧縮形式というつっこみでいいか?
756アラー氏 ◆.GAf6ZDA2c :03/06/22 17:16 ID:???
757752:03/06/22 17:49 ID:???
>>755
ある意味、望んだ答えでした。ありがとうございます。
758nobodyさん:03/06/22 19:47 ID:???
myで宣言した変数は、有効範囲を外れると
メモリもクリアされるんでしょうか?
759nobodyさん:03/06/22 20:05 ID:???
>>758
どこからも参照されなくなった時点でクリアされる。

逆に言えば、何かから参照されている限り、スコープを外れてもメモリの内容は残る。
たとえば、以下のようにサブルーチン内でmyした変数のリファレンスを返すということもできる。

$var = hoge();
print $$var;  # うんこ

sub hoge {
  my $abc = 'うんこ';
  return \$abc;
}
760nobodyさん:03/06/22 20:29 ID:S8oOZHOQ
プログラム板から、移動してきました。

複数の検索エンジンに、キーワードを投げて
その結果をまとめてから出力というものを書いています。

それで、UNIX上のApacheでcgiを走らせているので
`wget $URL`;
$html = `w3m -dump_source $URL`;
そして、ファイルに$htmlを保存

などを試してみましたが、
wgetの方はURLが長すぎてダウンロード自体に失敗して、
w3mの方は、端末で同じコマンドを打つ分には成功しますが、
実行しても、何もファイルに書き込まれていなくて上手く取得ができません。

どうか、ご教授お願いします。

761nobodyさん:03/06/22 20:41 ID:???
>>760
>>1を200回読んで出直せバカ
762nobodyさん:03/06/22 20:49 ID:???
>>760
perlのコーディングと一体何の関係があるのかと。
763750:03/06/22 20:50 ID:Rv0SCDPi
どなたかおながいします。このコードだけだと問題ない?
764nobodyさん:03/06/22 20:51 ID:???
そうですね…perlを使っているので、一気にここ来ちゃいました。
申し訳御座いませんでした。
765nobodyさん:03/06/22 21:09 ID:???
>>763
foreach (@TMPSTALIST){
  $HTMLStaLine .= $_->{lineid} . "/" . $_->{staname};
}

どういう結果が欲しいのかわからんのでこれだけ。
766750:03/06/22 21:35 ID:a19vkXUc
>>765 長くかくとこんなことしたいんですけどねぇ。。。
    #SELECT始まり!
    $HTMLStaLine .= qq|<select name="staid" size="10" multiple>\n|;
    for ($i=0;$i<=$#GlobalLineidList;$i++){
        #沿線名表示!
        $HTMLStaLine .= qq|<option value="">----- $LINE[$GlobalLineidList[$i]]->{linename} -----</option>|;
        undef @TMPSTALIST;
        for ($j=0;$j<=$#STA;$j++){
            if ($STA[$j]->{lineid} == $GlobalLineidList[$i]){
                push (@TMPSTALIST,$STA[$j]);
            }
        }
        #seqでソート
        @TMPSTALIST = sort { (${TMPSTALIST[$a]->{seq}} <=> ${TMPSTALIST[$b]->{seq}}) } 0 .. $#TMPSTALIST;
        #沿線に属する駅名一覧を表示!
        foreach (@TMPSTALIST){
            $HTMLStaLine .= qq|<option value="|.$TMPSTALIST[$_]->{staid}.qq|">|.$TMPSTALIST[$_]->{staname}.qq|</option>\n|;
        }
    }
    #SELECT終わり!
    $HTMLStaLine .=qq|</select>\n|;
767nobodyさん:03/06/22 21:49 ID:???
>>766
いや、あのさ、間違ったソースを晒されても「何がしたいのか」は分からないんだが……
768nobodyさん:03/06/22 21:59 ID:???
>759
丁寧な説明有難うございます。
調子にのてもう一つお聞きしたいのですが、
リファレンスを受け取った側で、undefすると
呼び出し元もクリアされるのでしょうか?^^;

$var = hoge();
print $$var;  # うんこ
undef($var); <- hogeの$abcは要らないのでクリアしたい

その後の処理…

sub hoge {
  my $abc = 'うんこ';
  return \$abc;
}

sub { return \%dekai_data; }
大きな値とか返した場合、クリアする必要はあるでしょうか
769750:03/06/22 23:46 ID:MaT7PvCU
>>767

用は、
$STA[$i]->{lineid}
$STA[$i]->{staname}
($iには0から10くらい入ってる)なのに、
 push (@TMPSTALIST,$STA[$j]);
すると、
$STA[$i]->{lineid}
は値が入ってるのに、
$TMPSTALIST[$i]->{lineid}
には値が入ってないのです。
pushした直後でも。。。
770-:03/06/22 23:48 ID:pFJThKfu
成功者になりたい人は読んでください!
「クーポン屋の仕事は簡単!」
「HPにバナーを貼ればOK!」
「年商3000万円も夢じゃない!」
「あなたの努力次第です。」
http://www.c-gmf.com/index1.htm
771750:03/06/22 23:53 ID:???
すいません、
@TMP = sort { (${TMPSTALIST[$a]->{seq}} <=> ${TMPSTALIST[$b]->{seq}}) } 0 .. $#TMPSTALIST;
とやるところを、
@TMPSTALIST; = sort { (${TMPSTALIST[$a]->{seq}} <=> ${TMPSTALIST[$b]->{seq}}) } 0 .. $#TMPSTALIST;
とやっていたのが原因でした。

$TMPSTALIST[$i]->{lineid}には値がちゃんと入っていたようです。
772nobodyさん:03/06/23 01:40 ID:8VAV54DK
どうしても解決出来ず、同じ質問を2度することになってしまいました。
どなたかお助けください。
1:Perlからサムネイル(縮小)画像を作りたいです。
2:GDやPerlMagickなどがあることを知り、使おうと考えました。
3:私の使っているサーバにはインストールされていません。

・インストール無しで使える、画像縮小のモジュール
・画像を縮小するための具体的なアルゴリズム
・インストールが必要なGD,PerlMagickモジュールの改造方法
のような情報を求めています。
(jpeg/png/gifなどについて行いたいです。(1つしか出来なくても構いません))

色々調べてはいるのですが、GD,PerlMagickのものばかりで
良い情報が見つけることが出来ませんでした。何卒、よろしくお願いします。
773nobodyさん:03/06/23 02:07 ID:???
>>772
いや、もう無理だって答えでてるでしょ?
自分で作る気がないなら何度質問しても無駄。
むしろ、君がインストールしないで使えるモノを作って公開する方が良い。
774_:03/06/23 02:09 ID:???
775nobodyさん:03/06/23 02:13 ID:???
>・インストールが必要なGD,PerlMagickモジュールの改造方法のような情報を求めています。
要するに自分で画像処理をすれば良い。
ttp://www.st.rim.or.jp/~syamaura/gifanime/gifabout/gifabout.html
こういう感じのページ探して、自前でやるとよろし。
#ファイルフォーマットをまとめたページ(英語)がどっかにあったのだけど、
#URL失念してるので貼れない。スマソ。

多分この先はスレ違いになるのでプログラム板等に移動した方が良い。
#が、今画像処理スレはない
776nobodyさん:03/06/23 02:41 ID:???
>772
自分はロリポップでIMAGE::MAGICKを使い、デジカメ写真を画面大、
200ピクセルくらい、80ピクセルくらいの3つに一気に縮小している。

その時、ローカルサーバーにIもMAGE::MAGICKをインストールし、
ロリポップが檄重のときはローカルで縮小し、サーバーに上げるルーチンも作ったけど、
その方法も一案では。
ローカルサーバーへのインストールは
http://yassu.no-ip.com/linux/httpd.htm
などを参照。
777nobodyさん:03/06/23 11:54 ID:???
>>772
>>776
ああ、そうか。ローカルに入れれば何の問題もないよな。
よかったな、>>772, >>687
これでモジュールを入れられないとかいう泣き言を言わなくてよくなったぞ。
778nobodyさん:03/06/23 11:55 ID:???
1秒毎に.を出力するプログラムが動きません。
perl -e '$cnt = 100; while($cnt > 0) {sleep 1; print "."; $cnt--;}'
どこがいけないのでしょうか。
779nobodyさん:03/06/23 12:20 ID:QgEnyxPf
昨日からPerlに挑戦中の者です。
手始めにPerlで書かれた簡易チャットのソースをコピーして使っています。
微妙にスレの趣旨と違うかもしれませんが、どうか教えて下さい。

チャットの発言内容を書き込んでサブミットボタンを押した時、その内容をcgiファイルに送る。
その後、発言内容のテキストボックスを空にしたいのです。
ジャバスクリプトでサブミットボタンにonClickを付けてファンクションを呼び出し、
そのファンクション内に発言内容のテキストボックスのvalueをnullにする仕様にしたら、
チャットのログ部分に「null」とそのまま出てしまいました。

どなたか解決策をお願いします。


780nobodyさん:03/06/23 12:28 ID:???
>>778
「動きません」じゃ分からん。
どう動かないのか(エラーが出る、フリーズする、こういう結果がほしいのにこうなってしまう等)を
必ず書くこと。

>>779
微妙にどころか、まるっきりスレ違いというか板違い。
781nobodyさん:03/06/23 12:40 ID:???
>>780
動かないって言えば分かるだろ、出力がない。
プログラムが終わらない。うんともすんとも言わない。
782nobodyさん:03/06/23 12:41 ID:???
>>780
ところでちみは、相当の厨だな。フリーズだって(藁
783nobodyさん:03/06/23 13:01 ID:???
>781
>780ではないが、この初心者スレでは、それ以外の場合でも「動かない」と表現する奴がいる。
というか多い。
それくらいわかるだろ。

バッファリングを止めても変わらないか?
784nobodyさん:03/06/23 13:24 ID:???
俺も一発でバッファリングのせいだと分かったけど・・・
785nobodyさん:03/06/23 13:28 ID:???
「動かない」って言ってるんだから、100秒待っても動かないんじゃねーの?(ワラ
786nobodyさん:03/06/23 13:46 ID:???
>>783, >>784
ありがとう。
$| = 1;
を入れたら無事出力できました。
787nobodyさん:03/06/23 16:14 ID:???
Perlで掲示板を作っています

スクリプトの最初の方で

if ($mode eq 'regist') { ®ist; }
elsif ($mode eq 'find') { &find; }
         :

とズラズラ書き並べるのはカッコ悪いのですが
何か恰好良い方法はありませんか?
788nobodyさん:03/06/23 16:19 ID:???
>>787
カッコワルイって・・・。
サブルーチンを上に書けば?
789787:03/06/23 16:29 ID:???
すいません言葉が足りませんでした。
use CGI;
$q = new CGI;
$mode = $q -> param('mode');

とかしますよね。でもサブルーチン使ったとしても
どこかに
> if ($mode eq 'regist') { ®ist; }
> elsif ($mode eq 'find') { &find; }
>          :
みたいのはどこかに絶対あるわけで
これがなんとかならないかな とか

SWITCH:
{
if ($mode eq = "regist" ) (®ist;last SWITCH)
if ($mode eq = "find" ) (&find;last SWITCH)
         :
}
こうやれば多少はましかな‥
でもズラズラ書くのは変わらないので恰好良くないな とか。
790nobodyさん:03/06/23 16:36 ID:???
ずらずら書いたらダメなのかよっ!
791nobodyさん:03/06/23 16:38 ID:???
>>789
eq = てなんどい。
Perlにかっこよさを求めるのはおろかな気が。


サブルーチンごとに分けずに、
if($mode eq 'assa'){
   処理
   処理
}
ってしたら?醜いけど。
792nobodyさん:03/06/23 16:40 ID:???
>>789
他に方法はあるか?
ハッシュで関数テーブルみたいなものをつくるか?
それでも初期化時にずらずらと書くことになるけど。
793nobodyさん:03/06/23 16:41 ID:???
>787
こうすると一つで済むよ。
eval(&$mode);

このスクリプト(?)の指摘禁止ね :-)
794787:03/06/23 16:42 ID:???
そうですね。
>Perlにかっこよさを求めるのはおろかな気が。
これが全てですね。 適当に実装しますです。
795nobodyさん:03/06/23 17:20 ID:vdloYxxu
DBMってtieでハッシュに関連付けた時点で、すべて読み込まれて、メモリにはいるんですか?
796nobodyさん:03/06/23 18:25 ID:???
>>795
はいる。
メモリーキャッシュにまるごと入るからこそ早いとも言える。
797nobodyさん:03/06/23 18:44 ID:???
>>796 サンクス
200kb位あるのを、丸まま読み込んだらまずいですかね。
CGI利用です。
798nobodyさん:03/06/23 18:51 ID:???
>>797
やってみろよ
メモリがどれだけ割り当てられているか、残りはどれぐらいかなんて
環境次第なんだから
799nobodyさん:03/06/23 19:03 ID:???
>>798
ローカルでは問題ないんですが、共有鯖だとどうかな、と。
まぁ、あげてみて試してみます。
同じことをテキスト保存でやったら、ファイルサイズは20㌔くらいなんですが、遅い。
どうしようか・・・。
800nobodyさん:03/06/23 19:11 ID:???
>>795 かわいそうに、、、、まんまと騙されてるね。
通常、索引編成ファイルのキーや値は、任意でないかぎりメモリに入る事はないよ。
Perlだと、確かにDBMファイルとの接続速度は遅いけど、データは読込んでないから、大丈夫。
796とか798の言ってることは相手にすんな。
801nobodyさん:03/06/23 21:03 ID:???
>>800
へ~
物 知 り で す ね
802nobodyさん:03/06/23 22:02 ID:???
>>801
間違いを指摘されたからってそうムキになるなよ。
803nobodyさん:03/06/23 23:34 ID:???
>>787
Perlでswtich文使えたらいいなー、って思うことしきり。
804nobodyさん :03/06/23 23:46 ID:???
>>787
リファレンスと配列を使うとか、無名のサブルーチンで、ハッシュを使うとか書き方あると思うけどねィ・・・

んで、カッコいいよりも見やすい記述を心がけるべきだと思ったり・・・
805nobodyさん:03/06/23 23:59 ID:???
>>803
だね。switchあるだろ、とか思ってリファレンス見直して 無いことに気付いたw
806803:03/06/24 00:16 ID:???
>>805
同じことしてるなw
807nobodyさん:03/06/24 00:20 ID:???
まあ、switch無くても、
if
elsif
elsif
elsif
で処理速度は落ちないんだけど、見た目が、、、
808nobodyさん:03/06/24 00:26 ID:???
>>807
見た目を気にするならSwitchもどき使えばいいんであ?
ttp://tech-web.net/perlmania/perlsyn3.html
809nobodyさん:03/06/24 00:41 ID:???
>>808
ちょっと冗長すぎて、それならまだif elseのほうが・・・
swtich使いたいのは、見た目がスッキリするからなので
810nobodyさん:03/06/24 00:41 ID:???
うーん、その他の方法も見た目が良いとは言えないな
811nobodyさん:03/06/24 03:06 ID:???
ある変数$Aの先頭2バイトを$Bへ代入し、$Aには先頭2バイトの次からが残る。

単純な質問かもしれませんが、どうか教えてください。キーワードが考え付かず、
ググっても見つけられませんでした。(←力不足っす。。)
812nobodyさん:03/06/24 03:31 ID:???
>>811
TMTOWTDI.

# substr
($A, $B) = (substr($A, 2), substr($A, 0, 2));

# unpack
($B, $A) = unpack 'A2A*', $A;

# 置換1
$A =~ s/^(..)//;
$B = $1;

# 置換2
$A =~ s/^(..)/($B = $1, '')[1]/e;

# 回りくどい方法
@tmp = split //, $A;
$B = join '', splice @tmp, 0, 2;
$A = join '', @tmp;
813nobodyさん:03/06/24 03:31 ID:???

s/^(.{2})//;
$1;

こんなんじゃダメかね、ダメだね。文字だもんね。
あんたのやろうとしてることは、関数で出来るよきっと。
普段そうゆう処理しないから名前は知らんけど。
どっかのサイトの関数一覧をどうぞ。
上の正規表現で十分ならそちらをどうぞ。
81452:03/06/24 03:37 ID:???
ありがと~~~~~~
# unpack
($B, $A) = unpack 'A2A*', $A;
コレ使わせてもらいました。
815nobodyさん:03/06/24 04:16 ID:???
記憶があいまいだけど、5.?に無かったっけ?<Switch
816nobodyさん:03/06/24 05:14 ID:???
>>812>>813
変態的にすごいな。
そういうのは一瞬で浮かぶんでしょうか?
817nobodyさん:03/06/24 06:44 ID:???
浮かぶもんだよ。
アルゴリズムを見れば、どの関数を使うべきか直感的に分かるから。
たくさんコードを書いてると自然に身についてくる。
818nobodyさん:03/06/24 07:03 ID:???
みんな変数名やサブルーチンの名前付けるときってどうしてる?
分かりやすい名前付けた方が後々分かりやすいって聞くけど、
その名前が思い付かないとき…。

漏れコーディングより、名前で時間くう…。
こんな漏れって変でつか…?
819nobodyさん:03/06/24 07:31 ID:???
>>815
少なくとも 5.8.0 には標準で Switch.pm がある。

use Switch;
switch ($val) {
  case 1     { print "number 1" }
  case "a"    { print "string a" }
  case [1..10,42] { print "number in list" }
  case (@array) { print "number in list" }
  case /\w+/  { print "pattern" }
  case qr/\w+/ { print "pattern" }
  case (%hash) { print "entry in hash" }
  case (\%hash) { print "entry in hash" }
  case (\&sub) { print "arg to subroutine" }
  else       { print "previous case not true" }
}
820nobodyさん:03/06/24 08:07 ID:???
>>818
$hensuに。
821nobodyさん:03/06/24 08:34 ID:???
>>818
変数名の prefix に規則性持たせてつけてるよ
822818:03/06/24 08:49 ID:???
>>820
どういうこと?
とりあえず$hensuにしとくってこと?

>>821
漏れもVBやってたときは付けてた。
823nobodyさん:03/06/24 09:26 ID:2JWEavap
CarpのfatalsToBrowserでエラー捕まえられない時があるんだけど、
「500 Internal Server Error」が出てしまう時がある。
httpdのログを見る限りエラーメッセージが出てるんだけど・・・
回避方法って無いですかね?
824nobodyさん:03/06/24 10:41 ID:???
>>818
クラス名・変数名に迷ったら書き込むスレ
http://pc2.2ch.net/test/read.cgi/tech/1046541730/

こんなスレもあるでよ
825818:03/06/24 10:44 ID:4jjnB7QK
>>824
初耳です。
こっち行きます。
826nobodyさん:03/06/24 10:44 ID:???
>>823
いったい何を言ってるんだ?
まともな文章と書くスレを選ぶ方法を先に学べ
827nobodyさん:03/06/24 11:05 ID:???
でもperlはカウンタとか一時変数とかは名前付けなくていいし、
ネーミングで困ることは少ないな
大抵そういう、どうでもいい変数で困る事が多いし
828nobodyさん:03/06/24 11:11 ID:2JWEavap
>>826
分からないなら、しゃべんなって。
な。
829nobodyさん:03/06/24 11:19 ID:???
>828
お前はあの文章がわかんのか、とか思ったら本人だったので鬱
830nobodyさん:03/06/24 11:23 ID:???
CarpとCGI::Carpは違う。
831nobodyさん:03/06/24 11:27 ID:???
>>828
お前の文章も確かにおかしいぞ
832nobodyさん:03/06/24 12:32 ID:???
頭おかしい奴が(・∀・)キテルー
833nobodyさん:03/06/24 13:40 ID:???
ログ見てエラーが出てるんなら、そのエラーメッセージ見て解決策を考えろ。
834nobodyさん:03/06/24 13:59 ID:???
2JWEavapは恥ずかしくてもう来られない
835nobodyさん:03/06/24 14:10 ID:RsywTEy7
DBI使ってDBを操作するとき、SELECT文の結果は配列で返ってきます。
つまり値を参照するときはフィールド番号(って言うんですか?)で指定しなければいけません。
$record[2]みたく。
できれば、フィールド名で参照したいんですけど、それって無理なんですか?
連想配列みたいになれば言うことないんですが。
$record{'DATE'}って感じに参照したいんですけど、DBIだけでは無理?

どの解説サイトみても、「配列でかえります」までしか説明されてませんでした。
836nobodyさん:03/06/24 14:29 ID:???
BBS作ってるんですけど、例えばレスが800あるスレッドを
表示する時2ちゃんねるみたいに
1&750-800みたいに途中を飛ばして表示するとして
ログがレス順1から順に並んで保存されてるとすると
2-749まで空読みして飛ばしますよね?
これって無駄に思えますが何か良い方法ありませんか?
レスを逆順に800,799・・・保存する方法も考えましたけど
これだと表示時に表示するレスの分だけメモリ消費して
こちらも無駄かなと思ってしまうんですが。
全レス表示したら全レス分配列必要だし。

前者だとレスが多いスレだとCPU負荷がかかるし
後者だとメモリを多く消費してしまうし、何か他の選択が
ないでしょうか?
837nobodyさん:03/06/24 14:31 ID:???
>>836
1レスの長さを固定してseekとreadを駆使して読み出すのが効率いいんじゃない?
838nobodyさん:03/06/24 14:38 ID:???
>836
1レス1ファイル形式(w
839nobodyさん:03/06/24 14:48 ID:???
840nobodyさん:03/06/24 15:07 ID:py7llED6
☆とにかく可愛い娘のH画像です☆
http://endou.kir.jp/yuminet/link.html
841nobodyさん:03/06/24 15:10 ID:???
>>836
1000回の空読み <<<<< ファイルのopen
というか、
1000回の空読み <∞< perlのオーバーヘッド

何をするにもCPU負荷はかかるけど、
定量的に考えないと。

あと、これはバリ私見&経験則だけど、
最近のマシンは一般的なwebサーバー用途で考えると、
バランス的にCPUだけの性能が突出してます。
仮に、1Gメモリー積んでCPUがPIII 1Gぐらいのとき、
先ず、CPUが足りなくなる前にメモリーが足りなくなります。
(これは、webサーバーやRDBMSがメモリー食いすぎというのも理由だが)
なので、CPUとメモリーはトレードオフの関係にあるときは、
メモリー優先で基本的にはOK。
842nobodyさん:03/06/24 19:20 ID:???
>>838
一度それで作ったことあるけど微妙w

やっぱ1ファイルで空読みかねぇ。
843nobodyさん :03/06/24 19:55 ID:???
そんなけ書き込み激しいのならば、DB使うだろ・・・
844nobodyさん:03/06/24 22:48 ID:???
>>836
無駄っちゃ無駄だけど、小細工してもたいして効果ないよ
845nobodyさん:03/06/25 00:40 ID:???
ハッシュのキーって、全角文字でもいけますか?
846nobodyさん:03/06/25 00:59 ID:???
>>845
いけるらしいです。
俺は、試してないけど。

でも、あまり推奨されるような物じゃないと思うので、
極力避けましょう。
847nobodyさん:03/06/25 01:18 ID:Ai+C7V0g
質問がございます。

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM action="test.cgi" method="POST">
%%errmsg%%
E-mailアドレスを入力して下さい。<BR>
<INPUT size="30" ="text" name="email" value="%%email%%"><BR>
確認のため、再度入力してください。<BR>
<INPUT size="30" type="text" name="confirm" value="%%confirm%%"><BR>
<BR>
<INPUT type="submit" value="送信"></FORM>
</BODY>
</HTML>

これを変数化したものを
$html =~ s/\%\%.+?\%\%//gs;
このように「%%~%%」を全て取り除くはずなのですが、
なぜか$html =~ s/\%\%.+?\%\%//gsi;
でないといきませんでした。%%%%に大文字も小文字も無いとは思いますが、、、
どうしても腑に落ちないため、質問させていただきました。
宜しければどうかご教授ください。宜しくお願いいたします。
848nobodyさん:03/06/25 01:20 ID:???
>>>845
問題なし
849845:03/06/25 01:30 ID:???
>>846 >>848
thx.
プログラム関係の板の人は怖い人ばかりだと思っていたけど、
ちゃんとレスくれて嬉しいです。ではまた
850nobodyさん:03/06/25 06:35 ID:???
>>847
$html =~ s/%%.+?%%//g;
で、動かないかい?
それはさておき、%%strings%%で書き換えるHTMLテンプレートをよく見かけるけれども、
鬱陶しくなぁい?
%sにしてsprintfで一気に書き換える方が楽そうに思えるけれども。

それはさておき、正しいHTMLを描きましょう。
851nobodyさん:03/06/25 11:07 ID:???
<p>で開いたパラグラフは
必ず</p>で閉じましょう
852nobodyさん:03/06/25 14:07 ID:???
>>850
それじゃ、コード側で順番が固定されてしまうだろ
853nobodyさん:03/06/25 16:44 ID:???
>>851
</p>は省略可能だけど、それを意識して省略しましょうね。ということでよろ。
>>852
そだよ。そんなに頻繁にテンプレを変えるのは少々難ありだと思うけれども。
854nobodyさん:03/06/25 17:48 ID:???
>>853
テンプレは変わるだろ。システム変わらずともデザインが変わることは多々ある。
あとDOCTYPEの指定がないのに省略可能と言い切るのはすごいな。
855nobodyさん:03/06/25 18:36 ID:???
ハ゜ールのcgiをいじっていたら、漢字の「表示」が正しく表示されない
のですが、これは文字コート゛の問題なのですか?
普通はどう解決しますか?
856nobodyさん:03/06/25 18:38 ID:???
>>855
漢字を使わない。
857nobodyさん:03/06/25 18:45 ID:???
>>855
それくらい、とほほにも書いてある。聞く前に調べる。
858nobodyさん:03/06/25 19:49 ID:???
表\示

これで表示される。Shift-JIS だと「表」のコードが \x95\x5c となる。
\x5c(\) が perl だと特別に解釈される文字なのでおかしくなる
859855:03/06/25 20:04 ID:???
すいません自己解決しました。
860nobodyさん:03/06/25 20:18 ID:???
普通はどう解決しますか?

明らかに突飛な解決策が提示される

「調べろ」とアドバイス

同情した奴がマジレス

自己解決


まったく噛み合ってないな(w
861ayaya:03/06/25 20:35 ID:???
始めまして!私と顔を見ながらチャットしませんか?楽しい会話をしましょう
アドレスです!http://www.loveshelter.tv/まで!沢山きてね(^o^)丿
待ってまーす
862nobodyさん:03/06/25 20:49 ID:+p8CFadc
test->func();
test::func();
この呼び方で、どちらでも動くようにfunc()をコーティングしたいんだけど、
いい方法知らないすか?
863nobodyさん:03/06/25 21:02 ID:UMoE3ZS2
unicodeの文字列をURLエンコードするにはどうすればいいのでしょうか?
JavaScriptのescapeのように、あいうえお<->%u3042%u3044%u3046%u3048%u304A
といった感じで変換したいのです。
$value =~ s/(\W)/'%' . unpack 'H2' , $1/eg;
とやっただけではムリでした。

どのようすればいいのでしょうか?
864nobodyさん:03/06/25 21:12 ID:???
ファイルテスト演算子の-Mについてですが、
取得する時間って24*60*60しないとちゃんと取得できないの?
865nobodyさん:03/06/25 21:13 ID:???
>>861
これで見たの3回目だ。NGワードに入れた
866nobodyさん:03/06/25 21:40 ID:???
>>862
1.与えられた引数とは全く関係なしに、決まった結果を返す。
2.与えられた第一引数を調べ、それがオブジェクトかそうでないかを判断する。
ref $_[0] でなんとかなるだろ。
867nobodyさん:03/06/25 21:42 ID:???
>>864
本読め。
-M で取得できるのは、最終更新日からの日数だと明記してある。
秒に変換したいなら、*24*60*60しないとどうしようもないわな。諦めろ。
868nobodyさん:03/06/25 23:29 ID:???
>>867
>>864のメル欄
869nobodyさん:03/06/25 23:52 ID:???
完全に成功した釣りの例ではあるが、
今一つ爽快感に欠けるのは、-Mについて聞くのが
どのくらい愚かなのか実感が無いからだな
870nobodyさん:03/06/26 00:03 ID:???
>>868
釣られた……
頼むから釣りだけはカンベンしてくれ……
ただでさえ、アレなのが多いのにこんな肩すかしまで食らわされるとな。
871nobodyさん:03/06/26 00:39 ID:???
>>870はいい人。
872864:03/06/26 04:34 ID:???
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
873nobodyさん:03/06/26 04:35 ID:bmlG3tt5
EUCコードで書いているのですが、なぜか「当」という
文字が文字化けの原因となってしまいます。
具体的には、「当代島」と打つと、「套島」、「当島」と打つと
「島」となってしまいます。

入力フォームも間違えなくEUCなのですが、不明です。
どうかご教授いただけますでしょうか。
874nobodyさん:03/06/26 05:46 ID:???
\当 びっくり。
875nobodyさん:03/06/26 09:17 ID:???
>>873
そうなったPerlスクリプトを挙げよ。


876nobodyさん :03/06/26 09:31 ID:???
あと、漢字コードの変換モジュールあたりも書いとくほうがいい・・・
877nobodyさん:03/06/26 11:55 ID:UmMKROoY
釣られage
878nobodyさん:03/06/26 12:17 ID:???
また釣り?

当代島 - C5F6 C2E5 C5E7
套島  - C5    E5 C5E7

当島  - C5F6 C5E7
島    - C5    E7

なんか2バイト目と3バイト目が欠けてる気が。
879nobodyさん:03/06/26 12:46 ID:???
箕島に遊びに行ったことを思い出す
880nobodyさん:03/06/26 13:41 ID:???
と言いながら答えてる>>878はいい人
881nobodyさん:03/06/26 15:21 ID:lH1PokLv
 携帯向けの投稿用cgiの開発を考えているのですが、写メールは、
受信に添付されたファイルを使えばいいので何となくわかるのですが、
i - shot の場合、メール内のアドレスを解析してそのサイトから
画像を取ってくるようなプログラムはどのようになるのでしょうか?
882nobodyさん:03/06/26 15:23 ID:???
>>881
簡単にしたいなら/usr/local/bin/wgetとか、use LWP::UserAgentとか。
883873:03/06/26 16:07 ID:???
本当に皆さんご親切に有難うございます。
ソースを載せますと

my (%form, $buffer, @pairs);

if ($ENV{'REQUEST_METHOD'} =~ /^post$/i){ read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else{ $buffer = $ENV{'QUERY_STRING'}; }
@pairs = split(/&/,$buffer);
foreach (@pairs){
my ($key,$value) = split(/=/,$_);
$value =~ tr/+/ /;
$key =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C", hex($1))/eg;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$form{$key} = jcode::convert(\$value,'euc', 'euc','z');
}

このようにformで受け取ったものを%formに入れているのですが、
ここで問題の「当代島」の入っている$form{address}を表示させる
と例の文字化けが発生してしまいました。
スクリプト内で「当」がきたらエスケープする処理をしてもよいの
ですが、もう少し効率的な方法を考えたいと思います。

こんな駄目質問にも応えていただいた皆様には本当に感謝しており
ます。
884_:03/06/26 16:23 ID:???
885nobodyさん:03/06/26 16:33 ID:???
コードに直で漢字を書く以外で変なことが起きたことが無いので、
jcode:converが怪しい
886nobodyさん:03/06/26 16:41 ID:???
>>883
>jcode::convert(\$value,'euc', 'euc','z');
3つ目にeucを指定してEUCtoEUCじゃ、実際に変換が行われるのは
zオプションの半角カナ→全角カナ変換だけだろ

jcode::convert(\$value,'euc', '','z'); じゃないのか?
887nobodyさん:03/06/26 16:43 ID:???
pack("C", hex($1))ってよく見かけるけど、なんでpack("H2", $1)にしないの?
なんか理由あるのかね?
888nobodyさん:03/06/26 17:00 ID:???
>>887
pack("H2", $1)の方が早いけど、そうすると何故か人気が出ないというジンクスがある。
889nobodyさん:03/06/26 17:12 ID:???
pack("C", hex($1))とpack("H2", $1)はどう違うの?
890nobodyさん:03/06/26 17:23 ID:???
>887
多分 kent-web とかの配布スクリプトが hex 使ってるから
>889
同じ
速度が違う
891nobodyさん:03/06/26 17:37 ID:???
原因不明の症状に悩んでおります・・・。
申し訳ありませんがご助言をお願いできませんでしょうか。

1: Perlスクリプトで色んなサイトのhtmlソースを一気に取得してきたい。
2: それでこんな風にやってみました。

 ※メインのスクリプトにて
 foreach(@url_list){ # @url_listに各サイトのurlが入っている。
 @source = &get($_);

 (いろいろな処理)

 }

 ※サブルーチン(別ファイル)にて
 sub get{

 (socketを使ってソースを取得し、@backに格納)

 return(@back);
 }

3: うまくいかないサイトがちらほらあります。
 <付加的情報>
 ・問題なく取得できるサイトも多くある。
 ・Hostヘッダは送っている(=バーチャルホストが原因ではない?)。
 ・うまくいかないサイトでも、サブルーチン内ではそのソースをprintできる。
 (=実は取得できている?)

 <自分の考え>
 ・特定のサイトの時だけ、メインのスクリプトに@backが帰って来ない?
 ・特定のサイトの時だけ、そもそもサブルーチン内で配列に格納されていない?
892891:03/06/26 17:38 ID:???
これ以上の原因を調べようがなくて八方塞状態です。
足りない情報などあったらすべてお答えしますので、
何とぞよろしくおながいします。<(_ _)>
893nobodyさん:03/06/26 17:43 ID:???
>>891
ステータスコードは確認している?

# なんかPerlと関係ない話題のような・・・
894nobodyさん:03/06/26 17:54 ID:???
俺も>>886に同意。
HTMLの文字コードがEUCだからって、EUCが送られてくるとは
限らないよ。たまたまIEなんかはそういう実装になってるだけで。

あと、単にブラウザが文字コードを判定ミスしてるってことはない?
Content-Type行を、

print "Content-Type: text/html; charset=EUC-JP\r\n\r\n";

みたいにしてみ。
895nobodyさん:03/06/26 18:09 ID:???
icab とかは EUC のページでも SJIS で送信するらしいね
896nobodyさん:03/06/26 18:22 ID:???
>>895
んでそういうのを平気で「ブラウザのバグ」とか言うプログラマが居るんだよな。
897nobodyさん:03/06/26 18:26 ID:???
逝ってよしだな。
898891:03/06/26 18:29 ID:???
>>893
ありがとうございます。しかし申し訳ありません。原因は凡ミスでした・・・。
891の「(いろいろな処理)」のほうがマズかったようです。
質問する前にもっとしつこく調べてみるべきでした。本当にすみません。
899nobodyさん:03/06/26 18:52 ID:???
>>898
おいおい、解決したから満足ですさようならーってのはナシでしょ。
善意とは言え、他人の手を煩わせたんだから、
その凡ミスを晒して他の初心者に貢献するのが
ギブアンドテイクっていうもんじゃないか?
900nobodyさん:03/06/26 19:05 ID:???
>>899
「この掲示板は自分のためにある」by 891
901nobodyさん:03/06/26 19:12 ID:???
>>900
そりゃ本7の名言だろ
902nobodyさん:03/06/26 20:03 ID:???
<FORM accept-charset="euc-jp" ・・・
とか。
903nobodyさん:03/06/26 20:10 ID:???
>>902
それ、すごく正しいけどIEもNNも実装してなかった気がする。
ちょっと今すぐ試せないけど。
904nobodyさん:03/06/26 20:13 ID:???
>>902
んな風に書けるんだ。知らなかった。
905nobodyさん:03/06/26 20:36 ID:fBG4qVY6
ファイルの読み書きとフォームデータを使う場合の二つの負荷はどっちがお得か教えて下さい。
サーバーの負荷はファイルの読み書き何byteに対してフォームデータ送信何byteと同じぐらいでしょうか?
906nobodyさん:03/06/26 20:53 ID:???
>>903
そんなブラウザ今すぐ窓から投げ捨てた方がいい気がする。
907nobodyさん:03/06/26 20:55 ID:???
>>903
今回の件についてはIEやNNなら実装していなくても問題ない。
908nobodyさん:03/06/26 21:12 ID:8elJoZcA
Welcome..........

ホスト12-231-187-185.client.attbi.com

名前:
E-mail:
内容:



こちらでリロードしてください。 GO!
分からないことがあったら2ちゃんねるガイドへ。。。

プロキシー制限は、2ちゃんねるビューアを使うと回避できることがあります。


ワラタ
909nobodyさん:03/06/26 21:32 ID:???
>>906
窓も一緒に投げ捨てた方がいい気がする。
910nobodyさん:03/06/26 22:00 ID:0WiiLc+a
2つ(以上)の jpeg 画像ファイルを入力とし、
横に連結した1つの jpeg 画像ファイルを出力するプログラムを書け。
また、指定した位置に連結できるようにもせよ。

どなたか作っていただけませんか?
911nobodyさん:03/06/26 22:07 ID:XYA3PmxJ
自分でコーディングしないのは初心者とは言いません
912nobodyさん:03/06/26 22:07 ID:8elJoZcA
>>910
偉そうにマルチポストか。死ね。
913nobodyさん:03/06/26 22:29 ID:???
>>910
うわぁ、最悪
914nobodyさん :03/06/26 22:31 ID:???
>>910
まじれすすると、モジュール要るし、
貴方にはソレを入れるとか、もしくはソレを使えるサーバーも用意できないと思われる。

もうちっと勉強してきなさい。
915nobodyさん:03/06/26 22:33 ID:8elJoZcA
>>914
>まじれすすると、モジュール要るし、

自分の低レベルをカミングアウトせんでも・・・。
学生のうちに離散コサイン変換位覚えとけ。
916nobodyさん:03/06/26 22:54 ID:???
>>915
>>914じゃないけど、俺も面倒だからモジュール使うかなあ。必須だとは思わんけど。

> 学生のうちに離散コサイン変換位覚えとけ。

プログラマで10年飯を食ってるけど、文系なのでそういうの苦手。
917nobodyさん:03/06/26 22:55 ID:???
>>915
自分で実装するのもなー。
社会人になってからじゃあ、確かに時間がないから、今のうちっちゃ今のうちだが。
918891:03/06/26 23:08 ID:???
>893,>899
本当にバカですみません。どういう凡ミスかを簡単に申しますと、
htmlソースの<body>から</bocy>までの間だけ切り取ろうとしていた部分で
$_ =~ /^<body/i → $_ =~ /<body/i のように直したという感じの話です。

ちなみに実は他にも問題山積みであまり解決していないので
>解決したから満足ですさようならー
という状況でもなかったりするのですが。
919nobodyさん :03/06/26 23:21 ID:???
>>915
あふぉか・・・そんな処理入れて使い物になる実行速度でるよ
920nobodyさん:03/06/26 23:24 ID:???
>>915
何のためにいろいろとモジュールが公開されているのか・・・。
921nobodyさん:03/06/26 23:29 ID:???
でるのかよ
922nobodyさん:03/06/26 23:30 ID:???
>>919がよくわからない。
入力ミスか?
923nobodyさん :03/06/26 23:33 ID:???
どっちにしろPerlでは向かない処理やね
924nobodyさん:03/06/26 23:37 ID:???
(´-`).。oO(やっぱりGD.pmかなぁ、、、)
925nobodyさん:03/06/26 23:55 ID:???
おお、聞き逃げかと思ったらちゃんと戻ってきた。尊敬。わざわざありがと。
関係ないけど、

> どういう凡ミスかを簡単に申しますと、

と書いた次の瞬間に↓

> </bocy>

なんか性格出ててちょっと好感度アップ。
926nobodyさん:03/06/26 23:58 ID:???
>>923
昔、月の満ち欠けのレンダラーを何を思ったかPerlで書いた事があったが、
恐ろしく遅かったのを覚えてるな。
ただの球体なのに、500x500程度の画像に数分かかってた。
まぁ俺のアルゴリズムが自己流で糞だったのもあるけど。

でもCで書き直したら一瞬で計算できたよ。
927nobodyさん:03/06/27 00:55 ID:???
WinXPでrenameを使ってみたところ失敗してしまい
$!に permission deniedが入っていました。

やったことをまとめるとこの様な感じです
・renameの第二引数には既に存在しているファイルを指定し上書きしたい
・第一、二引数のファイルは共に存在する
・両ファイル共に読み取り専用のチェックは入っていない

openでの書き込みやmkdirなどその他のファイルシステム関数は普通に使えます。
Windowsなのでパーミッションは要らないと思っていたのですが
この場合どこに原因があるのでしょうか?
どうかよろしくお願い致します
928nobodyさん:03/06/27 01:12 ID:???
>>927
どんなコードでやってるんだ?
問題なくできるし、できないならアクセス権とか確かめてみれ
929nobodyさん:03/06/27 06:01 ID:???
(・∀・)ボスィー!!
930nobodyさん:03/06/27 07:24 ID:???
>927
自分も同様な処理で同じエラーが出たが、
アクセス権を考えるのが面倒くさいので、
存在しているrename先ファイルをunlinkした。
931nobodyさん:03/06/27 09:38 ID:???
>>930
普通はそう考えるよな
932nobodyさん:03/06/27 09:45 ID:???
すみません。
超初心者な質問です。

if だと何かが真なら…って分岐になりますが、
「これら全てが真なら」とか「全てが偽なら」って記述をスマートに書くにはどのように書くのが一般的なのでしょうか?

頭悪いので
if(){
if(){
if(){
}
}
}
こんな記述使ってます。
見にくいです。
933nobodyさん:03/06/27 09:47 ID:???
>>932
andじゃ駄目なの?

if($a == 1 and $b == 2 and $c == 3){
全てが真の時の処理;
}else{
一個でも違ったら;
}
934932:03/06/27 11:05 ID:???
ありがとうございます。
頭が悪いのか、andとか、全然使いこなせないんです。汗
935nobodyさん:03/06/27 11:20 ID:???
>>932=934
これ、見た目だけの問題じゃなくて、動作速度とかにも影響するから
ちゃんと覚えておいた方がええよ。
936374:03/06/27 11:22 ID:???
ふーん。そういうことを話し合ってるスレかここは
937nobodyさん:03/06/27 11:36 ID:???
そうですが、何か?
938nobodyさん:03/06/27 12:32 ID:???
>>934
お前、高校くらい出てから来い。数学Aの履修範囲だ。
939nobodyさん:03/06/27 12:51 ID:???
>>935
まじで!?
940nobodyさん:03/06/27 12:57 ID:???
>>939
if文をまとめたぐらいでは体感的な速度差はない。
ただ、日頃から>>932のようなコーディングをする人は、自分でも理解できなくなるような
スパゲッティコードを書いたり、非常にパフォーマンスの悪いアルゴリズムを使ったりと
間違った方向に進みがち。
まあ何にせよ、基本はきっちりと押さえとけってこと。
941nobodyさん:03/06/27 13:01 ID:???
push @houselist, \%HOUSE;
したあと、
$houselist[あれこれ]->{id}
が重複するものを、
@houselist から取り除く(※)にはどうすればいいのでしょう?
※取り除くというか、1つだけ残したいです。
942nobodyさん:03/06/27 13:21 ID:???
>>941
こんな感じかのう

@check = ();
@houselist = grep { !$check{$_->{id}}++ } @houselist;
943nobodyさん:03/06/27 13:22 ID:???
Perlらしいコードだなぁ
944nobodyさん:03/06/27 13:35 ID:???
>>939
>>934が言っているように、ほとんど体感は無いけどね。
ただ、漏れは仕事の都合上、xGB単位のファイルの処理とかするんだけど、
そうなってくると、細かいところでかなり違ってくる。
といっても、1時間が55分に短縮されるとか程度だけど。
どっちかってーと、>>934の言うとおり、わかりやすく書く、ってことが
重要かと。
945nobodyさん:03/06/27 13:36 ID:???
s/>>934/>>940/;
946nobodyさん:03/06/27 13:40 ID:???
xGB単位, xGB単位, xGB単位
           ∧∧
         ヽ(=゚ω゚)ノ″
         ~( ×)
(=゚ω゚)ノぃょぅ    U U

947nobodyさん:03/06/27 13:42 ID:gWCPnMBP
変数で正規表現を使えるのでしょうか???
sub func{
$str = $_[0];
foreach(@list){
if(/$str/){
$result = $_;
}
}
return $result;
}
みたいに検索条件を変数にしたい時はどうすれば良いのでしょうか?
948942:03/06/27 13:42 ID:???
@check = (); じゃなくて、%check = (); だった。スマソ
949nobodyさん:03/06/27 13:44 ID:???
>947
正規表現じゃなくてindex使え。
950nobodyさん:03/06/27 13:47 ID:???
>>947
それでいいのでは
951374:03/06/27 14:01 ID:???
もまいらひまだな

print s//uc join('',unpack('A1 x4 A1 x7 A1 x4 A1', <<EOT))/e && $_,"\n";
Just another Perl Hacker
EOT
952nobodyさん:03/06/27 14:03 ID:???
ひまですが、何か?
953nobodyさん:03/06/27 14:24 ID:gWCPnMBP
レスTHX
>>950
全部にマッチしてしまうので、必ず最後の要素番号返してくれます。
>>949
調べてみます。
954947:03/06/27 14:25 ID:???
>>953>>947です
955nobodyさん:03/06/27 14:32 ID:???
>>953
変数を正規表現に使うときは、メタ文字が入っているとうまくいかないから、
quoteする。
metaquote($str)または\Q$str\E
全部にマッチしちゃうってのは、/^$str$/してないから、一部にひっかかって
るんじゃないかな。

956941:03/06/27 14:38 ID:???
>>942
やばい、何をやっているかわからない。。。
けど理解してがんがってみます。
ありがとうございます。
957947:03/06/27 14:39 ID:???
>>949,>>950,>>955
>>955の書き込みを見る前にindexでとりあえずの解決しました。
for($i = 0;$i < @list;$i++){
$idx = index($list[i],$str);
if($idx ne -1){
$result = $i;
}
}
としました
ありがとうございました。
>>955さんのが原因かと思われるのでそちらも勉強してみます。
感謝です
958950:03/06/27 14:55 ID:???
「変数に正規表現を」って言うから、引数にメタ文字を入れてるんだと思った……
要は正規表現を使って(変数に入った)文字列を検索したかったのね。
959947:03/06/27 15:02 ID:???
>>958
ごめん、よくわかんない(TT
960nobodyさん:03/06/27 15:07 ID:???
CSVからデータを読み込んで、ちょっとした条件でしぼりこんで一覧表示するだけなのに、
一覧のうち1部だけが文字化けするって、
何が考えられますか?


なお、スクリプトは、EUC(スクリプト中の処理も全てEUCで処理してます)、
CSVはSJIS、HTML吐き出しもSJISです。

文字化けしてしまってるところは、EUCになっちゃってます。
961nobodyさん:03/06/27 15:14 ID:???
>>960
文字コード変換を自動判別に頼ってるため、Shift_JIS文字列をEUC
と見間違えるんだと思う。

CSVの1レコードとかテーブル全体を一括で文字コード変換するか、
明示的に変換元と変換先の文字コードを文字コード変換ルーチンに指示
するかすれば問題は起こりにくくなる。

あと、いわゆる半角カナが多いShift_JIS文字列もEUCと誤認識
しやすい(場合によっては区別が付かない)。
962nobodyさん:03/06/27 15:15 ID:???
条件ってのが、EUCで比較しててそのまま出力に流してしまってるからでは?
963nobodyさん:03/06/27 15:21 ID:???
>>960
スクリプトとデータの文字コード統一しる。
その方が変換しないで済むから早いだろうに。
964nobodyさん:03/06/27 15:54 ID:???
>>956
この方法の解説は確かperlメモに書いてあった。
だがしかしperlメモ説明がくどいから逆に分かり難いかも。
でも便利だから一度は見ておけば?
965nobodyさん:03/06/27 17:01 ID:???
bccに2人を入れたいとき、
メールソフトと同じように、

$bcc = 'amano@alive.ne.jp, mine@alive.ne.jp';
if (!open(OUT,"| $sendmail -t")) { &error('申し訳ありませんが何らかの原因で処理できません.'); }
#中略
print OUT "Bcc: $bcc\n";
#後略
で問題ないですよね?

実験だと問題なさそうなんですが、
環境に依存するとなんなんで、一応質問・・・
966nobodyさん:03/06/27 20:05 ID:???
$sendmail に sendmail のパスが入ってるんだろうけど、
その sendmail が Sendmail とは限らない。

とか言ってみるテスト。
ようはそのプログラム次第ってこと。
Socket使うとかしてみたら?
その手のモジュールも転がってるし。
967965:03/06/27 20:21 ID:???
>>966
いや、sendmailのパス入ってます。
sendmailだったら、他の環境によらず大丈夫ってことですか?

Socketの勉強は、まだ少しペンディングにしてるので。。。
968nobodyさん:03/06/27 20:24 ID:???
>>967
適当なライブラリ探してきたら、Socket知らないでもできそうですよ。
やったことないですが。
969nobodyさん:03/06/27 20:53 ID:???
(´-`).。oO(この世にはsocketしか知らない香具師もいるのよねぇ、、、@この板を荒している香具師とか)
970nobodyさん:03/06/27 21:05 ID:???
(´-`).。oO(本7か…)
971nobodyさん:03/06/27 21:26 ID:???
sendmail の sendmail と qmail の sendmail で利用可能なオプションとか違うよ。
それ以外のは知らないけど。
つか、スレ違いぎみな気が。
972ふつー:03/06/27 22:05 ID:???
use Net::DNS;
use Net::SMTP;
973nobodyさん:03/06/27 22:34 ID:???
すんごい素朴な疑問なんですが、
なぜみんなヒアドキュメントを使うんでしょう?

   print << "END_OF_HTML";
      ほげ
      ふが
      ひげ
END_OF_HTML
っていう風に、最後を、インデントつけれないから、すごくコードがみづらくなって、
個人的にはいやなんですけど。
(なんかのオライリー本にもそんなことかいてあったきがする)

やっぱり、END_OF_HTMLみたいに意味をかけるからいいんでしょうか?

ちなみに自分は、ほとんど
       print qq|
             ふが
             ほげ
            |;
ってやってます。
974965:03/06/27 22:36 ID:???
やばい、qmailとsendmailてまったく別物だと思ってました。
(だから、>>971 でqmail の sendmail ってなんだ?と思った)
スレ違いぎみなので、逝って勉強してきます。
975nobodyさん:03/06/27 22:39 ID:???
>>973
料理本でも立ち読みしてくれ
976nobodyさん:03/06/27 22:58 ID:???
>>973
   print << "  END_OF_HTML";
      ほげ
      ふが
      ひげ
   END_OF_HTML
977973:03/06/27 23:25 ID:???
>>975
料理本ってなんかの隠語?
978973:03/06/27 23:26 ID:???
>>976
そ、それも、気持ち悪くないですか?個人差かな?
979nobodyさん:03/06/27 23:33 ID:???
まあ、あまり深いインデントにならないコードを書いて気休めにするしかないな
980nobodyさん:03/06/27 23:36 ID:???
まぁ、個人の好き嫌いじゃないの?
'
hoge
';
<< 'HOGE';
hoge
HOGE
ちなみに私は前者が多いかな。
インデントがと言うか、楽だから。
981nobodyさん:03/06/27 23:41 ID:???
>977
クックブック
982nobodyさん:03/06/27 23:42 ID:???
>>977
オライリーのPerl本を色々物色してれば分かる。
983982:03/06/27 23:43 ID:???
かぶった
984nobodyさん:03/06/27 23:53 ID:???
次スレまだー?
985nobodyさん:03/06/28 00:01 ID:???
Perl 初心者コーディングコーナー Part25

なんてどお?
986nobodyさん:03/06/28 00:26 ID:???
いいね。たてとけ。
987nobodyさん:03/06/28 00:34 ID:???
ミンキーモモに出てくる
988nobodyさん:03/06/28 00:37 ID:???
普通なら
Perlコーディング 初心者コーナー Part25
じゃないのか?
989nobodyさん:03/06/28 00:51 ID:???
CGI以外 Perl初心者コーナー Part25
990nobodyさん:03/06/28 01:03 ID:???
せめてCGIを除外する旨のことはテンプレに書いてほしい。
991nobodyさん:03/06/28 01:08 ID:???
別にcgiであっても構わないけど、perlに関係ない話はスレ違い
992nobodyさん:03/06/28 01:11 ID:???
CGI以外ならむしろム板だろ。
993nobodyさん:03/06/28 01:13 ID:???
>>992 ここは何の為の板なのかと小一時間。
994nobodyさん:03/06/28 01:14 ID:???
WebProg 板なのになんでCGIダメなんだ
995nobodyさん:03/06/28 01:15 ID:???
s/WebProg板/過疎板/;
996nobodyさん:03/06/28 01:19 ID:???
Perl コーディング初心者質問コーナー Part25
http://pc2.2ch.net/test/read.cgi/php/1056730690/

立てたよ
997nobodyさん:03/06/28 01:28 ID:???
997
998nobodyさん:03/06/28 01:29 ID:???
998


999nobodyさん:03/06/28 01:32 ID:???
999?
1000nobodyさん:03/06/28 01:32 ID:???
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。