最近在用perl+mdbm+spread做东西。
php是用了很久了,python和ruby与用过,经典脚本语言就perl没摸过,现在在像小学生一样抱着教科书啃。
发现perl果然有难度多了。别的东西没让我这么频繁地犯错误。
1.第一个常见的错误是:向文件输出内容。标准语法是:
1. print STDERR "this is an apple.";
我一般都会写成
1. print STDERR,"this is an apple.";
总是多打一个逗号。老实说,一般我很少重复地犯错误,但是这个地方我就是记不住。
2.第二个常见错误是:经常漏写Hash引用的箭头。
本来应该写成
1. print $hash->{$key};
我常常写成
1. print $hash{$key};
3.第三个常见错误是:字符串比较:
用php时间长了,老是用两个等号来比较字符串。这是错的。正确写法是
1. if($var eq "hello") {
2. print "world";
3. }
我经常写成:
1. if($var=="hello") {
2. print "world";
3. }
这会导致逻辑错误,很难觉查。
4.第四个常见错误:
if语句不带括号(都是php带坏的)
正确的写法是:
1. if($var)
2. {
3. print "yes";
4. }
我经常写成
1. if($var)
2. print "yes";
5.还有一个错误,不是从php中带过来的,一般人估计不会犯:漏写分号。
常见错误之七:
在面向对象的编程中,错误地调用类内部函数。
以代码作为例子:
err.pl文件:
1. #! /usr/bin/perl -I./ -w
2. use module;
3. my $var=module->new();
4. print "call1:\n";
5. $var->call();
6. print "call2:\n";
7. $var->call2();
8. print "\ncall3:\n";
9. $var->call3();
下面是module.pm:
1. package module;
2.
3. sub new {
4. my $self={};
5. bless $self;
6. return $self;
7. }
8. sub call {
9. my ($self)=@_;
10. $self->_call("something as an Argument");
11. }
12. sub call2 {
13. my ($self)=@_;
14. _call($self,"something as an Argument");
15. }
16. sub call3 {
17. my ($self)=@_;
18. _call("something as an Argument");
19. }
20. sub _call {
21. my ($self,$arg) = @_;
22. if($arg)
23. {
24. print "yes ,We got an argument!\n";
25. }
26. print "self:".$self."\n";
27. }
28. 1;
现在我们运行err.pl:
1. renlu@localhost$ chmod +x err.pl
2. renlu@localhost$ ./err.pl
输出的结果是:
1. call1:
2. yes ,We got an argument!
3. self:module=HASH(0x1f85e88)
4. call2:
5. yes ,We got an argument!
6. self:module=HASH(0x1f85e88)
7.
8. call3:
9. self:something as an Argument
第一第二个执行结果一样,第三个不一样?这也很容易让程序出错。我今天下午调了一下午 最后发现是这个原因。特地记录一下。
分享到:
相关推荐
"perl常见编程100个实例"提供了丰富的示例,帮助初学者和有经验的开发者更好地理解和运用Perl语言。这些实例覆盖了Perl编程的多个关键领域,包括但不限于字符串操作、数组处理、文件I/O、正则表达式、模块使用以及...
- 使用Perl自带的调试器或第三方工具(如Devel::Cover)可以帮助定位错误。此外,编写测试用例并使用模块如Test::Simple等进行单元测试也是非常重要的步骤。 #### 十三、Perl与C交互 - **如何实现Perl与C语言的...
**PERL常见问题解答** Perl,全称 Practical Extraction and Reporting Language,是一种强大的脚本编程语言,广泛用于文本处理、系统管理、网络编程以及Web开发等领域。由于其灵活性和丰富的库支持,Perl在处理...
6. **错误处理与调试**:Perl的die和warn函数用于错误处理,而DB::DB模块可用于调试代码。 7. **面向对象编程**:Perl也支持面向对象编程,通过use strict; 和 use warnings; 来编写更严格的代码,以及使用package,...
总结,"PERL常见问题解答(HTML)"这份资源可能涵盖了上述提到的诸多Perl编程话题,包括基本语法、字符串操作、文件处理、模块使用、错误处理、面向对象编程以及Web开发。通过阅读和理解这些解答,开发者不仅能解决...
在本文中,我们将深入探讨"PERL perl_add_ons 3"的相关知识点,包括其安装、使用以及一些常见的Perl模块。 首先,Perl的模块安装通常通过CPAN(Comprehensive Perl Archive Network)进行,这是一个庞大的开源Perl...
**PERL常见问题解答(HTML)** Perl是一种高级的、通用的、解释型的、动态的编程语言,常被用于Web开发,特别是CGI(Common Gateway Interface)编程。本资料集旨在解决Perl编程中常见的问题,帮助开发者更好地理解和...
标题中的"perl_Perl_"可能是指一系列关于Perl编程的示例或教程,而描述则提到“读取源文件,将字母大小写转换,最后输出一个新文件”,这是Perl处理文本时常见的任务。 在Perl中,读取文件通常使用内置的文件句柄和...
这份"PERL常见问题解答 (HTML)"的资源很可能包含了关于Perl编程的各种常见问题和解决方案,旨在帮助初学者和经验丰富的开发者解决他们在实际工作中遇到的问题。以下是根据标题和描述推测的一些可能涵盖的知识点: 1...
此外,基础的错误处理和调试技巧也会被讲解,帮助新手避免常见的编程陷阱。 Perl语言的一个独特之处是其“there is more than one way to do it”(TIMTOWTDI)的原则,这意味着有多种方法可以实现相同的功能。这既...
`全局变量获取错误信息。 `sysopen()`与`open()`的不同之处在于,`open()`函数支持像`, `>`这样的简写模式,而`sysopen()`则需要使用`Fcntl`模块提供的常量来明确指定文件的访问权限。此外,`sysopen()`更适用于...
1. **常见错误及解决方法**:列出新手在编写Perl脚本时可能遇到的问题,并提供解决方案,比如语法错误、逻辑错误、模块使用不当等。 2. **最佳实践**:提供编写高效、可维护Perl代码的建议,如命名规范、注释规则、...
此时,熟悉Perl的错误处理机制,以及如何使用模块提供的API(应用程序编程接口)进行调试,都是非常重要的。 然而,由于提供的压缩包子文件名称为"失败.txt",这可能暗示了在下载或使用Perl模块过程中遇到了问题。...
Perl的错误处理机制,如`eval`函数,可以帮助捕获并处理这些错误。 4. **数据清洗**:数据清洗是必不可少的步骤,它包括处理缺失值、转换数据类型、去除异常值等。Perl提供了丰富的数据处理函数,如`chomp`去除换行...
3. **控制结构**:Perl提供了if语句、while循环、for循环以及foreach循环等常见的控制流结构。例如,`if ($condition) { ... }` 用于条件判断。 4. **正则表达式**:Perl的正则表达式是其强大之处,可以方便地进行...
根据提供的文件信息,我们可以归纳出以下几个重要的Perl编程语言中的知识点: ### 1. Perl中的文件句柄(Filehandle) ...这些函数在日常的Perl编程中十分常见,熟练掌握它们对于初学者来说是非常有帮助的。
"perl-5.26.1.tar.gz" 是Perl 5.26.1版本的源代码包,它以tar.gz格式封装,这是一种常见的在Unix/Linux环境中打包和压缩文件的方法。该版本发布于2017年,包含了完整的Perl解释器及其相关的源代码,允许用户在不同的...
本教程将深入探讨Perl 5的基础知识、核心概念和常见问题,帮助你掌握这一强大工具。 首先,让我们从基础开始。在Perl中,每行代码被称为一个语句,以分号结尾。变量是存储数据的地方,它们的命名遵循特定的规则,如...
表7-1列举了Perl DBI中常见的句柄变量名,而表7-2列出了非句柄变量的常用名称。这些变量在处理返回值、错误代码、行数等方面起到重要作用。 接下来,我们看一个简单的DBI脚本实例——`dump_members`。这个脚本展示...