我学习perl,我决定写一个小脚本以满足个人需要。除其他外,脚本必须导航到指定的文件夹并在那里运行应用程序。到目前为止,问题是在过渡到文件夹时出现的。
试图这样做:
my $fld="/home/user/work/folder";
my $cdm="cd $fld";
system($cdm);
执行脚本时,我收到一条消息,指出没有这样的文件夹。
提示,用什么可以连接?该文件夹肯定存在。
我学习perl,我决定写一个小脚本以满足个人需要。除其他外,脚本必须导航到指定的文件夹并在那里运行应用程序。到目前为止,问题是在过渡到文件夹时出现的。
试图这样做:
my $fld="/home/user/work/folder";
my $cdm="cd $fld";
system($cdm);
执行脚本时,我收到一条消息,指出没有这样的文件夹。
提示,用什么可以连接?该文件夹肯定存在。
my $cdm="cd $fld"; system($cdm);
它没有在您的进程中运行。存在chdir()
。cd
-- 是一个内部 shell 命令,所以你system()
很可能会调用bash -c $cdm
.bash
将为自己更改目录,但您的过程将保持不变。看完之后
perldoc -f system
发现 perl system() 做的事情和 sish 不一样,它的行为取决于传递的参数。在问题作者的情况下,shell 没有启动,但是 fork() + exec("cd") 对 $PATH 的每个元素都完成了。exec("cd") 中断是因为 真的没有这样的程序。返回一条消息
Can't exec "cd": Нет такого файла или каталога at ./test.pl line 4
,被作者误解为目标目录不存在的消息。