今Perlでちょっとしたアプリを作っています。

サーバはunix系でアプリの内容はコマンドの結果値をHTMLで表示させるというものです。

一度Cで作って成功しました。
簡単に書きます。(HTMLの表示部分は簡略します)

int main()
{
char *token;
char str[1024];
FILE *fp = popen("ls -la","r");

while(fgets(str,1024,fp)!=NULL){
token = strtok(str,NULL);
printf("結果:%s\n",token);
}

exit(0);
}

とコマンド(例:ls -la)を実行してファイルハンドルを返してコマンドの結果値を読み取って表示させるというものなのですが、これをPerlに移行したいと考えています。

Perlをさわるのが初めてでしてネットで調べてみても
なかなか参考になるものはありません。
Perlの関数にpopen()が存在するのかまたfgets()、strtok()に類似する関数がありましたらアドバイスいただけないでしょうか。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

print `ls -la`;


が一番簡単だと思いますが、あえて質問文に似せるなら、
open (ls, 'ls -la |');
while(read( ls,$result,1024)){
print $result;
}
close(ls);
ぐらいかな。
もう少し簡略化して、
open (ls, 'ls -la |');
while(<ls>){
print;
}
close(ls);
とも書けます。
strtokが何をしているか、いまいちよくわからないので無視しています。
一応、
popen()->open()
fgets()->read()
strtok()->split()
ぐらいに対応すると思います。
splitはちょっと違うかもしれませんが。
http://plaza27.mbn.or.jp/~satomii/jdoc/perltut/s …

参考URL:http://www.tokyo-nagasaki.net/dayan/tips/unix/pe …
    • good
    • 0
この回答へのお礼

できました!!
ありがとうございます。

お礼日時:2003/09/10 14:55

C言語はあまり存じ上げないのですが、


system関数はCにもありませんでしたっけ?

print system("dir"); #win系なら
でそのまま一覧表示できたりします。
(単純すぎて物足りないものでしょうか?)

もしくは、バッククオートを使って、
print `dir`;
でも同じことができます。
こちらの方が応用がきくかもしれません。

FileHandle使わなくても、
my @list = `dir`;
で代入まで済みますので、
多分popen()の代わりにこの場合なっていると思います。

その他
Shellモジュールもコマンド操作用に用意されてますので、
興味があれば調べてみてください。

#何分Cの方がわかっていないので、勘違いしていたらすみません。
    • good
    • 0

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


人気Q&Aランキング