LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: KornLee

有关Perl问题的讨论请到这里

[复制链接]
发表于 2003-9-29 23:37:47 | 显示全部楼层
# cat hash
#!/perl5
%hash1 =(a,1,b,c,d,e,f,g);
$value=$hash1{a};
printf "1  $value \n";
$value1=$hash1{c};
printf "2  $value1\n";
$hash1{e}=5;
$value2=$hash1{e};
printf "3 $value2 \n";
$hash2{f}=6;
$value3=$hash2{f};
printf "4 $value3 \n";

#
怎么第二行输出就没有?漏了什么不要打我屁股哦:p
还有个问题:
怎么打印出新的散列?
 楼主| 发表于 2003-9-29 23:51:02 | 显示全部楼层
在perl的散列表(哈希表)中,他们是这样的
%hash=(key,value ...)
也就是说,键(key)和值(value)是一一对应的(必须是成对的)!
在你的%hash中,他们的对应关系如下:
key        value
a        1
b        c
d        e
f        g
I don't know what do you want to do !
建议你先搞清key和value的关系!
补充:
想得到一个散列(哈希表)中的值,可以通过:
print $hash{key};
只有打印所有的散列的时候才用:
print %hash;
因为在散列中,每个元素(键/值)都以标量的形式存在,所以要显示某个键/值对,就必须用$hash{key},
而当出现赋值的时候,像,
$var=$hash{key};
的时候,实际上$var获取的不过是他的长度而不是他的值!
(而数组因为他的下标是0,是可以通过数字索引来获取对应的元素的,但散列是通过key(键)来获取value(值)的.)
这样的方法,即,通过key来获取相应的value.
(MM,我推荐你买本<<erl技术内幕>>吧,那里把数组和散列介绍的贼详细!
)
唠叨了半天不知所云~~,还是那个理儿~~,实践吃真知!,,,,;)遇到问题的时候,要逐行逐字的找毛病!(我的"经验" ;))
 楼主| 发表于 2003-9-30 14:47:36 | 显示全部楼层
最初由 devel 发表
/B]

devel兄言重啦~~,我希望你好好的仔细的把perl中标量,数组,散列等基础的东西再仔细看看,我想会你有很大帮助的! OK ?!
发表于 2003-10-2 20:06:17 | 显示全部楼层
好的。

请问怎么使输入的数据不显示?
发表于 2003-10-2 22:58:25 | 显示全部楼层
请问:
解释不同?是不是版本问题?
例子:
/\w/      /[_0-9a-zA-Z]/
/\w/      /[0-9a-zA-Z]/
有两种不同的解释哦~
 楼主| 发表于 2003-10-3 00:01:14 | 显示全部楼层
777兄,咱们版这里目前perl的水平还是比较低的,不过我推荐你到下列站点先看看,;)
http://www.yuzi.net/perl5/
http://www.huixinyi.com/hxschool/perllesson/
http://www.perlchina.net
祝你好收成!
发表于 2003-10-11 14:44:37 | 显示全部楼层
#!/usr/bin/perl
# A Political evaluation script
$a = "A";
$b = "B";
if ($a > $b){
print "$a wordinake a better Presideut\n";
}
if ($a < $b){
print "$b word make a betler Presiclent\n";
}
if ($b = $a){
print "$a or $b, tlere's no Diflereue\n";
}

# perl 1.pl
A or A, tlere's no Diflereue
#
在这个程序中,为什么会看做$a与$b相等,
为什么会把$a的值附给$b呢,
 楼主| 发表于 2003-10-11 15:47:28 | 显示全部楼层
第三个if块,应该用"==",而不能用"=",因为在perl里,=是赋值的意思,只有==才是判断两个变量是否相等的运算符!,实际上最后你把$a赋值给了$b
发表于 2003-10-11 17:14:46 | 显示全部楼层
< > ==这些都是用于数字比较的,而字符比较需要运用lt gt eq等等,

另外=是用来附值的,==才是用来比较是否等于的,
发表于 2003-10-14 21:10:03 | 显示全部楼层
今天才知道linuxsir里面有讨论perl的地方
但是我觉得都在一个主题里面实在是很不方便
不妨单独开一个perl版
毕竟perl在linux中是非常流行的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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