1

perl で chdir しようとしていますが、何が問題なのか理解できません。このコードは機能します。

chdir('C:\Users\Server\Desktop')

しかし、ユーザーの入力を取得しようとすると、うまくいきません。chomp を使用して、来る可能性のあるスペースを削除することさえ試みました。

print "Please enter the directory\n";
$p=<STDIN>;
chdir ('$p') or die "sorry";
system("dir");

また、この同じ状況で system コマンドを使用する方法と、chdir との違いを説明してください。

最後の目的は、2 つのフォルダーにアクセスし、同じ名前のファイルをチェックして (たとえば、両方のフォルダーに「water」という名前のファイルがある場合)、同じ名前のファイルを 3 番目のフォルダーにコピーすることです。

4

2 に答える 2

4

chdir('$p')文字通り名前が付けられたディレクトリに変更しようとし$pます。一重引用符を削除します。

chdir($p)

また、それを読み込んだ後、おそらく改行を削除したいと思うでしょう (ディレクトリ名が実際に改行で終わっていない限り):

$p = <STDIN>;
chomp($p);

ただし、スクリプトを実行して結果を取得できるようにするために chdir を実行するだけの場合はdir、おそらくそれを実行したくないでしょう。まず、システムはコマンドを実行しますが、その出力をキャプチャしません。次に、次のことができます。

opendir my $dirhandle, $p or die "unable to open directory $p: $!\n";
my @files = readdir $dirhandle;
closedir $dirhandle;

chdirを避けて、コマンドプロンプトコマンドを完全に実行してください。

于 2013-06-28T08:21:22.963 に答える
1

このように使用します。

chdir "C:/ユーザー/サーバー/デスクトップ"

上記は私のために働く

于 2013-06-28T15:13:15.240 に答える