perl数组(perl中如何定义数组参数)
这篇文章给大家聊聊关于perl数组,以及perl中如何定义数组参数对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
perl 数组赋值 求解释
首先,这个程序可以简化一点的(而我在最後加了两句,留意结果):
while(my$entry=$result->shift_entry){
my$sam=$entry->get_value('sAMAccountName');
my$mail=$entry->get_value('mail');
print LOG"$sam,$mail$/";
next unless($sam and$mail and$sam=~/^\w+$/g);
my$user= [];
@{$user}[0]=$sam;
@{$user}[1]=$mail;
$adusers{$sam}=$user;
}
use Data::Dumper;
print Dumper\%adusers;
其实当中的:
my$user= [];
@{$user}[0]=$sam;
@{$user}[1]=$mail;
其实又可以写成:
my$user= [$sam,$mail ];
$adusers{$sam}=$user;
又可以写成:
$adusers{$sam}= [$sam,$mail ];
最後你会发现%adusers的结构就是:
$VAR1=>{
'路人甲'=> [
'路人甲',
'email address',
],
'路人乙'=> [
'路人乙',
'email address',
],
}
所以使用的时候就是
$mail=$adusers{'路人甲'}->[1];
print$mail;
後记,其实...根本不需要
my$user= [];
@{$user}[0]=$sam;
@{$user}[1]=$mail;
$adusers{$sam}=$user;
用
$adusers{$sam}=$mail;#就够了.
因为那个 key(路人甲)与$user->[0](都是'路人甲')根本就是重覆的数据
perl中如何定义数组参数
PERL的参数可以使用数组,调用的时候要在%或者@前面加上\,否则就把数组的值传递给函数了,下面是调用的例子:
Run(\%o,$ch,$num);
这个函数Run使用三个参数,第一个是数组类型,函数定义就没什么特殊的:
sub Run{
my($o,$ch,$num)=@_;
my$th= IO::Socket::INET->new('PeerAddr'=>$o->{'tohost'},'PeerPort'=>$o->{'toport'});
my$read_counter=0;
}
补充:
你的问题我以为是问PERL函数的参数。
PERL使用下面的变量获取命令行参数:$#ARGV表示参数的个数,$ARGV[0]、$ARGV[1]、$ARGV[2]……依次表示各个参数
perl 数组中如何删除元素
1.用grep函数
函数名 grep
调用语法@foundlist= grep(pattern,@searchlist);
解说与同名的UNIX查找工具类似,grep函数在列表中抽取与指定模式匹配的元素,参数pattern为欲查找的模式,返回值是匹配元素的列表。
例子@list=("This","is","a","test");
@foundlist= grep(/^[tT]/,@list);
结果@foundlist=("This","test");
2.用map函数
函数名 map
调用语法@resultlist= map(expr,@list);
解说此函数在Perl5中定义,可以把列表中的各个元素作为表达式expr的操作数进行运算,其本身不改变,结果作为返回值。在表达式expr中,系统变量$_代表各个元素。
例子
1、@list=(100, 200, 300);
@results= map($_+1,@list);
2、@results= map(&mysub($_),@list);
结果 1、(101, 201, 301)
2、无
3.用splice或者delete
函数名 splice
调用语法@retval= splice(@array, slipelements, length,@newlist);
请问怎么给perl里的标量,哈希,数组赋初值
perl中的哈希赋值
在perl中,通过代码动态的给哈希赋值,是最常见的应用场景,但是有些情况下,我们事先知道一些信息,当需要把这些信息存放进一个哈希的时候,直接给哈希赋值就好;
哈希的key不用说,就是一个字符串,关键是value,大概有下面3种:
1)一个值
就是一个普通的一维哈希,直接赋值即可
代码示例:
my%hash=('a'=> 1,'b'=> 2,);print qq{$hash{a}\n};
2)一个列表
这种情况下直接把值写成一个列表是不行的,在perl中,哈希的值也是一个标量,所以应该用一个列表的引用
代码示例:
my%hash=('a'=> [1, 2, 3],'b'=> [1, 2, 3],);
print qq{$hash{a}->[0]\n};
3)一个哈希
和列表类似,直接用哈希的引用就可以了
代码示例:
my%hash=('a'=>{'1'=> 1,'2'=> 2},'b'=>{' 1'=> 1,'2'=> 2},);
print qq{$hash{a}->{1}\n};
上面这种情况,其实就是申明了一个二维哈希
关于perl数组到此分享完毕,希望能帮助到您。