LinuxSir.cn,穿越时空的Linuxsir!

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

请解释一下?:的问题

[复制链接]
发表于 2004-4-17 01:42:45 | 显示全部楼层 |阅读模式
  1. /home/javalee#perl -
  2. while(<>){
  3. print $_ < 10 ? $_ :"[color=red]${\((a..f)[$_ -10])}[/color]\n";
  4. };__END__
  5. 12
  6. c
  7. 23

  8. 11
  9. b
  10. 15
  11. f
复制代码

这个例子是把输入的数字转化成16进制,
大概意思是如果$_小于10,那么就直接显示出来,否则????请帮我分析分析红字 部分的意思? :thank
发表于 2004-4-17 02:48:02 | 显示全部楼层
从里向外解释:
(a..f)  是a..f的数组
(a..f)[$_ -10]  返回10-15的16进制字符(数组的第$_-10项)
\(...)  是一个引用
${...}  解引用,打印值

下面来一个常数引用的例子参考一下:

  1. #!/usr/bin/perl -w

  2. $r = \10;
  3. print "${$r}\n";
复制代码
 楼主| 发表于 2004-4-17 03:41:21 | 显示全部楼层
最初由 libinary 发表
从里向外解释:
(a..f)  是a..f的数组
(a..f)[$_ -10]  返回10-15的16进制字符(数组的第$_-10项)
\(...)  是一个引用
${...}  解引用,打印值

下面来一个常数引用的例子参考一下:

  1. #!/usr/bin/perl -w

  2. $r = \10;
  3. print "${$r}\n";
复制代码

谢谢li二进制兄,刚刚学习perl,问题菜了些,呵呵,谢谢您的指点,:thank
我再自己消化消化 ;)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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