私は引数として渡されるファイルのinodeだけを取得しようとしています。なぜperlで印刷すると新しい行に0があるのですか?
ただし、iノードを抽出すると、新しい行に0が出力されます。私は正規表現でそれを取り除こうとしましたが、できません。スクリプトを渡しています/usr/bin/vim
コマンド(ls -i /usr/bin/vim | awk '{print $1}'
)を実行すると0は表示されませんが、スクリプトを実行すると表示されます。
どうすればこの0を取り除くことができますか?
my $filepath = $ARGV[0];
chomp $filepath;
$filepath =~ s/\s//g;
print ("FILEPATH: $filepath\n"); #looks good
my $inode = system("ls -i $filepath | awk '{print \$1}'");
$inode =~ s/[^a-zA-Z0-9]//g;
$inode =~ s/\s//g;
print ("$inode\n");
だから私の結果は
137699967
0
だから 'ls -i/usr/bin/vim'だけで' vim'とタグ付けされた質問はありますか? – Kent
docs: 'perldoc -f system'を読んでください。 'qx'を使うべきです。 'stat'もあなたにinodeを与えます。 – toolic
参考:http://stackoverflow.com/questions/799968/whats-the-difference-between-perls-backticks-system-and-exec – mob