第一个就是让学perl的同学们指点指点,用了一个晚上写的

第二个就是有点迷茫,想脱离编程菜菜的境界
在学校的时候学过汇编 C 和java 都会一些 但全是入门 编一个稍稍复杂一点的东西就像挤牙膏 心有余而力不足 就像昨天晚上写这个游戏……
很痛苦 你们懂得
后来读了下perl 发现比我学过的语言容易多了 类型少 灵活 不用顾虑太多语法方面的东西 还很强大
于是想从perl深入下去 买了三本书 learning perl intermediate perl 和mastering perl 目前只看到小骆驼书的第十章
如果只是看书的话 看完一本之后会觉得很迷茫 不知道到底怎么运用 用在什么地方
这个时候应该是多读别人的好代码和自己多写代码的时候了吧
但是网上这样的perl代码似乎有点少啊 能不能推荐几个适合初学者的关于perl的网站呢?书也可以 就是可以让人多多写代码 多多练习和参考的
不学perl的也可以推荐一下自己的学习路线啊
学perl的前辈们分享下你们当初是怎么学好perl的吧
通常由两个人玩(这个是你和程序玩……),一方出数字,一方猜。出数字的人要想好一个没有重复数字的4位数,不能让猜的人知道。猜的人就可以开始猜。每猜一个数字,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数。
把代码复制到文件里 随便起个名字xxx
然后终端里perl xxx
或者chmod 755 xxx然后 ./xxx
代码: 全选
#!/usr/bin/perl -w
use strict;
use 5.010;
my ($answer,$guess,$rand,@bit,%count,%emptyhash);
my $num=7;
my $a=0;
my $b=0;
REPLAY:
for (1..4){ #这一段用来生成随机数
$rand=int(rand(10));
$count{$rand}++;
redo if($count{$rand}>1);
}
# say keys %count; #调试或作弊用
say "Please enter a four-digit,the numbers are different for each bit.";
for (1..7){ #一共7次机会
chomp ($guess=<STDIN>);
while($guess=~/[\D]/){
say "You entered an INCORRECT number,try again please.";
chomp ($guess=<STDIN>);
}
@bit=keys %count; #这里是逐位比较
if ($guess=~/$bit[0].../){ #应该有更好的办法吧 写的有点丑
$a++;
} elsif ($guess=~/.*$bit[0].*/){
$b++;
}
if ($guess=~/.$bit[1]../){
$a++;
} elsif ($guess=~/.*$bit[1].*/){
$b++;
}
if ($guess=~/..$bit[2]./){
$a++;
} elsif ($guess=~/.*$bit[2].*/){
$b++;
}
if ($guess=~/...$bit[3]/){
$a++;
} elsif ($guess=~/.*$bit[3].*/){
$b++;
}
if ($a==4){
say "Congratulations!You guessed it.";
AGAIN: print "Replay?(y/n)";
if (($answer=<STDIN>) eq "y\n"){
$a=0,$b=0,$answer=0,$rand=0,$num=7,@bit=(),%count=%emptyhash; #各种数据初始化 hash不会 用{}和undef好像都不行
goto REPLAY;
} elsif ($answer eq "n\n"){
exit 1;
} else {
say "Sorry,I don't know what you mean."; #-_-b 本意是想弄成shell那样的 回答y/n之外的没有反应继续等待
say "Game exit..."; #但是不会 于是偷了个懒
system "sleep 3";
exit 1;
}
} else {
if($num==1){
say "Sorry,up to guess 7 times,you have no chance.";
print "The right number is ";
say @bit;
goto AGAIN;
}
say "\n".$a."A".$b."B..........Try again. ".--$num." opportunities left.\n";
$a=0;
$b=0;
}
}
前一段时间学perl 主要是看中了perl的简洁强大 相比C和汇编 写相同的一个程序 代码量要少很多
现在想想自己是太急于搞出来一些作品了 反而忽略了写程序方面的一些内功
现在硬件发展很快 高级语言的低效率大部分时候都可以弥补了
虽然我学的高级语言不多 但就从perl来看 真的是越来越接近于人类语言了 特别是看了perl6的一些新特性之后
这样的语言越来越容易被学会 也许也会越来越多 更新的越来越快 如果没有学好计算机方面的内功 只是忙于去追赶更新更潮流的语言……

现在静下心开始看一些比较底层的东西了 等有所成 再好好学习perl
晒晒我看过的一些书吧 不怕高手见笑 主要是提供给和我水平差不多的童鞋 如果大家也有自己的好书千万不要藏着掖着 都拿来晒晒吧

汇编语言(第二版 王爽 清华大学出版社) 这本书看着非常之直白 循序渐进 差不多算是傻瓜入门书吧 内容很浅
我一开始看的 IBM-PC汇编语言程序设计 有点吃力就先看这本了 这本书还有一个汇编网http://www.asmedu.net/ 也很不错
C primer plus 作为C语言入门书也不错 看谭浩强的C 有些地方真的是写了好多 但就是让我不得要领 也许是当初我没底子吧 不过看他的书没一点代码风格的
这点很不好 另外还有 C和指针 这本也不错
还有就是现在在看的 深入理解计算机系统 第二版 以程序员的角度来写的 如果不知道书上的那些细节 很容易写出来漏洞多多 效率低下的程序
还有算法导论 我没有细看 听说是本好书 和上面那本书是一个系列的 算法也是很重要的 我还没来得及研究……这个可以上acm或者spoj实践实践
还有就是多谢 21楼 提供的一些书 英文好的同学可以看看
anticlockwise 写了: 光学语言本身是当然不够的,要学一门计算机语言一般就要从最基本的学起,比如算法+数据结构、数学~还要注意的就是代码规范,比如goto语句就不要用了,可以用函数/方法(Perl中用sub)来代替其中一些~Perl属于动态语言,自然有许多动态语言的特征,比如高阶函数,Closure,First Class Data Structure等等,这些都是需要去理解和活用的。如果这些都了解了,Perl看起书来很快的,如果只算Perl书籍,除了Learning Perl之外,我推荐Advanced Perl Programming, Perl Best Practices和Perl Hacks,都是Oreilly公司的~
其他的基础书籍有:Concrete Mathematics, Introduction to Algorithms, The Art of Computer Programming (Volumes 1-4), Algorithms in C/C++/Java (Parts 1-5), The Algorithm Design Manual, Modern Operating Systems, Compilers - Principles, Techniques and Tools
经常去做些算法题也是学习的一个好办法,比如上Topcoder, ACM的网站都可以