Intermediate perl-4.1引用简介
1.引用(对比按值传递与按引用传递)
(1) 引用是处理复杂数据结构、面向对象编程和精美子例程的基础。
(2) perl的标量变量保存单个值,数组保存一个有序的标量列表,散列保存一个无需的标量集合作为值,字符串作为键.但是这三种数据类型都不适合用于表示复杂的数据关系,而引用可以。
2.场景-在多个数组上完成相同的任务
(1) 上述代码中,@required数组中是一些必须物品-救生用具,防晒霜,水壶,雨衣; skipper哈希中存放的是船长所带的物品; foreach代码检查船长是否携带了所有的必须物品;
(2) 代码中使用了map操作符将列表转成了哈希;
(3) 上面两幅图片是检查船员所携带的物品,但是这样编写代码,重复性太强,可以将代码重构,放入一个通用的子例程中.
(4) 使用子例程的改进方法如下图所示:
其中,@_数组复制了子例程的参数信息,这样的操作对于少量数据还可以接受,如果数据量非常大,这样大规模复制数据,仅仅为了传递数据到子例程显得浪费;
此外,如果想要修改原始数组,因为在子例程中有一个副本(按值传递),所以任何对于@_数组的修改将不会自动影响原始数组(引用和sv的ref类似).