3

現在のディレクトリ内のファイルとサブディレクトリのリストを取得し、perl スクリプトで必要なアクションを実行する必要があります。この目的には、次のコマンドを使用する必要がありますls -F | perl myfile.pl。問題は、perl スクリプトで ls コマンドの出力に到達する方法です。どんな助けでも大歓迎です。

4

5 に答える 5

2

簡単です。perlスクリプトの標準入力を読むだけです。

while(<STDIN>) {
    print "---> $_";  # or whatever you need
}
于 2013-03-09T21:35:46.070 に答える
1

ディレクトリの内容を Perl スクリプトに渡す必要がある場合は、ファイル名を引数として渡す方がよいでしょう。

perl myscript.pl *

それで...

for my $file (@ARGV) {
    ...
}

ls -Fこれにより、コードの単純化、高速化、堅牢化、移植性の向上の出力を解析する必要がなくなります。

ファイルのタイプは、ファイル テスト演算子を使用して Perl 内で知ることができます。

for my $file (@ARGV) {
    if( -l $file ) {
        ...do something with a symbolic link...
    }
    elsif( -d $file ) {
        ...do something with a directory...
    }
    else {
        ...regular file...
    }
}
于 2013-03-09T21:52:02.973 に答える
0

perlコマンドを実行し、スクリプト内でその出力を処理します。これは、パイプと同じ動作です。

#!/usr/bin/env perl

use warnings;
use strict;

open my $ls, '-|' , 'ls -F' or die;

while ( <$ls> ) { 
    ## Process each line.
}
于 2013-03-09T21:42:52.917 に答える
0

ls -F | perl myfile.pl -

スクリプト名の後に「-」引数が必要です。ところで、「-」の代わりに「*」を使用しても機能しません。

于 2015-11-18T14:15:23.980 に答える