perl中@$groups[0]用法

astraydog 2011-08-25 03:59:19
01.sub defect_AccessControl {

02.my $session = $entity->GetSession();

03.my @groups;

04.$groups = $session->GetUserGroups();

05.$session->OutputDebugString("\nThe first groups is ".@$groups[0]);

06.$result = 0;

07.my $group;

08.for $group (@$groups){

09.if ($group eq "defectcoordinators"){

10.$result = 1;

11.break;

12.}

13.}

14.}
复制代码

这里@groups是数组的意思吧?我记得一个数组的元素是用$groups[0],$groups[1]这样描述的,
但是这里@$groups[0],怎么这种写法?还是本来就不同的意思?
...全文
147 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
astraydog 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 will2ni 的回复:]
引用 7 楼 astraydog 的回复:
那我my @groups;
是不是可以不用定义了啊?
是不是多余的?

这个函数里没有用到@groups这个变量。倒是$groups没有定义,直接拿过来用,是不是笔误?
强烈建议使用use strict;
[/Quote]
谢谢了!
m00z 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 astraydog 的回复:]
那我my @groups;
是不是可以不用定义了啊?
是不是多余的?
[/Quote]
这个函数里没有用到@groups这个变量。倒是$groups没有定义,直接拿过来用,是不是笔误?
强烈建议使用use strict;
astraydog 2011-08-25
  • 打赏
  • 举报
回复
那我my @groups;
是不是可以不用定义了啊?
是不是多余的?
m00z 2011-08-25
  • 打赏
  • 举报
回复
#! /usr/bin/perl

sub defect_AccessControl {
my $session = $entity->GetSession();

# 数组
my @groups;

# 数组引用(指向数组的指针),和上面的@groups没有关系,两个变量
# 比如:
# @array = qw(a b c);
# $groups = \@array; 这里标量$groups指向了一个数组,类似$groups = $session->GetUserGroups();
# @{ $groups } 与@array的内容一样
# ${ $groups }[0] 就等于a
# $groups->[1] 等于b
$groups = $session->GetUserGroups();

$session->OutputDebugString("\nThe first groups is ".@$groups[0]);

$result = 0;

my $group;
for $group (@$groups){
if ($group eq "defectcoordinators"){
$result = 1;
break;
}
}
}
iambic 2011-08-25
  • 打赏
  • 举报
回复
自己先看下$groups里的数据是什么。不知道数据是什么,是无法妄断程序逻辑的。
use Data::Dumper;

print Dumper($groups);


astraydog 2011-08-25
  • 打赏
  • 举报
回复
为什么我这样写的时候
	 
my $group;
for $group (@$groups){
if($group eq "PDM"){
$session->OutputDebugString("\nThe first groups is ".$group);
$result=1;
break;
}
}

调试的时候,连“nThe first groups is ”都不输出来了,
放在这个for循环里面就不执行了??
astraydog 2011-08-25
  • 打赏
  • 举报
回复
@$groups[0]这个变量
我调试的时候
$session->OutputDebugString("\nThe first groups is ".@$groups[0]);
输出来的是空的,是不是这样写是错的?
我写成@groups[0]或者$groups[0],都是空的。。。
I_NBFA 2011-08-25
  • 打赏
  • 举报
回复
引用而已
iambic 2011-08-25
  • 打赏
  • 举报
回复
这代码贴的,太业余了……

$groups是一个数组的引用(如果学过C的话,相当于一个数组指针),不是数组。@$groups是对数组解引用(相当于C里的*p)。

@$groups[0]相当于$groups->[0]

建议阅读intermediate perl

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧