LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1624|回复: 4

请教一个关于数组的问题

[复制链接]
发表于 2009-7-28 19:41:31 | 显示全部楼层 |阅读模式
想把变量和常量一起放到数组里面,并打印出来。
#!/usr/bin/perl
my $var=abc;
my @xyz=("edf"\.\$var);
print "${@xyz[0]}\n";

现在就一直报syntax error
想让结果显示出edfabc.
怎么定义数组呢.
发表于 2009-7-28 22:03:17 | 显示全部楼层
这问题太基础了,在CU问完又过来这边问~
这个看完Learning Perl的前三章就知道了
还是改一下LZ的代码吧,希望LZ的意思是这样吧:
  1. my $var="abc";  #规范应该加引号
  2. my @xyz=("edf$var");
  3. print "$xyz[0]\n";
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-29 15:11:28 | 显示全部楼层
谢谢楼上回复.
可能问得不大清楚,
试试看再写个例子.
目的就是要定义个数组,里面 有常量有变量, 然后在子函数里面要重新给数组里面那个变量附值,再调用这个数组.单纯是变量的话,使用赋地址的方法可以实现:
my $var="abc";
my @xyz=(\$var);
print "${$xyz[0]}\n";
&x;
sub x{
      $var="123";
      print "${$xyz[0]}\n";
}

但是常量和变量放在一起好像就有点问题..
my $var="abc";
my @xyz=("edf\\$var");
print "$xyz[0]\n";
&x;
sub x{
      $var="123";
      print "$xyz[0]\n";
}
回复 支持 反对

使用道具 举报

发表于 2009-7-29 18:35:00 | 显示全部楼层
这是引用与值的差别
在第一个例中,my @xyz=(\$var),这样赋值是将$var的引用赋给$xyz[0],${$xyz[0]}实际就是$var,所以$var改变,那${$xyz[0]}也会改变
在第二个例中,my @xyz=("edf\\$var"),这样同值之后,@xyz跟$var已经没有关系,所以在后面调用@xyz时,只能调用它原来的值

或者在函数里面再给@xyz赋一次值
或者写一个函数动态生成你想要的数组

你自己再想想吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-2 17:38:24 | 显示全部楼层
多谢拉,
现在采用数组里面放常量,调用子函数,传递参数时候将变量加进去.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表