トップページphp
1001コメント315KB

Perl 初心者コーナー Part24

レス数が1000を超えています。これ以上書き込みはできません。
0001 ◆fBgbHI04bQ 03/06/07 22:30ID:GbQKLcPE
いらっしゃーい、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
0002 ◆fBgbHI04bQ 03/06/07 22:30ID:GbQKLcPE
過去ログ]

Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
 DAT: http://tako.2ch.net/perl/dat/957208980.dat
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
 DAT: http://tako.2ch.net/perl/dat/971817087.dat
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
 DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
 DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part5 http://pc.2ch.net/php/kako/988/988728069.html
Part6 http://pc.2ch.net/php/kako/996/996075607.html
Part7 http://pc.2ch.net/php/kako/1000/10002/1000267444.html
Part8 http://pc.2ch.net/php/kako/1003/10039/1003900311.html
Part9 http://pc.2ch.net/php/kako/1009/10095/1009549309.html
Part10 http://pc.2ch.net/php/kako/1014/10145/1014556702.html
Part11 http://pc.2ch.net/php/kako/1017/10172/1017201229.html
Part12 http://pc.2ch.net/php/kako/1019/10199/1019917048.html
Part13 http://pc.2ch.net/php/kako/1022/10227/1022731565.html
Part14 http://pc.2ch.net/php/kako/1026/10269/1026977659.html
Part15 http://pc.2ch.net/php/kako/1028/10288/1028816385.html
0003nobodyさん03/06/07 22:30ID:???
立てなくていいってば。
0004 ◆fBgbHI04bQ 03/06/07 22:31ID:GbQKLcPE
[過去ログ]

Part16 http://pc.2ch.net/php/kako/1032/10320/1032070299.html
part17 http://pc.2ch.net/php/kako/1034/10345/1034583844.html
part18 http://pc.2ch.net/php/kako/1037/10377/1037797479.html
part19 http://pc.2ch.net/php/kako/1042/10422/1042260745.html
part20 http://pc2.2ch.net/php/kako/1044/10447/1044717887.html (タイトルに19と誤記)
part21 http://pc2.2ch.net/php/kako/1047/10479/1047980851.html
part22 http://pc2.2ch.net/test/read.cgi/php/1050369328/l50

[ひまぢん氏のミラー]
Part1 http://www.angelfire.com/ak5/2ch-web-program/kako/957208980.html
Part2 http://www.angelfire.com/ak5/2ch-web-program/kako/971817087.html
Part3 http://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html
Part4 http://www.angelfire.com/ak5/2ch-web-program/kako/984430156.html
Part5 http://www.angelfire.com/ak5/2ch-web-program/kako/988728069.html

0005 ◆fBgbHI04bQ 03/06/07 22:32ID:GbQKLcPE
[総合]
 ・Perl Com: http://www.perl.com/pub/
 ・CPAN.com: http://search.cpan.org/
 ・ActivePerl: http://www.activestate.com/
 ・CGI-ML:http://forest.ne.jp/cgi-ml/

[お薦め]
 ・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm ★読んどけ
 ・Perl Recipes: http://www.effectiveperl.com/recipes/
 ・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
 ・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
 ・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
 ・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
 ・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
0006 ◆fBgbHI04bQ 03/06/07 22:32ID:GbQKLcPE
[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/
0007 ◆fBgbHI04bQ 03/06/07 22:33ID: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/
0008nobodyさん03/06/07 22:35ID:???
part23 http://pc2.2ch.net/test/read.cgi/php/1053051519/l50
ちゃんと貼れ馬鹿。

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

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

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

単に方法を知りたいだけならスレ違い。
0020nobodyさん03/06/08 00:31ID:???
>>19
あ、違いました。
ソースファイルの中の</textarea>を
実際に出力している</textarea>と勘違いしているようです。
これを、見た目の変化を変えずに表示できませんか?
0021nobodyさん03/06/08 00:33ID:???
Perlと関係ねー(T_T)
<を<に、>を>に変える。嫌なら諦める。
00222103/06/08 00:33ID:???
あら・・・・
<を&lt;に、>を&gt;に変える。
0023nobodyさん03/06/08 00:39ID:???
>>18
クロスサイトスクリプティングって聞いたことあるか? 知らないなら
そんなCGIは作るな、設置するな。いいな命令だ。
0024nobodyさん03/06/08 00:39ID:???
>>22
あ、その方法がありましたね。
それでやてみます。。。
でも、すべて変えるとめんどそーなので
</textarea>のところのみにしときます。
ありがとうございました。
0025nobodyさん03/06/08 00:40ID:???
>>24
氏ねバカ
0026nobodyさん03/06/08 00:41ID:???
>>23
掲示板に
<#-- exec
↑あいまい
みたいに、タグ書くやつでしょ?
0027nobodyさん03/06/08 00:45ID:???
>>26
http://www.google.co.jp/search?q=%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B5%E3%82%A4%E3%83%88%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0&ie=UTF-8&oe=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0028nobodyさん03/06/08 01:07ID:???
>>26
バーカ
0029nobodyさん03/06/08 01:13ID:???
フォームから送られてきた内容をPerlのevalで実行するCGIを置いているけどまずいの?
0030nobodyさん03/06/08 01:15ID:???
>>29
>>27
0031nobodyさん03/06/08 01:31ID:???
>>29
あたりまえでしょうが!何を考えてんだか・・・
どっちにしてもスレ違いなので終了するか適切なスレに移動して
0032nobodyさん03/06/08 01:36ID:XzEWy/kW
すいません。少々質問です。

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

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

URL削ればわかるだろうに

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


となって、自分で全く調べてないって少しは自覚できるんじゃないかな。
0078nobodyさん03/06/08 18:14ID:???
>>76
スマソ。
>>66は気づかないからヨロシ。
0079nobodyさん03/06/08 18:16ID:???
そもそもスレのレベルが下がり過ぎ。
ここは「Perl初心者」のためのスレだろう。
"努力・常識のかけらも無いアホ"の"質問にすらなっていない独り言"で埋まってしまうのはいかんだろ。
0080nobodyさん03/06/08 18:17ID:???
&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>";
}
}
0081nobodyさん03/06/08 18:18ID:???
>>80
がんがるなよ。
0082nobodyさん03/06/08 18:20ID:???
$nameに#aiusiauがあるとする
$sharp = index($name);
$sharp++:
$trip = substr($name,$sharp);

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

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

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

$trip = substr($name,$sharp++);
だと動かんでしょ?って>>82に言いたかった。
00978203/06/08 20:39ID:???
>>96
それはわかってる。
=でつなぐと、後に++したら、足す前の値を代入するからだろ?
0098nobodyさん03/06/08 20:40ID:???
>>97
は?・・・>>83
00998203/06/08 20:43ID:???
>>98
ぃやぃや、こちらこそ「は?」
なにを指してるんだこいつは
0100nobodyさん03/06/08 20:51ID:???
>>99
え?・・・>>83は君が書いたんじゃないの?
0101ラヴ03/06/08 21:07ID: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");
}
}
}
}
のフローチャートはどうやって書いたらいいのでしょう??
0102無料動画直リン03/06/08 21:10ID:+3TQ1ee9
http://homepage.mac.com/norika27/
0103nobodyさん03/06/08 21:19ID:???
>>101
本よめ。つか、いまどきなんでそんな原始時代のことをしてるのか。
01048203/06/08 21:19ID:???
>>100
書いたけど、、、

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

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

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

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

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

B
これ決定的。
スレ違いだから他に行って下さい。
記述やコーティングのスレだから。
0114nobodyさん03/06/08 22:24ID:???
>>113
>普通は叩かれるだけ
普通は無視で流れてくだけだよ
0115nobodyさん03/06/08 22:25ID:???
>>89って言ってるけど全然分かってないじゃん。
>>83-86もっかい読んでみ。
01168203/06/08 22:30ID:???
>>115
わかってるから
0117nobodyさん03/06/08 22:33ID:???
>>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";

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

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

これで実行すると、2003年が103年となってしまいます。
2003年に正しく修正するにはどうしたらいいでしょうか?
0120_03/06/09 02:54ID:???
http://yomi.kakiko.com/hiroyuki/jaz_b01.html
0121nobodyさん03/06/09 02:58ID:???
それやらなくてもなると思うよ。
0122nobodyさん03/06/09 03:01ID:???
初心者のオレにも答えられそうな質問だ。

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

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

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

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

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

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

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

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

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

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

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

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

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

jperl使え。 終了。

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

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

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

該当のセッションを使用してのアクセスがないので更新されないのはあたりまえなのですが、
もう使われることのないセッション情報を消す管理用メソッドとかないのでしょうか。
0142nobodyさん03/06/10 14:45ID: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}
}
↑この辺をどうにかするよな気がするのですが・・・

0143nobodyさん03/06/10 15:16ID:???
>>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|;
 }
}
014414203/06/10 15:42ID:???
>>143
ありがとう、できますた!
0145nobodyさん03/06/10 18:37ID:???
解凍してコピーだけで使えるXMLパーサモジュール教えてください。
XML::Parser::Liteで読めるようになったけど書き込めない・・・。
0146通行人さん@無名タレント03/06/10 18:53ID:???
@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";
}

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

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

 print "\n";
}
0149nobodyさん03/06/10 23:10ID:???
Perlでつくったプログラムをexeファイルにして誰でも使えるようにできますか?
0150nobodyさん03/06/10 23:15ID:???
 (-_- ) ……
  (∞ )  …出来ないんじゃないか?
   | |
0151nobodyさん03/06/10 23:46ID:???
>>149
perlcc
0152nobodyさん03/06/11 01:07ID: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 に受け継がれるようにするには
どうしたらいいのですか?
0153無料動画直リン03/06/11 01:10ID:xrcrQEEf
http://homepage.mac.com/norika27/
0154nobodyさん03/06/11 01:19ID:???
>>149
http://www.indigostar.com/perl2exe.htm
>>152
表示されるよ?
ちなみにsubの後にスペースが無いのは関係ないよね?
0155nobodyさん03/06/11 01:20ID:???
>>154
if (...) {
  &InputPage;
} else {
  &ResultPage;
}
ってやってんだろ。
0156nobodyさん03/06/11 01:34ID:b6wCYV2G
早速答えていただいてありがとうございます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

useとrequireの違いでも調べてみればいいかな。
0249nobodyさん03/06/12 19:08ID: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なのです。
0250nobodyさん03/06/12 19:17ID:???
>>242
perl -M-ops=system,open -e 'open(IN, "<hoge"); system("ls")'

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

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

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

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

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

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

0275nobodyさん03/06/13 00:35ID:nrl/A00g
“ヘ( ̄- ̄ )カモォーン♪
http://www.k-514.com/
0276nobodyさん03/06/13 00:41ID:???
その1回のループをまわすためにインタープリターがどれだけ働くかと...
実際のところは計測しなきゃわからないが。
0277nobodyさん03/06/13 00:44ID:???
Perlは逐次解析するわけじゃないし・・・
0278nobodyさん03/06/13 00:58ID:???
インタープリターとか言ってるあたりが初心者スレだな
0279nobodyさん03/06/13 01:16ID:???
>>276
何行ってんだ?ソートすると何度もコピーが行われるだろ。
最大値抽出ごときでソートするなんてとんでもない。
0280nobodyさん03/06/13 01:49ID:???
foreach(@num){
$max = $_ if($_ > $max);
}
これが一番早くてメモリも使わず?
0281nobodyさん03/06/13 01:57ID:???
$max の初期値は?
0282nobodyさん03/06/13 02:08ID:???
負も考えて@numの第一要素でもぶちこめば?
0283nobodyさん03/06/13 02:12ID:???
>>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)
0284nobodyさん03/06/13 02:19ID:???
必 死 だ な
0285­03/06/13 08:01ID:???
print "location: ***" で飛ぶとリファラは残りますか?
0286nobodyさん03/06/13 08:01ID:???
1回余分にチェックするほうが、スライスするより安くすむと思うが。。。
0287nobodyさん03/06/13 09:29ID:???
>>241さんの質問に関連してお聞きしたいのですが。
外部ファイルにして、requireするにせよ、useするにせよ、
perlは、皆コンパイルするということなんですが、
以下のようにするより、

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

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

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

028828703/06/13 10:01ID:???
ごめんさい。1回限りしか、この部分が実行されないことが
前提です。そして、ifになる確率が50%はあるとして。
0289nobodyさん03/06/13 10:19ID:???
>>287
useの場合は一緒じゃない?
requireなら、そうやったほうがいい。(require文が実行された時点で読み込むから)
029028703/06/13 10:31ID:???
そうだったっす。requireですた。
うん、こういうの書いた覚えあるんで、正しい判断だったんだと
わかってほっとしますた。
0291nobodyさん03/06/13 11:18ID:???
>>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-----
0292nobodyさん03/06/13 11:41ID:???
Perlでwordファイルを検索することってできますか。
Namazuの仕組みを調べればいいんでしょうが、もっと簡単に
モジュール組み込んで、テキストファイル検索するみたいに、
バリバリ、正規表現検索がしたいのれす。
なにか情報の載っているサイトでもいいですから教えてくらはい。
0293nobodyさん03/06/13 12:41ID:1CoOWAYz
質問です。

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

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

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

use Benchmark;

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

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

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

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


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

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

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

〜処理〜

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

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

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

No manual entry for CGI
0304299,29303/06/13 18:31ID:???
>>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);しないと消えないんだよな・・・
0305nobodyさん03/06/13 18:36ID:???
>>303
だったらCPANで見れ
0306nobodyさん03/06/13 19:35ID:???
string literals, numeric literalsとありますが、literalの意味が
わからないのですが。わかる方います?
0307nobodyさん03/06/13 19:36ID:???
文字って意味よ。だからliteralsなわけよ。
0308 ◆fvP8C22Kzg 03/06/13 19:43ID:???
#PK,a
0309nobodyさん03/06/13 19:45ID:???
>>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)
0310nobodyさん03/06/13 20:24ID:???
>>244
いまさら言うのもアレだが、2chみたいにPATH_INFOを使って
hoge.cgi/fuga.jpgのようにすれば、IEなどを騙せ・・・たと思うけども。
031118803/06/13 21:06ID:???
glob使えないそうな・・・
で、glob使わないで、
unlink(<tmp*>);と同じことする方法ってないですか?
0312nobodyさん03/06/13 21:20ID:???
>>311
readdir と grep 辺りで。
0313nobodyさん03/06/13 21:29ID:???
>>309
普通に考えて、配列にはforeachが最速なんじゃないの?

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

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

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

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

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

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

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

}


sub sub($){

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

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

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

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

@line=<F>;

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

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

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

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

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


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

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

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

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

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

$hoge = "test";

&$hoge;

sub test{

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

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

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

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


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

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

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

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


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

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

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

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


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

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

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

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


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

use strictをはずせば回避はできるのですが、
いろいろと試してみたいと思います。
ご親切に有難うございました。
0390nobodyさん03/06/15 21:04ID:QzYzFnUN
みてね〜♪
http://www1.free-city.net/home/s-rf9/page004.html
http://www1.free-city.net/home/s-rf9/page005.html
0391nobodyさん03/06/15 21:20ID:???
>>389
%funcs = (
hoge => sub {return 1},
hage => sub {return 0}
);

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

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

以下の様にやっています
mkdir( './dir', 0777 ) or die( "ディレクトリを作成できません\n" );
0400nobodyさん03/06/16 00:56ID:???
>> 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
0401nobodyさん03/06/16 00:57ID:???
>>397
普通にGETしても割と簡単だし、面白いからやってみるべし
0402nobodyさん03/06/16 01:13ID:???
>>395
>>371
0403nobodyさん03/06/16 01:49ID:DMh466I+
掲示板を作っているのですが、
$content =~ s/([a-zA-Z0-9\.\-\_]+@[a-zA-Z0-9\.\-\_]+)/<a href=\"mailto:$1\">$1<\/a>/g;
↑この正規表現で、$content内に”(sage@hoge.com)”(←カッコは全角)
という文字が含まれていた場合、最初のカッコ部分で文字化けしてしまいます
・・・というか、IEでは<a>タグの"<"部分が文字化けしてそれ以降の
</a>部分までのHTMLが表示されてしまい、NN6ではsage@hoge.comの前に
余計な文字がくっついたものにリンクが貼られている状態になってしまいます
文字化けせずに、”sage@hoge.com”だけがマッチするようにするには
どうしたら良いでしょうか?
0404nobodyさん03/06/16 02:30ID:???
>>403
ttp://www.din.or.jp/~ohzaki/perl.htm
0405nobodyさん03/06/16 02:35ID:cMLQJvQF
自分なりに検索をしたのですが、解決策は見つかりませんでした。
探し方が悪いのかもしれませんが…

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

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

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

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

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

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

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

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

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

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

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

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

>>406さんにヒントをもらえたおかげです。有難うございました!
また、板汚し失礼いたしました。
0410nobodyさん03/06/16 03:45ID:???
>>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;
0411nobodyさん03/06/16 04:06ID:???
>>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;
0412_03/06/16 04:23ID:???
http://homepage.mac.com/hiroyuki44/
0413nobodyさん03/06/16 08:18ID:???
perlができることを自慢するために何か証明になる資格試験とかありませんか。
Cとかjavaとか、Linux、word、一太郎などまであるわけですが、perlはなぜか
聞かない。


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

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

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

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

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

例えばこんなのです

$log = $ENV{'HTTP_REFERER'};

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

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

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

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

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

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

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

>>422
なんか道が開けたぽ
0425nobodyさん03/06/16 11:57ID:AbGOHEQT
>>401
すみません、普通にGETとはどういうことでしょうか…?
それが分からなくて困ってます。
0426nobodyさん03/06/16 12:02ID:???
>>423
1行読込をたくさんあるファイルに対して繰り返し行う
0427nobodyさん03/06/16 12:04ID:???
>>426
どいうこと?ワイルドカード使ってやる方法キボンヌ。
awkにできてPerlにできないはずないだろうから。
0428nobodyさん03/06/16 12:07ID:???
>>425
http://www.google.com/search?num=100&hl=ja&inlang=ja&ie=Shift_JIS&safe=off&c2coff=1&q=perl+http+get&lr=lang_ja
0429nobodyさん03/06/16 12:11ID:???
>>427
できません
0430nobodyさん03/06/16 12:18ID:8IGausxn
>>428
ありがとうございます
0431nobodyさん03/06/16 12:19ID:???
>>429
厨め。できたよ。教えてやらない。
0432nobodyさん03/06/16 12:59ID:???
>>425
>>398は無視か?この糞野郎。二度と来んなボケ。氏ね。
0433nobodyさん03/06/16 13:34ID:???
この場合は
$a = 0;
if (!$a)
真でいいんですよね。
では↓こういう式の時は
if (!($a==0 && $b))

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

でいいのかなそれとも

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

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

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

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

こんな感じにして、4回変数を書き換えればテストは出来る。
記述が正しいかの動作確認だけなら、一々スクリプト全体を
見直す必要は無い。
0442nobodyさん03/06/16 15:37ID:???
>>441
ありがとうございます!!
結果がわかりました。
でも、頭で理解しようとすると自分にはとても難しい。。。
0443nobodyさん03/06/16 17:25ID:0o9Ehb4h
メールフォームを作ってます。
$addr = $ENV{'REMOTE_ADDR'};
でIPアドレスを取得するように設定したのですが
友人に送ってもらったメールのIPアドレスと自分で送ってみたものが
同じIPアドレスになってました。
なんでー???
0444nobodyさん03/06/16 17:32ID:???
>>443
念のため確認だが、実は二人とも同じケーブルで同じ収容局とか、
そういった落ちは無いよな?
0445nobodyさん03/06/16 17:34ID:???
>>443
> なんでー???
あなたの描いたスクリプトがバカだから。
と答えて欲しいの?
0446nobodyさん03/06/16 17:34ID:???
>>443
REMOTE_ADDRが同じだったから。
0447nobodyさん03/06/16 17:45ID:???
>>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>;

こんな感じで
044844303/06/16 18:05ID:0o9Ehb4h
REMOTE_ADDRは同じではないと思います。
住んでる所は友人は関東で私は中部だしプロバイダーも違うし。
$addr = $ENV{'REMOTE_ADDR'}; の箇所以外に
IP取得に干渉するものがあるんでしょうか?
もちょい試行錯誤してみます。
0449nobodyさん03/06/16 18:43ID:???
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);
}
0450nobodyさん03/06/16 19:35ID:???
>>449
CGIスクリプトとして動かしてる?
0451nobodyさん03/06/16 19:42ID:???
>>450
どういうことでしょうか?
ローカルで動かしているんですが、
AddHanderもして、
拡張子もcgiで、ちゃんとスクリプトのはずですが。。。
0452nobodyさん03/06/16 19:47ID:???
>>448
REMOTE_ADDRを記録して、それが同じだったということはREMOTE_ADDRが同じだったということではないですか?
>>451
CGIは全部実行した後出力するんだよ。たしか。
0453nobodyさん03/06/16 19:51ID:???
え、じゃあスリープの意味って・・・・
0454nobodyさん03/06/16 19:51ID:???
>>453
PerlはCGIためだけのものではありません。
0455nobodyさん03/06/16 19:56ID:???
>>449
俺にもよく分からんけど、この辺とか
ttp://www.google.co.jp/search?q=cache:yNlP1fhIQ48J:tohoho.wakusei.ne.jp/lng/199802/98020500.htm+%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%83%AA%E3%83%B3%E3%82%B0+cgi&hl=ja&lr=lang_ja&ie=UTF-8
0456nobodyさん03/06/16 20:40ID:???
MobileType(スペルあってるかな?モバイルタイプ)っていう
スクリプトで、mt-load.cgiを実行したときに1行ずつ表示されてたんだけどなぁ。
nphでもなさそうだし・・・
0457nobodyさん03/06/16 21:32ID:???
>>456
mt-load.cgi の20行目で、>>455の "$|=1" してるから
0458nobodyさん03/06/16 21:34ID:???
>>457
ほんとだ、localついてて見落としてた。。。
でも、sleepもないし、nph-*.cgiでもないのに・・・
どういう仕組みなんでしょうか?
0459nobodyさん03/06/16 21:38ID:???
うぅ、何回も1行ずつ流れてるのみてる・・
イイナァ
0460nobodyさん03/06/16 22:00ID:???
>>443
IPをHOSTに変換してみたら何かわかるかも
0461nobodyさん03/06/16 22:06ID:???
どれもこれもネタか?
あああ鬱。
046245803/06/16 22:08ID:???
ほんとお願いしますよ〜〜
どうやったらできるんでしょ。。
ネタとか言わないで・・・
0463nobodyさん03/06/16 22:26ID:???
REMOTE_ADDRが常に同じ値になるように設定してあるサーバがあるよ。
0464nobodyさん03/06/16 23:52ID:???
REMOTE_ADDRを表示するだけのスクリプト書いて
いろんな串さしてみて試せば?
0465nobodyさん03/06/16 23:55ID:???
>>449

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

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

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

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

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

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

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

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

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

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

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

はいかないのに

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

はいったので、すごい疑問に感じ、ここでglobについて
質問させていただきました。
雰囲気を壊してしまいすみませんでした。
0491nobodyさん03/06/17 06:23ID:???
>>490
<$file>と書いた場合は、$fileがファイルハンドルと解釈されてるだけだよ。
<>演算子は、中身によって行入力になったりグロブ演算子になったりと、紛らわしい。
だからPerl5以降では、glob()を使ったほうがいい。
0492nobodyさん03/06/17 07:06ID:???
掲示板の記事削除処理において
ファイルを開き、記録された記事番号とパスワードを取りだし
入力されたパスワードと選択された記事をそれぞれ比較して
該当した記事以外を記録しなおすという処理を作ったんですが
いろいろいじってるうちになんだか変な動作するようになりました。
入力したパスワードが正しいとなぜが一番違いの記事のパスワードと比較します。
入力されたパスワードが間違ってると、その記事のパスワードと比較します。
何が悪いんでしょう?
0493nobodyさん03/06/17 07:07ID:???
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("キーが違います。");
}
}
049449203/06/17 07:08ID:???
493も俺です(´∀`;)
0495nobodyさん03/06/17 09:48ID:???
オブジェクト指向で書いているのですが、ファイルのラッパーのような
ものを作っています。その際、ファイルハンドルなどはインスタンスごとに
違うものにしたいのですが、どのようにすればよいのでしょうか?

滅茶苦茶な例なのですがC&Perlで言うと下のようなイメージでやりたいと思っています
my $seif = shift;
$self->{handle} = fopen( …
0496nobodyさん03/06/17 10:39ID:???
>>495
IO::File
0497>>49203/06/17 13:30ID: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に関しては初心者だからまだ分からんがな。
今アクセスログやってんねや。んじゃ
0498nobodyさん03/06/17 13:36ID:???
>>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);
}
}

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

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

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

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

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

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

こんなのを使う手もあるし
ttp://www.mikeneko.ne.jp/~lab/perl/des/
050450003/06/17 14:56ID:???
>503
どうやら友人の鯖ではMD5がなにか関係しているようですね。
ライブラリの紹介もありがとうございました。
試してみたところ、これを利用すれば同じ結果になりました。
ありがとうございました。
0505nobodyさん03/06/17 15:37ID: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}の部分が表示されません。
なぜなのでしょうか?
0506nobodyさん03/06/17 16:03ID:???
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 ()ってどういう意味なのでしょう?
0507nobodyさん03/06/17 16:37ID:???
>506
()の数があってない。
板違いだが、1行目のJSすらエラーだな。
0508nobodyさん03/06/17 16:37ID:AMyzcYWt
$str = 'document.write("<font color="#FF9900">◆</font>リニューアルオープンいたしました!")';
$str =~ s/^\w+\.\w+\(\"(.*)\"\)$/$1/;
0509nobodyさん03/06/17 16:38ID:???
「2chからきました」ってコメントに書いたら値引きしちゃうよ(^_^)v
↓↓↓
 http://www.dvd-yuis.com/
0510nobodyさん03/06/17 16:41ID: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);
}
}

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

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

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

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

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

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

ところで、

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

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

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

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

053752503/06/17 21:58ID:???
>>527

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

どうか教えてください。。。
0538nobodyさん03/06/17 22:13ID:???
>>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
>
0539nobodyさん03/06/17 22:24ID:???
>>533
http://www.kt.rim.or.jp/~kbk/perl5.doc/perldiag.html
054045803/06/17 23:41ID:???
ほんとしつこいけどお願いします。
おっしゃられたとおり、私の環境がおかしいにしても、mt-load.cgiのは正常に表示されるんです。。
だれか、教えてくださいまし・・・・
0541nobodyさん03/06/17 23:48ID:???
>540
そのしつこさを別の方向に向ければいいのに。
正常に動くスクリプトがあるなら、いらない部分をガンガン削って、どの部分でそれを表現してるか調べてみるとかあるだろ。

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

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

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

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


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

(・∀・)ノ" またあとで見に来るよん
055150603/06/18 01:07ID:???
ああああ、情けない。。。。
しかし、デバッガって便利なんですね。使ってみよう。
いままでKCatchしか使ってなかった。
0552nobodyさん03/06/18 01:15ID:???
|_・ ) ワカッタノカナ?
055350603/06/18 02:39ID:???
すいません、もう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;
}
0554nobodyさん03/06/18 02:45ID:???
>553
なんで外部JSをそのまま使わないの?
SSIなくても普通に使えるでしょ。
055550603/06/18 02:52ID:???
>>554
JSの中身を更新できるスキル?があれば十分なのですが、
HTML知らないお客さんに納品するものなので、
外部JSの中身をコンパネで動作できればなと、。
0556nobodyさん03/06/18 03:37ID:???
よくわかんないけど
置換する直前に$topicsを一度はき出して中身を確認したら?

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

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

>>563 JacaScript ?

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

かな。この場合5文字で改行。
0573nobodyさん03/06/18 16:34ID:???
違うと思うが
0574nobodyさん03/06/18 16:46ID:???
>>569
2バイト文字が混在した文字列を途中で分割するのはわりと面倒なので、
そういうのは普通ブラウザの表示に依存させてしまうことが多い。
んで、>>566の質問については板違いにつき、ここでは答えない。
0575nobodyさん03/06/18 17:45ID:???
system("ls");
で、得られたファイル名前、ディレクトリ名前を配列に代入したいんですが
どうすればいいでしょうか?
0576nobodyさん03/06/18 18:21ID:???
>>575
split(/\n/,`ls`);
0577nobodyさん03/06/18 19:49ID: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";
}
0578nobodyさん03/06/18 19:57ID:???
while(1) {
print "ぬるぽ\n";
}
こんな感じに半角でインデントして、
>>578
自分へのアンカーをつけてポップアップで読む
0579nobodyさん03/06/18 20:10ID:???
>>577
>>1に書いてある3つの手順をちゃんと踏んでおくようにね。
あなたの場合、1番目と3番目が書いてない。
0580nobodyさん03/06/18 20:22ID:???
>>577
> Content-type: text/html
不要。
よってPerlとは関係なし。
逝って良し。
058144303/06/18 20:24ID:???
えっと、>>443です。
みなさん色々ありがとうございます。
2日間調べてやっと原因が解りました。
>>463さんが言ったようにサーバー側の設定の問題でした。
$ip = $ENV{'X_FORWARDED_FOR};に変えたら
ちゃんと違ったIPが取得できるようにました。
$useragent = $ENV{'HTTP_USER_AGENT'};でユーザーエージェントも
取得したんですが、私はWindows xpなのにWindows NTになっていました。
こういうもんなんでしょうか?
0582nobodyさん03/06/18 20:25ID:???
>>570
どっちが速いとかの問題じゃない訳で、設計しだいな訳で、Perlと関係ない訳で。
0583nobodyさん03/06/18 20:29ID:???
>>581
Operaだと2000とXPがちゃんと認識されます。
IEだと、2000はNT5.0、XPがNT5.1と識別されます。

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

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

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

これでfileという名前のファイルの有無を確認できますよね?
0595nobodyさん03/06/18 23:01ID:???
>>594
実際に試せ。自分の目で確かめろ。
ついでに「ファイルテスト演算子」でググれ。
0596nobodyさん03/06/18 23:02ID:???
@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お];


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

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

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

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

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

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

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

-e "/path/to/file" and print "存在したポ\n";
0604nobodyさん03/06/19 00:29ID:???
>>600
正規表現使いなさいよ。
0605nobodyさん03/06/19 00:30ID:???
>>602
>>598
0606nobodyさん03/06/19 00:31ID:???
>>602
なあ、なんでsystemなんか使うわけ?
しかもそのリスト・・・
0607nobodyさん03/06/19 00:41ID:???
>>602
うちのActivPerlでも駄目でありました
060849203/06/19 00:44ID:???
謎が解けました。
ループ中にエラー処理はさむと
比較しなくていいものまで反応してエラー出してました。
パスワード間違いの場合はリロードさせる(何もしない)事で回避しましたが
エラー表示やっぱ出したいな……。
0609nobodyさん03/06/19 00:51ID:???
>>608
それは比較のやり方が間違ってるだけだろう
0610nobodyさん03/06/19 00:53ID:???
>>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;
061154303/06/19 00:55ID:???
OSのコマンドを使うにはsystemコマンドと本に書いてあったものですから・・・
いま603さんにいわれたとおりに

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

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

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

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

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

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

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

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

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

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

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

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

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

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

syntax error near unexpected token `$_ or'

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


これから質問する奴は

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

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

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

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

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

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

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

# 結果表示
スルー

↓次の質問ドゾー
0668nobodyさん03/06/20 08:28ID:???
※ 俺脳内処理 ※
if (0) {
  > 1:自分はエロエロ画像が見たい。
  > 2:それでグーグルとか使って検索をやってみたが・・・
  > 3:それだとなぜかグロ画像ばかりが出て上手くイかなかった。
}
0669nobodyさん03/06/20 14:41ID:CDccIPBD
以下の、 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 -->
0670nobodyさん03/06/20 15:00ID:59oEJQW+
下のようにしてクッキーを書いたのですが、
cookies フォルダの中に格納されません。

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

なんで?
0707_03/06/21 18:43ID:???
http://homepage.mac.com/hiroyuki44/
0708nobodyさん03/06/21 18:44ID:???
>>705
chomp();なんかで躓くのが、PHPやってるとは思えんが( ´_ゝ`)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>>747
CGIでパーミッション変えればいい。
つーかユーザ権限でCGI実行できないヘボイところはとっとと見限ったほうが良い。
0749nobodyさん03/06/22 13:41ID:???
>>747
umask関数を調べてみれば解決するでしょう。
0750nobodyさん03/06/22 15:47ID: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}|;
}

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

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

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

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

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

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

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

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

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

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

どういう結果が欲しいのかわからんのでこれだけ。
076675003/06/22 21:35ID: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|;
0767nobodyさん03/06/22 21:49ID:???
>>766
いや、あのさ、間違ったソースを晒されても「何がしたいのか」は分からないんだが……
0768nobodyさん03/06/22 21:59ID:???
>759
丁寧な説明有難うございます。
調子にのてもう一つお聞きしたいのですが、
リファレンスを受け取った側で、undefすると
呼び出し元もクリアされるのでしょうか?^^;

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

その後の処理…

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

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

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

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

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

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

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

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

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

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


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

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

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

スクリプトの最初の方で

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

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

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

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


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

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

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

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

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

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

漏れコーディングより、名前で時間くう…。
こんな漏れって変でつか…?
0819nobodyさん03/06/24 07:31ID:???
>>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" }
}
0820nobodyさん03/06/24 08:07ID:???
>>818
$hensuに。
0821nobodyさん03/06/24 08:34ID:???
>>818
変数名の prefix に規則性持たせてつけてるよ
082281803/06/24 08:49ID:???
>>820
どういうこと?
とりあえず$hensuにしとくってこと?

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

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

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

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

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

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

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

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

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

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

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

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

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

「調べろ」とアドバイス

同情した奴がマジレス

自己解決


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

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

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


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

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

当島  - C5F6 C5E7
島    - C5    E7

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

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

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

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

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

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

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

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

 (いろいろな処理)

 }

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

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

 return(@back);
 }

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

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

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

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

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

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

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

名前:
E-mail:
内容:



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

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


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

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

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

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

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

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

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

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

と書いた次の瞬間に↓

> </bocy>

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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


0999nobodyさん03/06/28 01:32ID:???
999?
1000nobodyさん03/06/28 01:32ID:???
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。