Content
17 Lessons • 0 Quizzes • 0 Challenges
现代 Perl 入门
- 1
课程概览
- 2
运行现代 Perl
Perl 的哲学
- 1
Perldoc
- 2
表达能力
- 3
上下文
- 4
空上下文、标量和列表上下文
- 5
数值、字符串和布尔值上下文
- 6
隐式概念:默认标量变量
- 7
隐式概念:默认的数组变量
- 8
练习:移除换行符
- 9
解决方案:移除换行符
- 10
测验:上下文与隐含含义
Perl 标识符和变量
- 1
标识符
- 2
变量
- 3
值
- 4
Unicode 和字符串
- 5
隐式转换
- 6
数字
- 7
列表
- 8
练习:数据格式化
- 9
解决方案回顾:数据格式化
- 10
测验:数据类型
控制流:条件语句与循环
- 1
分支指令:if、unless、else、elsif
- 2
三元条件运算符
- 3
条件指令和上下文
- 4
循环指令:foreach、for
- 5
迭代:别名与作用域
- 6
循环指令:C风格的 for 循环
- 7
循环指令:while 和 until
- 8
循环中的循环
- 9
循环控制:next、last、redo、continue
- 10
Switch 语句:given、when、default
- 11
尾调用优化
- 12
练习:在列表中查找一个数字
- 13
解决方案回顾:在列表中查找一个数字
- 14
练习:实现埃拉托斯特尼筛法
- 15
解题回顾:实现埃拉托斯特尼筛法
- 16
测验:控制流
数据结构
- 1
标量
- 2
数组
- 3
数组操作与切片
- 4
上下文与数组插值
- 5
哈希表
- 6
哈希键和值
- 7
哈希切片
- 8
哈希常用技巧
- 9
强制类型转换
- 10
练习:反转哈希表
- 11
解决方案回顾:反转哈希表
- 12
练习:数组中子数组的出现次数
- 13
解决方案回顾:数组中子数组的出现次数
- 14
测验:数据结构
包与引用
- 1
包
- 2
引用简介
- 3
引用类型 I
- 4
引用类型 II
- 5
嵌套数据结构
- 6
引用与嵌套数据结构
- 7
练习:求嵌套数组所有元素的总和
- 8
解决方案:求嵌套数组中所有元素的总和
- 9
测验:包与引用
运算符
- 1
操作符特性
- 2
操作符类型
- 3
练习:制作一个菱形
- 4
解题回顾:制作一个菱形
- 5
测验:运算符
函数
- 1
声明和调用函数
- 2
函数参数
- 3
函数签名
- 4
操作函数参数
- 5
函数和命名空间
- 6
报告错误
- 7
高级函数
- 8
陷阱与错误特性
- 9
作用域的类型 I
- 10
作用域的类型 II
- 11
匿名函数
- 12
闭包
- 13
状态 vs 闭包与伪状态
- 14
属性
- 15
自动加载
- 16
AUTOLOAD 的缺点 1. 性能开销:使用 AUTOLOAD 会引入额外的运行时开销,因为每次访问未定义的方法或属性时,都会触发 AUTOLOAD 处理程序。这会导致程序执行速度变慢,尤其是在频繁调用的情况下。 2. 调试困难:由于方法和属性是在运行时动态生成的,调试时难以追踪实际调用的代码路径。错误信息可能不够明确,定位问题更加困难。 3. 可读性和可维护性差:代码逻辑隐藏在 AUTOLOAD 处理程序中,其他开发者难以快速理解类的行为。这降低了代码的可读性和可维护性。 4. 容易出现意外行为:如果 AUTOLOAD 实现不当,可能会导致意外的函数或属性被创建,从而引发难以察觉的 bug。 5. 不符合显式编程原则:AUTOLOAD 使代码变得隐式,违背了“显式优于隐式”的编程理念,增加了代码的不确定性。 6. 与静态分析工具不兼容:许多静态分析工具(如 IDE 的代码检查、类型检查器)无法正确解析 AUTOLOAD 动态生成的内容,导致无法提供有效的代码提示或错误检测。 7. 依赖于命名约定:AUTOLOAD 通常依赖于特定的命名规则来决定如何处理请求,一旦规则变更或不一致,可能导致功能异常。 8. 难以测试:由于方法和属性是动态生成的,单元测试需要特殊处理,增加了测试的复杂度。 综上所述,虽然 AUTOLOAD 提供了灵活性,但在大多数情况下应谨慎使用,优先考虑显式定义方法和属性的方式。
- 17
练习:批量计算器
- 18
解决方案回顾:批量计算器
- 19
练习:编写一个 AUTOLOAD 函数
- 20
解决方案回顾:编写一个 AUTOLOAD() 函数
- 21
测验:函数
正则表达式与匹配
- 1
正则表达式与匹配入门
- 2
正则表达式运算符
- 3
量词
- 4
贪婪性
- 5
正则表达式锚点
- 6
元字符
- 7
字符类
- 8
捕获
- 9
分组与交替
- 10
其他转义序列和断言
- 11
正则表达式修饰符
- 12
智能匹配
- 13
练习:提取电子邮件地址
- 14
解决方案回顾:提取电子邮件地址
- 15
练习:格式化数据
- 16
解决方案回顾:格式化数据
- 17
测验:正则表达式与匹配
对象
- 1
对象简介
- 2
类和方法
- 3
类属性
- 4
封装
- 5
多态性
- 6
角色
- 7
继承
- 8
重写方法
- 9
Moose 和 Perl 面向对象编程
- 10
受祝福的引用
- 11
方法查找与继承
- 12
反思
- 13
高级面向对象 Perl
- 14
练习:实现继承
- 15
解决方案回顾:实现继承
- 16
测验:对象
风格与效果
- 1
在 Perl 中编写优质代码
- 2
编写可维护的 Perl
- 3
编写符合习惯的 Perl
- 4
编写高效的 Perl 代码
- 5
异常
- 6
异常的注意事项和内置异常
- 7
编译指示
- 8
练习:异常处理
- 9
解决方案回顾:异常处理
- 10
测验:风格与效率
管理真实程序
- 1
测试
- 2
更好的测试比较与组织
- 3
处理警告
- 4
打开文件
- 5
读取和写入文件
- 6
特殊文件处理变量
- 7
目录和路径
- 8
文件操作
- 9
模块
- 10
分发包
- 11
通用包
- 12
代码生成
- 13
编译时操作
- 14
重载
- 15
污点
- 16
练习:按句子反转文件
- 17
解决方案回顾:按句子反转文件
- 18
测验:真实程序的管理
Perl 语法之外
- 1
惯用语:第一部分
- 2
惯用语:第二部分
- 3
全局变量
- 4
测验:Perl 模式与惯用法
应避免的 Perl 写法
- 1
裸字
- 2
间接宾语
- 3
原型
- 4
原型的问题与用途
- 5
方法-函数等价性
- 6
绑定
- 7
测验:应避免的内容
Perl 及其社区
- 1
社区与开发网站
- 2
CPAN
- 3
CPAN 安装
Perl 的下一步学习
- 1
有用的内置模块
- 2
接下来是什么?
- 3
恭喜!
附录
- 1
Perl 测试模块
Certificate of Completion
Showcase your accomplishment by sharing your certificate of completion.
Course Author:Anonymous User