- ベストアンサー
ドットを含まないファイルの表示
ドットを含まないファイルをperlで表示したいのですが、 うまくいきません。 シェル上から「ls | grep -v "\."」を実行すれば、 意図した結果は得られています。 しかし、perl上で動作させると、何も表示されません。 #! /usr/bin/perl chdir("/tmp"); open(DIR_IN, "ls -l | grep -v '\.' 2> /dev/null |"); while($file=<DIR_IN>) { print $file; }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
これくらいなら readdir と grep を駆使すればシェルを呼出さなくてもいいよなと思いつつ, 実は \\. にしなきゃならないってオチ?
その他の回答 (2)
- guci-ok
- ベストアンサー率33% (49/146)
ファイルの一覧取得には「glob」が便利です。 パラメータで条件を与えることができますが、指定は正規表現と 同じではなく、多少注意が必要です。 全部globでやろうとせず、grepと組み合わせるなど、柔軟な対応を。 D:\tmp>dir ドライブ D のボリューム ラベルがありません。 ボリューム シリアル番号は 54A5-8EF0 です D:\tmp のディレクトリ 2005/09/06 23:32 <DIR> . 2005/09/06 23:32 <DIR> .. 2004/02/07 15:19 35,189 G1.txt 2005/09/06 23:31 35,189 G1__txt 2004/02/07 15:14 35,189 G20050906.txt 2004/02/07 15:13 156 G20050906_txt 4 個のファイル 105,723 バイト 2 個のディレクトリ 18,754,117,632 バイトの空き領域 D:\tmp>cd \ D:\>perl -le "map { print } grep { ! /\./ } glob '/tmp/*'" /tmp/G1__txt /tmp/G20050906_txt D:\>
- ttyp03
- ベストアンサー率28% (277/960)
リダイレクション( 2> /dev/null )っているんでしたっけ?
お礼
つけても、つけなくても結果は同じでした。
お礼
ありがとうございます。 \\.でうまくいきました。