perl的指针,没搞明白过,有问题请教

dpsuffix
perl的指针,没搞明白过,有问题请教

[code]
@array= {'a','b','c'};
$target->{array} = @array;
我想通过$target->{array} 把@array的abc全打印出来,怎么写阿?

flw
[code]foreach my $item ( @{ $target->{array} } ){
    print "$item/n";
}[/code]

dpsuffix
[code]
#!/usr/bin/perl
@array = {'a','b','c'};
$tar->{arr} = @array;
foreach my $item ( @{ $tar->{arr} }){
    print "$item/n";
}
[/code]
不行阿

flw
$tar->{arr} = /@array;

dpsuffix
[quote]原帖由 [i]flw[/i] 于 2008-6-27 16:22 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8687402&ptid=1182170][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
$tar->{arr} = /@array; [/quote]
不行阿,打印如下:
HASH(0x8153c28)

flw
@array = ('a','b','c');

dpsuffix
[quote]原帖由 [i]flw[/i] 于 2008-6-27 16:22 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8687402&ptid=1182170][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
$tar->{arr} = /@array; [/quote]
不这样行不?
$tar->{arr} = @array; 这样不行吗?

cobrawgl
[quote]原帖由 [i]dpsuffix[/i] 于 2008-6-27 16:54 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8687737&ptid=1182170][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]

不这样行不?
$tar->{arr} = @array; 这样不行吗? [/quote]

这样得到的是 scalar @array 。

版主已经明确告诉你怎么做啦。他今天很耐心啊 :mrgreen:

gregorian
说明他今天心情很好

ermu
回复 #6 flw 的帖子

这是正解啊,呵呵

flw
[quote]原帖由 [i]gregorian[/i] 于 2008-6-27 18:22 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8688632&ptid=1182170][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
说明他今天心情很好 [/quote]
不,说明我无法判断楼主是不是临时用户。

我对真正的 Perl 新手都是很友好的,
因为我觉得他们既然想要学 Perl,
那么在开始的时候就需要我拉一把。
不友好的只是临时用户,
因为我觉得他们都是叼一嘴就跑,饿了再来。
我不喜欢帮他们做作业或者挣工资。

BTW:作为 ChinaUnix 的版主,
我发现很多人都喜欢观察我,
但是很多人观察我观察得不够深入。

[[i] 本帖最后由 flw 于 2008-6-27 19:15 编辑 [/i]]

撒哈拉里的鱼
[code]
#!/usr/bin/perl
@array = ('a','b','c');
$tar->{arr} = [ @array ];

foreach my $item ( @{ $tar->{arr} } )
{
        print "$item/n";
}
[/code]
用【 】明确告诉他这里是个散列环境,也可以。

flw
[quote]原帖由 [i]撒哈拉里的鱼[/i] 于 2008-6-27 23:22 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8689863&ptid=1182170][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]

#!/usr/bin/perl
@array = ('a','b','c');
$tar->{arr} = [ @array ];

foreach my $item ( @{ $tar->{arr} } )
{
        print "$item/n";
}

用【 】明确告诉他这里是个散列环境,也可以。 [/quote]
你还没学通:
1,“散列环境”这个词用的不对。
2,/@array 和 [@array] 不等效。

lewphee
[quote]原帖由 [i]flw[/i] 于 2008-6-27 18:29 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8688659&ptid=1182170][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]

不,说明我无法判断楼主是不是临时用户。

我对真正的 Perl 新手都是很友好的,
因为我觉得他们既然想要学 Perl,
那么在开始的时候就需要我拉一把。
不友好的只是临时用户,
因为我觉得他们都是叼一嘴 ... [/quote]
版主受人关注是很正常滴~~~哈哈哈,
我好像还是第一次见你这么耐心的哈

另,强烈BS作业贴。还有一种用户,当天注册,一注册就扔个问题那种~

[[i] 本帖最后由 lewphee 于 2008-6-28 00:07 编辑 [/i]]

cobrawgl
[quote]原帖由 [i]flw[/i] 于 2008-6-27 23:32 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8689909&ptid=1182170][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]

你还没学通:
1,“散列环境”这个词用的不对。
2,/@array 和 [@array] 不等效。 [/quote]

版主说的对啊

1。perl 中只有 scalar context 和 list context。
2。[@array] 建立了一个匿名数组引用,/@array 是对 @array 引用。

不死草
呵呵,是很多这种人,注册问个问题就跑了。。。偶还比较有一些时间,能经常进来看看,还能偶尔跟个贴,不过,发现高手太多,需要学习啊。。。:mrgreen:
BTW:斑竹不受人关注是不可能的。。。想想看,就像一个班的班主任一样。。。:mrgreen:

dpsuffix
[code]
$tar->{arr} = /@array
$tar->{arr}存的是@array的引用?
能不能把@array复制一份给$tar->{arr}?
[/code]

churchmice
回复 #17 dpsuffix 的帖子

存的就是引用,引用是个标量
[code]
$tar->{arr} ="@array";
[/code]
注意,后面的引号不能少

cobrawgl
[quote]原帖由 [i]churchmice[/i] 于 2008-7-1 14:22 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8711144&ptid=1182170][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
存的就是引用,引用是个标量

$tar->{arr} ="@array";

注意,后面的引号不能少 [/quote]

你这样做跟 lz 的想法是不一样的。容易误导 lz。
这样是生成了一个 字符串。

而 lz 是想用 $tar->{arr} 来存一个 @array。

$tar->{arr} 是一个 scalar 变量,不能存 数组 的。

flw
[quote]原帖由 [i]cobrawgl[/i] 于 2008-7-1 14:48 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8711401&ptid=1182170][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]


你这样做跟 lz 的想法是不一样的。容易误导 lz。
这样是生成了一个 字符串。

而 lz 是想用 $tar->{arr} 来存一个 @array。

$tar->{arr} 是一个 scalar 变量,不能存 数组 的。 [/quote]
存引用就可以了。
[ @array ] 可以复制 @array 生成一个匿名数组,并返回其引用。