- ベストアンサー
Net-Snmpのtraphandleよりshell起動
- Net-SnmpのTrapHandleを取得し、標準入力から受けた情報をファイルに出力する処理を作成中です。
- ファイル名を現在時刻にしたいのですが、シェルを実行してもファイルが出力されません。
- Perl初心者で手探りで調査していますが、煮詰まってしまいました。ご教示願います。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その三か所を修正すれば動くと思うのですが、それで動かないというのであれば > open(FILE,">>/tmp/$tim[5]$tim[4]$tim[3].txt"); を、 print "/tmp/$tim[5]$tim[4]$tim[3].txt\n"; open(FILE,">>/tmp/$tim[5]$tim[4]$tim[3].txt") or die $!; のように変更して、期待通りのファイル名になっているか、 エラーが出ないかどうかを確認してください。 あと、 @tim = localtime(time); $tim[5] += 1900; $tim[4] += 1; for($idx=0;$idx<5;$idx++){ $tim[$idx] = sprintf("%02d",$tim[$idx]); } open のときのためだけにこれをしているのであれば、 openのところを my $filename = sprintf '%4d%02d%02d', $tim[5]+1900, $tim[4]+1, $tim[3]; open FILE, '>>', "/tmp/$filename" or die "could not open '$filename'($!)"; のようにしてしまったほうが良いと思います。 入力の whileも気になるけど、こっちはまあいいや。
その他の回答 (1)
- sakusaker7
- ベストアンサー率62% (800/1280)
これ、作っている途中のものをそのまま貼り付けてますか? どうみても単純な typo がいつくもあるんですけど。 STDING → STDIN $buf. = $_; → $buf .= $_; ('.' と '=' の間を開けてはダメ) open (FILE,">>/tmp/$T[5]$T[4]$T[3].txt"); T という配列変数はどこからでてきたのでしょうか?
補足
ご指摘ありがとうございます。 又、タイプミスが多くご迷惑お掛けしてすみませんでした。 紙に印刷したソースを入力し投稿した為 タイプミスが多くありました。 実際のソースを確認しましたら、 上記の間違いはありませんでした。 下記に修正内容を記述します。 while (<STDIN>) { $buf.= $_; } open(FILE,">>/tmp/$tim[5]$tim[4]$tim[3].txt");
お礼
ご指摘ありがとうございました。 ご指摘通りファイル名が出力されているか、エラーがないか等の 調査を行いファイル名が正しく出力されました。 いろいろ試しながら行っていたので原因ははっきりわかりませんが ソースはほどんど変更しなかった為 ・権限のつけ忘れ ・誤字脱字 の可能性が高いと思います。 お手数お掛けしました。 ありがとうございました。