■過去ログ倉庫めにゅーに戻る■
【Perl 】初心者コーナーPart4
- 1 名前:名無しさん 投稿日:2001/03/13(火) 05:49
- 初めて来た方、初心者はまずこのスレッドから始めよう。
尋ねる前に同じ質問がないかこのスレや旧スレ、及び下のリンクを一通り見てみよう。
案外答えはもう書かれているかもしれない。
[関連スレッド]
Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521
【Perl,CGI】参考書籍 http://tako.2ch.net/test/read.cgi?bbs=perl&key=970166109
[総合]
□Perl Com: http://www.perl.com/pub/
□CPAN.com: http://search.cpan.org/
□ActivePerl: http://www.activestate.com/
[お薦め]
・Perl Recipes: http://www.effectiveperl.com/recipes/
・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
[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
[Document&Tutorial]
・Perl News: http://www.news.perl.org/
・Perl Monks: http://www.perlmonks.org/
・PerlMonth - Online Perl Magazine - : http://www.perlmonth.com/index.html
・use Perl All The Perl: http://use.perl.org/
・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
・Perldoc.com: http://www.perldoc.com/
・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
・Rex Swain's Home Page: http://www.rexswain.com/
・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
・Perl Tuts: http://savage.net.au/Perl-tutorials.html
・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
・Perl for Newbie: http://www.harukaze.net/~mishima/perl/index.html
・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
・Perlfect Solutions: http://perlfect.com/
・The Perl Archive : http://www.perlarchive.com/
- 2 名前:名無しさん 投稿日:2001/03/13(火) 05:50
- [Mailinglist]
・FreeML: http://www.freeml.com/ml_mess.php?ml=perl
・OOP w- Perl: http://perl-oop.hoops.ne.jp/
・CGIメーリングリスト: http://forest.ne.jp/cgi-ml/
・WWW Mailing Lists Archives at MPE: http://www.xray.mpe.mpg.de/mailing-lists/
[NetNews Achive]
・fj.lang.perl: ftp://ftp.jaist.ac.jp/pub/news-archive/fj.lang.perl/
・fj.comp.lang.perl: ftp://ftp.jaist.ac.jp/pub/news-archive/fj.comp.lang.perl/
・japan.comp.lang.perl: ftp://ftp.jaist.ac.jp/pub/news-archive/japan.comp.lang.perl/
[Perl for Win32]
・dada's perl lab: http://dada.perl.it/
・Perl for Win32: http://www.northbound-train.com/perlwin32.html
[Perl/Tk]
・Perltk.org: http://perltk.org/
・Perl-Tk 日本語化 パッチ: http://mirror.nucba.ac.jp/users/tsutomu/perltk/jp-patch.html
・有限会社ビットウォーク: http://www1.odn.ne.jp/bitwalk/index.html
・comp.lang.perl.tk FAQ: http://w4.lns.cornell.edu/~pvhp/ptk/ptkFAQ.html
[misc]
・Perl Mongers: http://www.perlmongers.org/
・Embperl: http://perl.apache.org/embperl/
・bio.perl.org: http://bio.perl.org/
- 3 名前:_gunzip 投稿日:2001/03/13(火) 05:55
- ちなみに、↑のリンクは、↓のスクリプトでIEのお気に入りをリスト化したものから、
2/3ほど削除して短くしたものです。
#朝起きて作成10分テスト5分
#!/usr/bin/perl -w
sub walkdown{
    my($dir,$level) = @_;
    local(*D,*F);
    my($basename,$url,$path);
    
    opendir(D,$dir) or die "Can't open $dir";
    foreach(readdir(D)){
        next if $_ eq '.' or $_ eq '..';
        $path = "$dir/$_";
        if(-f $path){
            if(/^([^\/]+)\.url\z/i){
                $basename = $1;
                open(F,$path) or die "Can't open $path";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(<F>){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url = $1 if /^URL=(.+)\z/;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close F;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print " " x $level , "・$basename: $url\n";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}elsif(-d _){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print " " x $level , "[$_]\n";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;walkdown($path,$level + 1);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;closedir(D);
}
walkdown("C:/Windows/Favorites/Perl",0);
- 4 名前:名無しさん 投稿日:2001/03/13(火) 06:17
- お疲れ様ー
- 5 名前:_gunzip 投稿日:2001/03/13(火) 06:41
- >>4
ありがとー
- 6 名前:名無しさん 投稿日:2001/03/13(火) 08:49
- >>3
自慢したくて仕方ないんだね。
- 7 名前:名無しさん 投稿日:2001/03/13(火) 09:17
- >>6
自慢だろうと何だろうと、便利なんだからいいじゃん。感謝感謝
- 8 名前:名無しさん 投稿日:2001/03/13(火) 10:06
- >6
お前もたいがいつまらんな奴だな。
- 9 名前:_gunzip 投稿日:2001/03/13(火) 10:59
- >>6
別にそんなつもりはないない。
朝起きて、いちいちURLをコピーして貼り付けるのを繰り返すのが面倒だから書いただけ。
こういったことがすぐに出来てPerlは便利だな、と思ったから貼り付けただけで
(確かに余計なことだったな。今後はやらない)別に他意は無い。
---
それ以前に、自分には>3は単なる書き捨ての(ゴミ)スクリプトにしか見えないのだが、
一体何処から「自慢」云々といった発想が浮かんでくるのか、さっぱり分からん。
もしかして、3が「人に自慢できる」レベルのものに見えるのか?
- 10 名前:あらすぃ 投稿日:2001/03/13(火) 11:20
- 6=粘着,低レベル厨房
- 11 名前:6 投稿日:2001/03/13(火) 11:52
- >>9
判れば宜しい。
「朝起きて作成10分テスト5分」と書かなければ良かったのだが。
- 12 名前:JAPA (Just Another Perl Analer) 投稿日:2001/03/13(火) 12:16
- 完全にスレと関係無い話のような気が・・・。
- 13 名前:_gunzip 投稿日:2001/03/13(火) 12:38
- >>11
ああ、そこが悪かったのか。
何気なく書いただけなのだが、確かに、そう取られても仕方ない。
(別に嘘を書いたわけではないが、余計なことを書いたのは事実だな。
あれは、ただ「Perlだとすぐに書けるのう」と言いたかっただけだ。
誤解を与えたなら、すまん。)
ん、今後は気をつけないと。
>>12
すみません。自分の不注意故です。
- 14 名前:名無しさん 投稿日:2001/03/13(火) 12:47
- >6
毎朝1センチずつ刻まれて死んでくれ。
>13
おれも妬まれるくらいになりたいにょ。
- 15 名前:名無しさん 投稿日:2001/03/13(火) 12:47
- >JAPA
Analerってアナル人ですか(萌
- 16 名前:名無しさん 投稿日:2001/03/13(火) 12:48
- gunzipさんは大人やねえ。
- 17 名前:名無しさん 投稿日:2001/03/13(火) 12:57
- なんか変な雰囲気ですけど・・・まあいいや
Perlにはswitch文がないらしいですけど、その代替として本に載っている
(Black Bookとかいう本に載っていました)
SWITCH{
if /pattern/ && do{
last SWITCH;
}
if /pattern2/ && do{
last SWITCH;
}
}
とか、if ... elsif 以外のやり方ってありませんか?
どうも上の二つはしっくりこないので。
- 18 名前:名無しさん 投稿日:2001/03/13(火) 13:06
-
foreach ($key) {
&nbsp; /pattern$/ and last;
&nbsp; /pattern2$/ and ptn2();
}
- 19 名前:/bin/名無しさん 投稿日:2001/03/13(火) 13:51
- 自分のレベルがばれるのは情けないが。
default が非常にあやしいというのは内緒だ。
---
package Switch;
use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(switch case break);
=usage
use Switch;
chomp($value = <>);
switch $value,
case 'a' => sub {
print "This is first a.\n";
},
case 'b' => sub {
print "This is first b.\n";
break;
},
case 'a' => sub {
print "This is second a.\n";
},
case 'b' => sub {
print "This is second b, but will not display ...\n";
},
default => sub {
print "Other.\n";
};
=cut
BEGIN {
_init;
}
sub break {
'break';
}
sub switch ($%) {
my($value, %other) = @_;
_default(%other);
if(exists $subs{$value}) {
foreach (@{$subs{$value}}) {
last if(&$_ eq 'break');
}
}
elsif($default) {
&$default;
}
_init;
}
sub case ($$;%) {
my($k, $v, %other) = @_;
unshift(@{$subs{$k}}, $v);
_default(%other);
();
}
sub _default (%) {
my(%other) = @_;
my($k ,$v);
while(($k, $v) = each(%other)) {
$default = $v if($k eq 'default');
}
}
sub _init {
%subs = ();
$default = '';
$break = 0;
}
1;
- 20 名前:/bin/名無しさん 投稿日:2001/03/13(火) 13:53
- break もあやしいな。
ちなみにネタなので本気にして使わないように。
- 21 名前:17 投稿日:2001/03/13(火) 15:26
- >>18さん19-20(/bin/名無しさん)さん
いろいろありがとうございます。ただ、
すみません。もう少し短くなるようないいアイディアはないでしょうか。
なぜこんな事を聞いているかというと、今書いているスクリプトで、
if($mode eq "a"){a()}
elsif($mode eq "b"){b()}
elsif($mode eq "c"){c()}
elsif($mode eq "d"){d()}
elsif($mode eq "e"){e()}
elsif($mode eq "f"){f()}
else{default()}
こんな処理が何回も延々と続くので、何とかならないかなあ
とおもって質問したのですが・・・
- 22 名前:_gunzip 投稿日:2001/03/13(火) 15:40
- >>21
21を見る限り、$mode と同名のサブルーチンを呼び出したいように見える
けれど、その解釈であっているかな?
で、そうなら、何度もその分岐があるそうなので、その部分をサブルーチン
に纏めるか、ハッシュを使用すると良いと思う。
#!/usr/bin/perl -w
$mode = "hoge"; #いろいろ
%subs = map{($_ => \&{$_} )} qw(a b c d e f);
&{$subs{$mode} or "default"}();
#サブルーチン(内容は適当)
sub a{ print "a() called";}
sub b{ print "b() called";}
sub c{ print "c() called";}
sub d{ print "d() called";}
sub e{ print "e() called";}
sub f{ print "f() called";}
sub default{print "default() called";}
- 23 名前:_gunzip 投稿日:2001/03/13(火) 15:43
- >>21
あと、perldoc perlsync の、"Basic BLOCKs and Switch Statements"
を読むと更に良いと思います。
- 24 名前:T女の竹田 投稿日:2001/03/13(火) 16:13
- >>21=17さん
gunzipさんの>>22のコードが理想的だと思います。
ただ、Perl初心者の自分が書くとしたら、こうかな?
#!/usr/bin/perl&nbsp;-w&nbsp;
$mode='b';
@subnames=('a','b','c','d','e','f');&nbsp;&nbsp;#サブルーチン名のリスト
$flag='false';
foreach&nbsp;(@subnames)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($mode&nbsp;eq&nbsp;$_)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&{$mode};
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$flag='true';
&nbsp;&nbsp;&nbsp;&nbsp;}
}
if&nbsp;($flag&nbsp;ne&nbsp;'true')&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&default;
}
#以降サブルーチン
sub&nbsp;a{&nbsp;print&nbsp;"a()&nbsp;called";}&nbsp;
sub&nbsp;b{&nbsp;print&nbsp;"b()&nbsp;called";}&nbsp;
sub&nbsp;c{&nbsp;print&nbsp;"c()&nbsp;called";}&nbsp;
sub&nbsp;d{&nbsp;print&nbsp;"d()&nbsp;called";}&nbsp;
sub&nbsp;e{&nbsp;print&nbsp;"e()&nbsp;called";}&nbsp;
sub&nbsp;f{&nbsp;print&nbsp;"f()&nbsp;called";}&nbsp;
sub&nbsp;default{print&nbsp;"default()&nbsp;called";}&nbsp;
それにしてもgunzipさんのコードは勉強になります。
自己流でやってきたので、mapとかを使ったこともほとんどないし^^;
- 25 名前:T女の竹田 投稿日:2001/03/13(火) 16:15
- s/gunzip/_$&/でしたね、ごめんなさいm(_ _)m
- 26 名前:名無しさん 投稿日:2001/03/13(火) 17:25
- #!/usr/local/bin/perl
system "shutdown";
これ書くとどうなるの?怖くて出来ないぞ。
- 27 名前:名無しさん 投稿日:2001/03/13(火) 19:28
- おまえにはそんな権限は無い。
- 28 名前:名無しさん 投稿日:2001/03/13(火) 20:24
- >>22
use strict下でdefaultが呼ばれたときにエラーになっちまうので、
$mode = 'default' unless exists $subs{$mode} ;
&{$subs{$mode}}();
のほうがよいですね。
というのを踏まえて、俺が書くなら、
use strict;
my %subs = (
a => sub { return 'a called' },
b => sub { return 'b called' },
c => sub { return 'c called' },
d => sub { return 'd called' },
e => sub { return 'e called' },
f => sub { return 'f called' },
def => sub { return 'default called' }
);
my $mode = 'hoge';
$mode = 'def' unless exists $subs{$mode};
print $subs{$mode}();
こんな感じ。
- 29 名前:名無しさん 投稿日:2001/03/13(火) 20:30
- もしくは、
exists $subs{$mode} ? $subs{$mode}() : &default;
って感じだな。
- 30 名前:28 投稿日:2001/03/13(火) 20:50
- あぁ、鬱だ。ミス連発。
$mode = 'default' unless exists $subs{$mode} ;
やるなら、
%subs = map{($_ => \&{$_} )} qw(a b c d e f default);
もやっておかなければなりませんね。
_gunzipさんはわかるだろうけど、わからない人に出来ねーぞって
言われたら落ちるので、補足。
失礼。
- 31 名前:_gunzip 投稿日:2001/03/13(火) 22:36
- >>24-25(T女の竹田),28-30さん。フォローありがとうございます。
>28-30
>use strict下でdefaultが呼ばれたときにエラーになっちまうので、
確かに。普段-wは付けているのですが、strictは無闇に口うるさい
ような気がするので、いつも500行を越えた辺りから付けることにしていました。
ということもあって、>22では、strictをつけた際の挙動については全く考えて
いませんでした。(指摘してくれてありがとう)
んで、僕の代案ですが、こんなのはいかがでしょ。(use strictでも通ります)
$subs{("default",$mode)[exists $subs{$mode}]}();
---
#!/usr/bin/perl -w
use strict;
#our って、5.6以降でしか使えないかも
our %subs = ();
our $mode = "hoge";
%subs = map{($_ => \&{$_} )} qw(a b c d e f default);
$subs{("default",$mode)[exists $subs{$mode}]}();
#サブルーチンは省略
- 32 名前:( ´∀`)さん 投稿日:2001/03/13(火) 23:14
- ふうむ。いろんな人のコードがみられて勉強になるな・・・・
みなさん頑張ってくだされ
- 33 名前:32 投稿日:2001/03/13(火) 23:15
- クッキー残ってた・・・鬱だ・・・
(いつもどこにいるかまるわかりじゃん)
- 34 名前:名無しさん 投稿日:2001/03/13(火) 23:18
- (FALSE_EXPR, TRUE_EXPR)[TEST_EXPR]
すごいトリッキー・・・はじめて見た。
ふつうに使われてるのですか?こういうのって。
ただ、実装は別として、exists は偽真を返すわけで、0 or 1 を
返すことが保証されてはいないと思うので、注意が必要かも。
これなら、
$subs{ exists $subs{$mode} ? $mode : "default" }();
のほうが安全でない?
- 35 名前:_gunzip 投稿日:2001/03/13(火) 23:47
- >>34
>ふつうに使われてるのですか?こういうのって。
さあ、そんなことはないと思います・・・
>exists は偽真を返すわけで、0 or 1 を
>返すことが保証されてはいないと思うので、注意が必要かも。
僕もそう思います。う〜ん。ただ、こんなやり方もある、ということで。
>$subs{ exists $subs{$mode} ? $mode : "default" }();
>のほうが安全でない?
これも、全くその通りだと思いますです。
この書き方も考えたのですが(というか、始めこれしか思いつかなかった)
もうちょっといい方法はないかなあ、と考えているうちに、少し前、
ループの中で変数$indexの値を、0->1->2->3->0->1->2->3->0->1->...
のように変化させる(0からスタートして3までインクリメントしたらリセット)際、
$index++ % 4;
とか、
$index = 0 if $index++ < 4;
に混じって、
$index *= if $index++ < 4;
のようにも書けるなあ、と思ったのを思い出して、ふと
$subs{("default",$mode)[exists $subs{$mode}]}();
もいけるな、と書いたわけです。
#やっぱり、ちょっと変な書き方ですな・・・
#しかし、長い・・・
- 36 名前:/bin/名無しさん 投稿日:2001/03/14(水) 00:15
- 31 のトリックは普通思いつかない・・・。
>>35
$index++ % 4; # $index への代入が無い
$index = 0 if $index++ < 4; # $index は 0 か 4以上
$index *= if $index++ < 4; # エラー
になりますが。
- 37 名前:_gunzip 投稿日:2001/03/14(水) 08:48
- >>36
間違い間違い。
>$index *= if $index++ < 4; # エラー
は、($index = 0から)
$index *= $index++ < 3; # エラー
>$index++ % 4; # $index への代入が無い
代入せずに、$array[$index++ % 4]とかで使う(って書いとかないと)
>$index = 0 if $index++ < 4; # $index は 0 か 4以上
は、($index = -1;からスタート)
$index = 0 if $index++ > 2;
これもミス・・・(三つとも間違っているなんてどうかしてるなあ)
- 38 名前:_gunzip 投稿日:2001/03/14(水) 08:49
- またやった
>$index *= $index++ < 3; # エラー
は、
$index *= $index++ < 3;
(エラーにはならないです)
- 39 名前:_gunzip 投稿日:2001/03/14(水) 09:08
- #とことん不注意だな。俺は。
間違い・・・>37の最初のは$index = -1から。
↓テスト
$index = -1;
$count = 20;
while($count--){
&nbsp;&nbsp;&nbsp;&nbsp;$index *= $index++ < 3;
&nbsp;&nbsp;&nbsp;&nbsp;print "$index->";
}
#result
0->1->2->3->0->1->2->3->0->1->2->3->0->1->2->3->0->1->2->3->
- 40 名前:JAPA (Just Another Perl Analer) 投稿日:2001/03/14(水) 10:11
- エヘン虫たじたじ。
たけし監督もたじたじ。
_gunzipさんもたじたじ。
- 41 名前:名無しさん 投稿日:2001/03/14(水) 10:19
- ↑何言うとるのかわからん
- 42 名前:名無しさん 投稿日:2001/03/14(水) 10:32
- 6 = japu
- 43 名前:名無しさん 投稿日:2001/03/14(水) 14:38
- 一般的に言って、どのDBMを使うのがいいですか?
格納したいのは千件程度なので簡単に済ませたいのですが。
- 44 名前:名無しさん 投稿日:2001/03/14(水) 23:19
- Perlでファイルの属性を変えるにはどうすればいいのですか?
- 45 名前:44 投稿日:2001/03/14(水) 23:39
- chmod見つけた。鬱
- 46 名前:名無しさん 投稿日:2001/03/15(木) 01:17
- アルファベットの辞書を作成できるCGIを探しています。御存知の方,ぜひ教えてください。
- 47 名前:名無しさん 投稿日:2001/03/15(木) 02:43
- http://www.***.com/redirect.cgi?url=http://www.***.net/
のような形で、別のページに飛ばすCGIを作っていただけないでしょうか。
- 48 名前:名無しさん 投稿日:2001/03/15(木) 03:08
- マルチポストはやめましょ。
#!/usr/bin/perl
print "Location: ", ($ENV{QUERY_STRING} =~ /url=(.+)/), "\n\n";
これを使って何をやりたいのかいまいち掴めないけど?
- 49 名前:名無しさん 投稿日:2001/03/15(木) 18:29
- 転送サービスのCGI欲しいです
作ってください
裏ニュースみたいな感じのやつ。
- 50 名前:名無しさん 投稿日:2001/03/15(木) 19:01
- >>49
Shine,Bokenasu!
- 51 名前:名無しさん 投稿日:2001/03/15(木) 21:35
- Perl/CGIの勉強のためによくスクリプトを読め、と言われますが、
初級者が読むのにおすすめのスクリプトはありますでしょうか。
CGIとしての利用を考えているので、できればCGIスクリプトを希望。
- 52 名前:名無しさん 投稿日:2001/03/15(木) 21:49
- >>51
KENT-WEB
http://www.kent-web.com
- 53 名前:51 投稿日:2001/03/15(木) 21:56
- >>52
アドバイスありがとうございます。
が…、失礼なんですが、マジレスですか?
KENT WEBってここじゃすごい評判悪いですよね…。ネタ?
- 54 名前:49 投稿日:2001/03/15(木) 21:57
- >>50
Shineは意味が分かりますが、Bokenasu!とはどういう意味ですか?
- 55 名前:_gunzip 投稿日:2001/03/15(木) 22:14
- >>53
japuさんの
http://yasu.asuka.net/soft/tinybbs.html
なんかは?
- 56 名前:名無しさん 投稿日:2001/03/15(木) 22:49
- >JAPA
それ、本家と紛らわしいです。
- 57 名前:名無しさん 投稿日:2001/03/15(木) 23:15
- >>49
海外で探せよ、馬鹿。
http://www.cgi-resources.com/
- 58 名前:名無しさん 投稿日:2001/03/15(木) 23:27
- >>57
作ってくださいとか欲しいとかぬかすスレ違いの
ボケを甘やかすな。
- 59 名前:49 投稿日:2001/03/15(木) 23:32
- どうして誰もまともに答えてくれないのかな?
もしかしてここにいる人たちって、人を馬鹿にすることはできるけど
知識全然ないのかな。暇つぶしにきているだけ?
それなら、こんな変な人のところできいた漏れが間違っているということか。
- 60 名前:名無しさん 投稿日:2001/03/15(木) 23:36
- ↑コピペ
http://yasai.2ch.net/test/read.cgi?bbs=win&key=984481191
- 61 名前:名無しさん 投稿日:2001/03/15(木) 23:43
- カウンタのスクリプト。
開始時の値を変更するのは何をどう変更してやればいいの?
- 62 名前:名無しさん 投稿日:2001/03/16(金) 00:01
- >>61
ログ。
これ以上の回答はその質問の仕方じゃ無理。
なんで細かい情報を書かないの?
超能力者でもないかぎりあなたがどんなスクリプト使ってるのか
どんな環境なのかわかるわけないでしょ。
それが分からなきゃまともな回答なんて誰も出来ないぞ。
- 63 名前:61 投稿日:2001/03/16(金) 00:21
- ごめん。めっちゃ説明足りなかった。
KENTの、
http://www.kent-web.com/count/ecount.html?
このスクリプトです。
- 64 名前:はう 投稿日:2001/03/16(金) 00:30
- >61
希望のカウント数までリロードしましょ
- 65 名前:62 投稿日:2001/03/16(金) 00:38
- ecount.datをメモ帳で開いて希望カウント数を書くだけでOK。
- 66 名前:61 投稿日:2001/03/16(金) 00:48
- >>62
ありがとう!恩にきるよ。
- 67 名前:何も分かっていない人 投稿日:2001/03/16(金) 10:00
- Perl5.6 って、何が変わったのですか?
今までのスクリプトが動かなくなることってあります?
そもそも、入れる価値ってありますか?
- 68 名前:名無しさん 投稿日:2001/03/16(金) 11:45
- >>67
もしかして、ユーザーに入れろと
せっつかれた へぼへぼ管理者?
原則として動かなくなることはありません。
処理速度が速くなりました。
入れなければ、ユーザーから鉄槌を下されます。
と書いて、5.6化を推進しておこう。
つか、資料あふれてるだろ。 ちょっとは調べなよ (脱力)
- 69 名前:何も分かっていない人 投稿日:2001/03/16(金) 12:44
- >>68
いや、これからPerlを勉強しようと思っていたのですが、
5.6と5.005があるようで、どちらを入れるべきか、と思ったからです。
(「そもそも、入れる価値ってありますか? 」っていう聞き方が悪かったかも)
とにかくありがとう。
- 70 名前:68 投稿日:2001/03/16(金) 12:52
- そうだったんだ。ごめん。
それなら、問答無用で5.6。
十分、安定していると思います。
- 71 名前:名無しさん 投稿日:2001/03/16(金) 13:37
- Perlはよく使うのですが、
他のプラットフォームから持ってきたPerlスクリプトを
漢字コードを変換してから実行するのには、
やはり、nkf等でいったん変換して書き換えるか、
別ファイルに落として、それを実行するしかないのでしょうか????
例えば、test.plがEUCとして、
nkf32 -s test.pl >test.pls
perl test.pls
とか。
- 72 名前:名無しさん 投稿日:2001/03/16(金) 13:46
- >>71
ん? 別にどこでも一緒ですよ。
文字化けしたら、変換したらどうですか?
- 73 名前:_gunzip 投稿日:2001/03/16(金) 13:49
- >>71
perl -M"Filter::exec qw[nkf32 -s]" script_name
- 74 名前:_gunzip 投稿日:2001/03/16(金) 13:51
- あと、何度も使用するスクリプトならば、面倒くさがらず変換した方がいい。
>73のにはFilterモジュールが必要。
- 75 名前:69 投稿日:2001/03/16(金) 13:57
- >>70
いえいえ。自分の質問の仕方が悪かったです。(名前欄も)
上のリンクにあったサイトからActivePerl5.6というのをダウンロードして
インストールしました。
perl -v
でちゃんとThis is Perl.....とかが出てきたので大丈夫だと思います。
また何かあったらここに質問させてもらうかもしれません。
ありがとうございました。
- 76 名前:名も無き冒険者 投稿日:2001/03/16(金) 14:22
- アクセスした人に5段階で評価してもらう
プログラムを作りたいと思っています
(ジオシティのランキングみたいなやつ)
ソースを公開しているサイトはありませんか?
漠然とした質問ですいません
- 77 名前:49 投稿日:2001/03/16(金) 14:43
- >>76
名前以外に何がないの?
- 78 名前:名無しさん 投稿日:2001/03/16(金) 15:18
- 相対パスって一体なんですか?
- 79 名前:/bin/名無しさん 投稿日:2001/03/16(金) 15:30
- >>78
現在のディレクトリから見たパスが相対パスだということを
勉強する前にもっと勉強することありと見たが如何。
- 80 名前:めっちゃ初心者です@カウンタについて 投稿日:2001/03/16(金) 15:51
- http://www.din.or.jp/~ohtan/cgi.html
ここのスクリプトなんですが、8番に
8.GIF画像格納用ディレクトリ(通常は変更不要)
$imgdir = './images/';
と書いてあります。
それで、私がスペースを借りているサーバは、cgiディレクトリには画像が置けないんです。
http://×××/cgi-bin/image/
に、カウンター用の画像が置いてある場合、この部分をどう書き直してやればいいのでしょうか。
初歩的な質問ですみませんが、宜しくお願い致します。
- 81 名前:80 投稿日:2001/03/16(金) 15:53
- すみません、間違えました。
画像が置いてあるのは
http://×××/image/count
です。
- 82 名前:名無しさん 投稿日:2001/03/16(金) 15:59
- $imgdir = '../image/count/';
は?
- 83 名前:名無しさん 投稿日:2001/03/16(金) 16:00
- 一般的な、場所借りサーバーだと
'../image/count/'になるかなあ。
URLではなくてFTPでパスを確認してね。
#CGIの質問スレのがいいかなあ。
- 84 名前:80 投稿日:2001/03/16(金) 16:03
- >>82
>>83
すみません、ありがとうございました。
参考にさせて頂きます。
- 85 名前:71 投稿日:2001/03/16(金) 16:06
- >>72-74
ただ単にバッチ処理で全て変換すれば済むことでした・・・・すみません。
>>72
>文字化けしたら、変換したらどうですか?
ハイ。その通りです・・・
>>73-74
Filterモジュールなんて知らなかったので、勉強になりました。
- 86 名前:名無しさん 投稿日:2001/03/16(金) 16:59
- while($line = <RIREKI>){
chomp($line);
if($flag == 0){
if($n eq ''){
if($line eq "[$mon]"){
$flag = 1;
}
next;
}elseif($n ne ''){
if($line eq $n){
$flag = 1;
}
next;
}
}elsif($line =~ /\[/){
last;
}else{
($namae, $hiduke) = split(/:/, $line);
以下省略。
これだとエラーになってしまいます。
間違いがわかりません、指摘してください。
- 87 名前:86 投稿日:2001/03/16(金) 17:02
- while($line = <RIREKI>){
chomp($line);
if($flag == 0){
if($n eq ''){
if($line eq "[$mon]"){
$flag = 1;
}
next;
}elseif($n ne ''){
if($line eq $n){
$flag = 1;
}
next;
}
}elsif($line =~ /\[/){
last;
}else{
($namae, $hiduke) = split(/:/, $line);
あれ、タブが反映されない?
- 88 名前:_gunzip 投稿日:2001/03/16(金) 17:06
- >>86-87
×elseif
○elsif
あと、ブラケットの整合はとれてる?
while($line = <RIREKI>){
&nbsp;&nbsp;&nbsp;&nbsp;chomp($line);
&nbsp;&nbsp;&nbsp;&nbsp;if($flag == 0){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($n eq ''){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($line eq "[$mon]"){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$flag = 1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}elsif($n ne ''){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($line eq $n){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$flag = 1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}elsif($line =~ /\[/){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;last;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;($namae, $hiduke) = split(/:/, $line);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
}
- 89 名前:86 投稿日:2001/03/16(金) 17:06
- 2回も書いてすみません
変数の値は正常に与えられると考えてください
- 90 名前:86 投稿日:2001/03/16(金) 17:12
- >>88
初歩的なミスをやってしまいました。(汗
ありがとうございました。
- 91 名前:名無しさん 投稿日:2001/03/16(金) 17:34
- >>80
もう遅いかもしらんが、CGIでgifを読み込むタイプのカウンタだから、
gifの位置変えなくてもOKだと思うぞ。
- 92 名前:名無しさん 投稿日:2001/03/16(金) 22:23
- >73のモジュールとかってドコにあるの?
そもそもモジュールってどうやってインストすんの?
- 93 名前:名無しさん 投稿日:2001/03/16(金) 23:22
- お手本を見ながらPerlの勉強をしているのですが、UNIXとちがって
NTはシンタックス(?)が甘いと聞いたのですが、これはどういう意味なのでしょうか?
- 94 名前:名無しさん 投稿日:2001/03/16(金) 23:39
- >>93
syntaxは構文とか、(プログラミング言語の)文法といった
意味合いで使いますが、そんな話は初めて聞きました。
- 95 名前:80 投稿日:2001/03/17(土) 00:06
- >>91
91さんの言ったとおりに素直に設置してみたら、出来ました。
すごく嬉しいです、ありがとうございました!
- 96 名前:名無しさん 投稿日:2001/03/17(土) 09:11
- >>93
それを聞いた相手に質問するべきだね
同じバージョンならOSは違っても文法は同じですよ
- 97 名前:名無しさん 投稿日:2001/03/17(土) 22:25
- 窓でActivePerl使ってるけれど、Perlのモジュールって依存性とかは気にしなくていいの?
何の気無しにインストールしたりアンインストールしたりしてるけど。
- 98 名前:_gunzip 投稿日:2001/03/17(土) 22:41
- 普通、一度入れたモジュールをアンインストールしたりはしないと思うのだが・・・・
気になるなら・・・
--------------------
#!/usr/bin/perl -w
use PPM;
%installed_packages = PPM::InstalledPackageProperties();
while(($modname,$property) = each %installed_packages){
&nbsp;&nbsp;&nbsp;&nbsp;if(defined $property->{'DEPEND'}){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "$modname depends on " , join(",",@{$property->{'DEPEND'}}) , "\n";
&nbsp;&nbsp;&nbsp;&nbsp;}
}
--------------------
- 99 名前:_gunzip 投稿日:2001/03/17(土) 22:43
- うちではこんなのが出てきた
Class-Tom depends on Devel-Symdump
GDTextUtil depends on GD
Tk-ObjScanner depends on Tk
URI depends on MIME-Base64
GDGraph depends on GDTextUtil,GD
libwww-perl depends on HTML-Parser,URI
DBD-CSV depends on Text-CSV_XS,SQL-Statement,DBI
Chart depends on GD
PPM depends on HTML-Parser,Archive-Tar,URI,Compress-Zlib,XML-Element,MIME-Base64,libwww-perl,XML-Parser
Jcode depends on MIME-Base64
Tk-GBARR depends on Tk
XML-Element depends on XML-Parser
SOAP-Lite depends on URI,MIME-Base64,libwww-perl,XML-Parser,MIME-Tools
あんまり正確じゃないような・・・
- 100 名前:97 投稿日:2001/03/17(土) 22:45
- >98
おお、サンキュ
わざわざ書いてくれてありがとな。今から試してみるわ。
- 101 名前:97 投稿日:2001/03/17(土) 22:56
- あんま出てこないな。
PPMなんてモジュール始めて知ったわ。
今日はしばらくコイツで遊ぶか。
>99
PPM経由でインストールしたものしか情報がないのかもなあ。
_gunzipわざわざありがと。
- 102 名前:初心者 投稿日:2001/03/18(日) 08:14
- STDIN,STDOUT,STDERR って、どう読むのかな?
あと、elsif、=~とかも。
- 103 名前:_gunzip 投稿日:2001/03/18(日) 09:21
- スタッドイン、スタッドアウト、スタッドエラー
えるじふ、イコールチルダ(ってそのまま)
↑あくまで個人的に。
#")"をコッカと読むのは異端か.......
- 104 名前:17 投稿日:2001/03/18(日) 09:41
- 遅レスですみません。
結局、ハッシュを使った>>22,28,-30の方法でやることにしました。
18さん19-20(/bin/名無しさん)さん
22-23,31(_gunzip)さん24(T女の竹田)さん、28-30さん
たくさんの方、ありがとうございました。
本当に参考になりました・・・(分からないことの方が多かった・・・)
(mapとか、リファレンス/シンボリックリファレンスとか・・・)
- 105 名前:名無しさん 投稿日:2001/03/19(月) 06:33
- 異端です
- 106 名前:CC** 投稿日:2001/03/19(月) 10:40
- >>102
スタンダードインプト、スタンダードアウトプット、スタンダードエラー
エルスイフ
- 107 名前:T女の竹田 投稿日:2001/03/19(月) 11:14
- >>102
エスティーディーイン、エスティーディーアウト、エスティーディーエラー。
言われてみると、=~ってなんて読むのかなぁ。
- 108 名前:名無しさん 投稿日:2001/03/19(月) 12:01
- "elsif"が 「エルスイフ」な以外は _gunzip氏と同じ。
ASP(VBScript)/PHPで"elsif"って書いたり、 Perlで"elseif"って書いてみたりと
間違いが減りません。
- 109 名前:名無しさん 投稿日:2001/03/19(月) 13:26
- 質問させてください。
フォームから受け取ったデータを
CSVファイルに書き出すスクリプトを作っているのですが
受け取るデータ中に半角カンマがあった場合に
これを全角カンマに変換してデータファイルに記録したいのですが
どうしたらよいのでしょうか。
また、データを受け取った段階で
以下のように改行コードを取り除いているのですが
$*** =~ tr/\r\n//d;
CSVファイルのみにデータ出力するならば構わないのですが
メール送信&htmlに結果出力もしているため
この場合、どうにも読みにくいのです。
よって、メール本文とhtml出力時には改行コードを削除せず
CSVファイルに書き出す段階で削除したいのですが
これは可能でしょうか。
$*** =~ s/\n/<br>/g;
という手も考えたのですが、メールとしても出力することを考えると
この場合、あまり現実的ではないのかなと思いました。
どうかアドバイスを宜しくお願い致します。
- 110 名前:名無しさん 投稿日:2001/03/19(月) 13:57
- 掲示板スクリプトを作ってます。
掲示板に書き込んだ後、更新するときに、
print "Location: http://hoge.com/hoge.cgi\n\n";
みたいに自分のCGIに飛ばしてあげてるんですけど、
ローカル環境だと上手くいったんですが、
サーバーにアップしたら上手くいかなくなりました。
書き込み処理自体はきちんと済んでましたんで、
この部分が悪いんだと思うんですが…。
ちなみにアップしたときにPATHはちゃんと合わせました。
- 111 名前:110 投稿日:2001/03/19(月) 14:08
- PATHというかURLですね(^^;
- 112 名前:がんばらなきゃ 投稿日:2001/03/19(月) 14:09
- 全くのどしろうとですが、
アンケートの集計システムを作ることにしました。
概要は、来訪者が20前後の質問に答えると、名前がのり、
そのまま集計表とその結果が見られるというもので、
1000人くらいに対応できたらと思います。
どこから、手をつけていいのやら、まったくわかりません。
私のパソ能力は、ドリームウェーバーを使えて、
表計算はどうにか関数計算ができ、HTMLは基礎だけです。
よろしくお願いします。それと、MACです。
- 113 名前:/bin/名無しさん 投稿日:2001/03/19(月) 14:21
- >>109
その tr のあたりに s/,/,/g; とはいかないのか?
あとは、改行削除の前のデータを保存しとけば良い。
>>110
自分ではわからないので他待ち。
>>112
ネタにも見えるが。一言で書けるものでもなし、まずは
探してみるのが一番かと。
- 114 名前:がんばらなきゃ 投稿日:2001/03/19(月) 14:41
- >>113
>ネタにも見えるが。一言で書けるものでもなし、まずは
>探してみるのが一番かと。
モロマジ、です。できたら一週間ぐらいで作りたいです。
探せばというのは、うまくいけば、
そのまま使えそうな無料CGIがあるかも、ってことですか??
それと、どちらにしろ、自分でカスタマイズしなければ
いけないと思うのですが、
言語とか、どの程度の知識があればできるんでしょう。
ついこの間まで、CGとCGIの区別もつかなかったもんで、よろしくです。
ということですか
- 115 名前:名無しさん 投稿日:2001/03/19(月) 14:48
- >>110
tok2とか一部の鯖(主にフリー鯖)では Location ヘッダ使えないよ。
広告表示に mod_layout 使ってるかららしい。
見当違いだったらスマソ
- 116 名前:名無しさん 投稿日:2001/03/19(月) 14:50
- 変数(?)で分からないことがあるので質問します。
ここで良く見かけるものに『$_』という変数(?)がありますが、
これはどういう意味でどのような場合に用いるものなのでしょうか?
宜しくお願いします。
- 117 名前:110 投稿日:2001/03/19(月) 15:03
- >>115
まさにそれです!tok2鯖使ってました。
う〜ん、じゃあどうしましょ。
HTMLのMETAタグを記述して飛ばすという方法も思いつくんですが、
0秒指定すると戻るボタンが使えなくなるんで嫌なんですよ。
何かいい方法ないですかねぇ。
- 118 名前:110 投稿日:2001/03/19(月) 15:13
- >>116
Perlで最初から用意されている省略可能な変数です。
変数名を省略したときは勝手に$_に入ります。
例えば、
foreach (@list){処理;}と、
foreach $_ (@list){処理;}は同義です。
慣れると使い勝手が良いです。似たようなものに@_があり、
こっちは配列を表します。
- 119 名前:110 投稿日:2001/03/19(月) 15:45
- >>118
なるほど・・・。
なんとなく理解できそうで理解できていないような・・・<私
いろんなサンプルをみて、また自分で作って勉強します。
ありがとうございました。
- 120 名前:116 投稿日:2001/03/19(月) 15:47
- >>119
すんません。『投稿者』の欄、間違えました。
欝です。死にません。
- 121 名前:名無しさん 投稿日:2001/03/19(月) 16:46
- フリーで使えるCGIでランダムに画像を表示できるものを
置いてあるHPを教えて欲しいです。
ただし、私のプロバイダは画像はCGIサーバーにおいても
表示されないので、画像はHPサーバーにおけるのが欲しい
んです。
よろしくおねがいします。
- 122 名前:名無しさん 投稿日:2001/03/19(月) 17:04
- >>113
ありがとうございます。
で、s/,/,/g; を試してみたのですが
なぜかカンマがドットと置換されてしまいます。
これは、jcode.plや cgi-lib.plなどを使用しているせいでしょうか。
すいません、最初に書いておくべきでした
>改行削除の前のデータを保存しとけば良い。
これは、処理の順番ということでしょうか。
データ書き込み処理の後に改行削除処理を行えばいいのでしょうか。
聞いてばっかりですみません。
ちょっと試してみますね。
- 123 名前:122 投稿日:2001/03/19(月) 17:20
- すいません。
半角カンマ→全角カンマの置換できました。
自分で半角カンマをドットに置換させるように書いたのを忘れてました。
力いっぱい殴ってください。
改行削除前のデータ保存はまだ試行錯誤の段階です。。
- 124 名前:/bin/名無しさん 投稿日:2001/03/19(月) 18:04
- >>123
お望みどおり。
置 換
∧ ∧ ∧_∧
(;゚Д゚(⊂(´∀`♯)
\⊃122⊃ヽ と)
\つ_つ< <\ \
(__)(___)
注 意
$data に元になるのデータがあるとして、
改行削除のあたりを
$data_for_html = $data_for_mail = $data;
$data_for_html =~ s/[\r\n]+/<BR>/g;
$data =~ tr/\r\n//cd;
としておけばよい。
$data はデータ書き込み用、
$data_for_html はHTML用、
$data_for_mail はメール用、
になるだろう。
# 例を書くときは $*** とかより $str とか $data とか $_ とかに
# しとくが小吉と思われ。
>>114
例えば Perl とか、なんらかのプログラミング(orスクリプト)言語
などが、どの程度できるか? にもよると思われ。
たぶん1週間では厳しいと思われるので、フリーで使わせてくれる
ページから持ってきて軽く改造する程度しかないんでは。
- 125 名前:122 投稿日:2001/03/19(月) 18:27
- /bin/名無しさん
おぉ、有り難うございます。ホント感謝します。
バッチリうまくいきました。
今夜は帰したくない気分です。
# 例題の書式、気を付けます。
# これを機に、もっと精進したいと思います。
- 126 名前:がんばらなきゃ=114 投稿日:2001/03/19(月) 19:05
- >>123
どうもです。
近所のせこい本屋に行ったけど、CGI入門みたいな本がなかったです。
プロバイダーの接続説明などを見て、どうも怪しいと思っていたのですが、
やはりPerlというやつですか。良い入門書あったら教えてください。
言語は、macのハイパーテキストをいたずらしたことがある位です。
とりあえず、頑張ります。アドバイスあったらお願いします。
大変そうなので、完成目標は2週間にします。無理かな〜。
- 127 名前: