今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()に類似する関数がありましたらアドバイスいただけないでしょうか。
よろしくお願いします。
No.1
- 回答日時:
C言語はあまり存じ上げないのですが、
system関数はCにもありませんでしたっけ?
print system("dir"); #win系なら
でそのまま一覧表示できたりします。
(単純すぎて物足りないものでしょうか?)
もしくは、バッククオートを使って、
print `dir`;
でも同じことができます。
こちらの方が応用がきくかもしれません。
FileHandle使わなくても、
my @list = `dir`;
で代入まで済みますので、
多分popen()の代わりにこの場合なっていると思います。
その他
Shellモジュールもコマンド操作用に用意されてますので、
興味があれば調べてみてください。
#何分Cの方がわかっていないので、勘違いしていたらすみません。
No.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 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
open MAILでの"|"
-
Perlの処理待ちコマンド
-
`rsh ホスト -l root /bin/echo...
-
エクセルVBAでシートモジュール...
-
「デバイスは PRN を初期化でき...
-
Excel VBA 『Call』で呼び出す...
-
VBA This Workbookモジュール...
-
Excel VBAでリンク切れをチェッ...
-
VBAで旧字体を異字体に一括で変...
-
例外処理のフローチャートの記...
-
モジュールとクラスの違いって...
-
VBでグローバル変数を宣言するには
-
VBAで別モジュールへの変数の受...
-
【vba】フォームに書いてあ...
-
VBAでoutlook365が起動しません。
-
Perl モジュールのアンインスト...
-
グラフのX,Y座標を取得したい
-
fetchrow_arrayとfetchrow_hash...
-
perlをバージョンアップしたら...
-
COBOLで、Shellを起動するには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハマったので助けて~。Apache...
-
AIX6でファイルのタイムスタン...
-
Active Directoryでグループに...
-
実行中のcpan processを終了さ...
-
open MAILでの"|"
-
時間がかかり過ぎたプロセスを...
-
Perl はOSによって動作が違った...
-
ディスク容量について
-
MS-DOSでperl実行時にコマンド...
-
system から得た情報を変数に入...
-
LinuxにおいてのPerlのプログラ...
-
HELOコマンドが失敗する。
-
Excel VBAでリンク切れをチェッ...
-
Excel VBA 定義されたプロージ...
-
例外処理のフローチャートの記...
-
ArduinoのジャイロモジュールMP...
-
ユーザー定義関数に#NAME?が返...
-
「デバイスは PRN を初期化でき...
-
VBAで別モジュールへの変数の受...
-
Excel VBA 『Call』で呼び出す...
おすすめ情報