【发布时间】:2010-11-07 12:24:36
【问题描述】:
我在将参数传递给函数并且被调用函数没有将控制权返回给最初调用它的函数时遇到问题。基本上,我正在读取一个包含用户名和密码的文本文件到一个数组中。然后使用 foreach 循环,我将用户名和密码传递给另一个函数,但这永远不会返回并且只针对一组参数执行;
sub batch {
open(my $in, "<", "$ARGV[0]") or die "Can't open $ARGV[0]: $!";
#Read file contents into an array.
@listOfUsers = <$in>;
foreach $listOfUsers (@listOfUsers) {
#Regex to check if txt file conforms to correct syntax.
if ($listOfUsers !~ /([a-zA-Z]{1}[a-zA-Z0-9]{3,40})\s[a-zA-Z]{1}[a-zA-Z0-9]{3,40}/) {
print "Please ensure that line $listOfUsers in $ARGV[0] is of the following syntax:\n";
print "\n<USERNAME> <PASSWORD>\n";
exit(0);
} else {
#split string and call AddUser function
my ($username, $password) = split(" ",$listOfUsers);
AddUser($username, $password);
}
}
}
sub AddUser {
exec("infacmd.sh createUser -dn domain -un user -pd pass -hp domain:80 -nu " . $_[0] . " -np " . $_[1] . " -nf test");
}
基本上,不用担心 AddUser 函数的作用。它只是运行一些 .sh 文件来执行一些我不关心的事情。目前,我只能从我读入的文件中添加一个用户。即此代码只运行一次,不会返回到“批处理”函数。
我尝试在“AddUsers”函数的末尾添加“return()”,但这没有帮助
谢谢
【问题讨论】: