初めて自分の家と他人の家が違う、と意識した時

はじめまして、perlをはじめて1週間のものです。
本やwebサイトをみてあくせくしております。

【本題】
あるtxtファイルを読み込んで、そのファイル中に該当の文字列がいくつあるかを
数え、webの画面に出そうとしております。
具体的には、txtファイルは
routerCisco
switchHitachi
router Sumitomo
router Juniper
hubmelco
routeracton
switchextream

これを読み込んで、ルータやスイッチ、ハブの数を出したいのです。
webにあらわす方法は、先達の先輩たちのsourceを見て、下のようにヘッダ/フッダ
は、作れそうなのですが、肝心の本体がどうにもわかりません。

なにか良い方法ありませんでしょうか。
読み込むべき機器台数ファイルは、別箇所に保存してあるものなのでopenとかでもって
くるんだろうなという位しか、、、、。

どうぞよろしくお願いします。

A 回答 (4件)

@count = (0,0,0);


open(OF,"<hoge.txt");
while(<OF>){
($group,$name) = split(/\s/,$_);
if($group eq "hub"){ $count[0]++; }
elsif($group eq "router"){ $count[1]++; }
elsif($group eq "switch"){ $count[2]++; }
}
close(OF);
print "hub : $count[0]<br>\n";
print "router : $count[1]<br>\n";
print "switch : $count[2]<br>\n";

テストしてみると動かなかった上におかしかったので修正。

この回答への補足

たいへん迅速なお返事ありがとうございます。
もう一つお願いなのですが、txtファイル中にある文字が、
いかのようなものでした。

super_router Cisco
bochibochi_switch Hitachi
otegoro_router Sumitomo
super_router Juniper
otegoro_hub melco
kakuyasu_router acton
super_switch extream

この場合に、router、switch、Hubの数を知りたいのです。
すみません。がんばって勉強しますので、今回はなにとぞご教授ください。

補足日時:2003/05/15 18:27
    • good
    • 0
この回答へのお礼

質問してからとても早いヒントをいただきまして、
大変助かりました。
hostsファイルから稼動機器台数を調べるために必
要でした。
ありがとうございました。

お礼日時:2003/05/16 08:17

下の方もやられてますが、


正規表現でその単語を含むかどうかを調べます。

if($group eq "hub"){ $count[0]++; }
elsif($group eq "router"){ $count[1]++; }
elsif($group eq "switch"){ $count[2]++; }
を、

if($group =~ /hub/){ $count[0]++; }
elsif($group =~ /router/){ $count[1]++; }
elsif($group =~ /switch/){ $count[2]++; }
かな・・・
たぶん。
    • good
    • 0
この回答へのお礼

なるほど、丁寧な回答をいただきありがとうございます。
参考になりました。

お礼日時:2003/05/16 08:20

perl は同じことをやるにも様々なやり方ができます。


下記の例もその一つです。参考にしてください。

%count = ('router'=>0,'switch'=>0,'hub'=>0);

open (FILE,"<hoge.txt") or die;

while (<FILE>) {
foreach $key (keys %count) {
if (/$key/) { $count{$key}++; }
}
}
close FILE;

foreach $key (keys %count) {
print "$key = $count{$key}\n";
}
    • good
    • 0
この回答へのお礼

なるほど、勉強すべきKeyWordがどんどんわかってきました。
ありがとうございます。

お礼日時:2003/05/16 08:18

単純に、


@count = (0,0,0);
open(OF,"<hoge.txt");
while(<>){
($group,$name) = splice("\s",$_);
if($group = "hub"){ $count[0]++; }
elsif($group = "router"){ $count[1]++; }
elsif($group = "switch"){ $count[2]++; }
}
close(OF);
print "hub : $count[0]<br>\n";
print "router : $count[1]<br>\n";
print "switch : $count[2]<br>\n";

こんなんで良いんじゃないかと…
最近Perl触れてないので自信なしです。
    • good
    • 0
この回答へのお礼

質問してからとても早いヒントをいただきまして、
大変助かりました。
hostsファイルから稼動機器台数を調べるために必
要でした。
ありがとうございました。

お礼日時:2003/05/16 08:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!