如何在Perl脚本中使用Shell命令的结果?

3
有人能告诉我怎样在Perl脚本中使用shell命令的结果吗?
#!/usr/bin/perl
$whoami=`whoami`;
system ('cd /var/home/'.$whoami.'/htdocs');
print $whoami;
[user1@srv _1]$ ./sys.pl
sh: line 1: /htdocs: No such file or directory
user1

我想要改变目录到 /var/home/user1/htdocs


请注意,任何解决方案(和您更正的代码)都不会更改程序的工作目录!! - pavel
3个回答

4

$whoami包含换行符\n,这会导致您的命令字符串如下所示:

cd /var/home/user1
/htdocs

你应该使用 chomp 命令删除 $whoami 变量末尾的换行符:

my $whoami = `whoami`;
chomp $whoami;

3
这可以在不需要外壳的情况下完成。
#!perl
my $dir = '/home/'.getlogin().'/htdocs';
chdir $dir;

2
#!/usr/bin/perl

$whoiami=`whoami`;

print "$whoiami";

chomp $whoiami;
system ("cd /home/$whoiami/reports");

print $whoiami;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接