Learning Perl,4th Edition(2-3 内建警告)
2006-04-12 13:46
363 查看
2.3 perl 的内建警告机制
perl 可以被设置成通知用户警告的方式,当有可疑的东西在你的程序中运行时。
使用 -w 在命令行,打开警告开关。
$perl -w my_program
或者,如果总是需要警告,你可以请求他们在 #!行。
#!/usr/bin/perl -w
这个也可以在非unix系统上运行, 传统的习惯写成这样,因为路径对perl
不会产生影响:
#!perl -w
如果是5.6或者以后的版本,你可以使用编译指令打开warnings.(小心,
因为它不会起作用 对于早期的perl版本)
#!/usr/bin/perl
usr warnings;
现在,perl 会给一个警告,如果你把'12fred34'用作一个数字:
Argument "12fred34" isn't numeric
当然, 警告通常是对程序员有意义的,不是为了最终用户。如果一个程序员
不看这个警告,它很可能没有任何用处。 警告不会改变你的程序的行为,除非
他偶尔发生缺陷的时候。如果你得到一个警告消息 却不能理解,你可以取得一个更长的
解释通过使用 diagnostics编译指示。perldiag 主页 有短的警告信息也有长的详细解释。
#!/usr/bin/perl
use diagnostics;
当你添上了 use diagnostics编译指示,你的程序运行时看上去会暂停一会儿。
那是因为你的程序需要做很多工作(正在狼吞虎咽大块的内存),当你正想读详细文档
一旦perl 提醒你有错误。
如果需要,这可以作为一个加速程序的措施,一旦你不再需要读这些警告文档,你可以
删除 use diagnostics编译指示。(当然更好的做法是你可以修改自己的程序来避免产生
警告,这样仅仅是减少读取输出).
一个更深的优化是使用一个perl的命令行选项 -M,只有当需要的时候才载入编译指示
,避免每次都要修改源程序来使diagnostics有效或者无效。
$ perl -Mdiagnostics ./my_program
Argument "12fred34" isn't numeric in addition (+) at ./my_program line 17 (#1)
(W numeric) The indicated string was fed as an argument to
an operator that expected a numeric value instead. If you're
fortunate the message will identify which operator was so unfortunate.
当我们跑过代码时,Perl 将能够警告我们一个错误已经发生,我们将会指出它,但是不能
依赖这些文本和未来的perl的RELEASE版本的警告是一样的。
perl 可以被设置成通知用户警告的方式,当有可疑的东西在你的程序中运行时。
使用 -w 在命令行,打开警告开关。
$perl -w my_program
或者,如果总是需要警告,你可以请求他们在 #!行。
#!/usr/bin/perl -w
这个也可以在非unix系统上运行, 传统的习惯写成这样,因为路径对perl
不会产生影响:
#!perl -w
如果是5.6或者以后的版本,你可以使用编译指令打开warnings.(小心,
因为它不会起作用 对于早期的perl版本)
#!/usr/bin/perl
usr warnings;
现在,perl 会给一个警告,如果你把'12fred34'用作一个数字:
Argument "12fred34" isn't numeric
当然, 警告通常是对程序员有意义的,不是为了最终用户。如果一个程序员
不看这个警告,它很可能没有任何用处。 警告不会改变你的程序的行为,除非
他偶尔发生缺陷的时候。如果你得到一个警告消息 却不能理解,你可以取得一个更长的
解释通过使用 diagnostics编译指示。perldiag 主页 有短的警告信息也有长的详细解释。
#!/usr/bin/perl
use diagnostics;
当你添上了 use diagnostics编译指示,你的程序运行时看上去会暂停一会儿。
那是因为你的程序需要做很多工作(正在狼吞虎咽大块的内存),当你正想读详细文档
一旦perl 提醒你有错误。
如果需要,这可以作为一个加速程序的措施,一旦你不再需要读这些警告文档,你可以
删除 use diagnostics编译指示。(当然更好的做法是你可以修改自己的程序来避免产生
警告,这样仅仅是减少读取输出).
一个更深的优化是使用一个perl的命令行选项 -M,只有当需要的时候才载入编译指示
,避免每次都要修改源程序来使diagnostics有效或者无效。
$ perl -Mdiagnostics ./my_program
Argument "12fred34" isn't numeric in addition (+) at ./my_program line 17 (#1)
(W numeric) The indicated string was fed as an argument to
an operator that expected a numeric value instead. If you're
fortunate the message will identify which operator was so unfortunate.
当我们跑过代码时,Perl 将能够警告我们一个错误已经发生,我们将会指出它,但是不能
依赖这些文本和未来的perl的RELEASE版本的警告是一样的。
相关文章推荐
- Learning Perl,4th Edition(2-2 字符串)
- Learning Perl, 5th Edition [ILLUSTRATED]
- Security in Computing (4th Edition)
- Think in Java(4th Edition)学习笔记 2009.03.23
- 深入解析Windows操作系统(Windows Internals) 4th Edition 读书笔记 - 序言
- Thinking in java 4th Edition 读书笔记-I/O(5)
- 深入解析Windows操作系统(Windows Internals) 4th Edition 读书笔记 - 第一章 概念和工具(三)
- Thinking in java 4th Edition 读书笔记-Concurrency(3)
- Python学习手册 第3版(Learning Python, 3rd Edition) 中文版
- Data Mining: Practical Machine Learning Tools and Techniques, Second Edition
- Practical Programming in Tcl and Tk (4th Edition)
- Learning Perl ... (转载)
- Learning Perl,4th Edition(2-4 scalar variables)
- 《C++ Primer 4th Edition》读书笔记 - Part IV: Object-Oriented and Generic Programming
- [好书推荐] Microsoft Windows Internals (4th Edition)
- Security in Computing (4th Edition)
- 【译】《Pro ASP.NET MVC4 4th Edition》第二章(五)
- 《Fundamentals of Project Management 4th Edition》读书笔记 第一章 项目管理总览
- Perl Learning - 14 (Catch var, (:?), (:<LABLE>), \g{LABLE}, {m,n}
- 测试对象的等价性(Thinking in Java 4th Edition)