Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl重置变量_Perl_Shell_Scripting - Fatal编程技术网

Perl重置变量

Perl重置变量,perl,shell,scripting,Perl,Shell,Scripting,我正在学习Perl,我制作了一个脚本,在脚本开始时使用定义的变量来建立连接、提取记录、修改记录,然后关闭连接 我工作的第二部分涉及重复相同的步骤,但针对不同的服务器 有没有办法取消设置之前设置的变量?然后使用新定义的设置并重复步骤 谢谢在自己的范围内定义变量 { my $server = '123.123.123.123'; my $username = 'user1'; ping($server); login($username); } { my $s

我正在学习Perl,我制作了一个脚本,在脚本开始时使用定义的变量来建立连接、提取记录、修改记录,然后关闭连接

我工作的第二部分涉及重复相同的步骤,但针对不同的服务器

有没有办法取消设置之前设置的变量?然后使用新定义的设置并重复步骤


谢谢

在自己的范围内定义变量

{
    my $server = '123.123.123.123';
    my $username = 'user1';
    ping($server);
    login($username);
}
{
    my $server = '222.222.123.123';
    my $username = 'user2';
    ping($server);
    login($username);
}
更好的方法是使用函数定义:

sub doSomethingToServer
{
    my ($server, $username) = @_;
    ping($server);
    login($username);
}

doSomethingToServer('123.123.123.123', 'user1');
doSomethingToServer('222.222.123.123', 'user2');

你应该考虑你所引用的变量的类型,它是数组吗?还是炸土豆条?还是标量?。通常我用
@array=()重置它
%hash=()听起来你想要的是一个带有参数的子例程(又称函数)。我通常只是在开始时声明类型,然后在开始时赋值。只需重新分配它们,但一个带有参数的函数会更好。@bwtrent,我可以假设你来自C背景吗?重用变量是一种可怕的做法。然后你必须向后扫描代码,看看它们在哪里被改变了。声明范围有限的变量,不要重复代码:而是创建一个子例程。