重读了Perl高效编程

再次阅读,发现一些之前忽略掉的内容:

1. 关于引用作为参数传递,例如:

bar(\@bletch);

sub bar{
    my @arr = @{shift}
}

但是这样,shift只是一个变量名称而不是内建函数。如果想要变成内建函数,必须按照下面的方法添加点什么:

my @arr = @{shift()}

或者占位符:

my @arr = @{+shift}

2. select 和write的默认操作对象是当前文件句柄。

shift和pop的默认操作对象是:子程序内为@_,子程序外为@ARGV。

gmtime和localtime的默认操作对象是time函数。

3. =>操作符,会将改操作符左边的对象自动识别为一个字符串。

4. 若某个函数的返回值为一个数组引用,则以下三种形式都能够工作:

my @arr = @{ function_return_arrayref()}
my @arr = @{ &function_return_arrayref}
my @arr = @{ +function_return_arrayref}

如果想要返回的数组进入一个散列,则可以使用eval:

my $hashref = eval{
    return {key_value_pairs()}
}

Perl 解释器总是会把花括号中的单个标识符(包括两边空白)都识别为字符串。

5. 对于未加参数调用的子程序,子程序会有一个默认为空的@_数组。

如果使用:&加载子程序名称前调用,并且不加圆括号,则会继承当前环境下的@_数组。

时间: 2024-11-16 20:24:10

重读了Perl高效编程的相关文章

嵌入式高效编程(二)——清晰

4.高效编程要点:清晰 清晰:代码易于阅读,理解维护. 逻辑简单 代码行简短 函数简短 凝视(或自凝视) 分层明白 4.1 代码头非常重 比如:多级结构体查找变量 <span style="font-size:14px;">a1 = A->B->C.D.a1; b1 = A->B->C.D.b1; c1 = A->B->C.D.c1; d1 = A->B->C.D.d1;</span> 如果 A.B.C.D都是非常

告别996 实现高效编程 减少开发压力

第1章 口号:打破996魔咒,向“资本家”开炮[我们的最高宗旨]有一种优秀,叫“告别996".本章开宗明义:一语道破课程的最高宗旨:告别996,打破996魔咒,不屈服于“资本家”淫威,为广大猿类提升工作效率,赢得个人时间,同时通过课程思维导图综述本课程内容丰富,必将让小伙伴们乘兴而来,兴尽而归.... 第2章 告别996之函数编程[让代码像撸串儿一样]你是否见过“撸”代码也可以像撸串儿一样?那么我们从函数式编程说起,通过学习本单元,使小伙伴们了解Lambda出现的意义和价值:会灵活使用:知晓使用

[.NET] 《Effective C#》快速笔记 - C# 高效编程要点补充

<Effective C#>快速笔记 - C# 高效编程要点补充 目录 四十五.尽量减少装箱拆箱 四十六.为应用程序创建专门的异常类 四十七.使用强异常安全保证 四十八.尽量使用安全的代码 四十九.实现与 CLS 兼容的程序集 五十.实现小尺寸.高内聚的程序集 这是这一系列的最后一篇. 四十五.尽量减少装箱拆箱 值类型是数据的容器,不支持多态. 装箱把一个值类型放在一个未确定类型的引用对象中,让该值作为引用类型所使用.拆箱指从引用类型的位置取出值的一个副本. 装箱拆箱都是比较影响性能的手段,应

C# 高效编程笔记2

C# 高效编程笔记2 1.理解GetHashCode()的陷阱 (1)作用:作为基于散列集合定义键的散列值,如:HashSet<T>,Dictionary<K,V>容器等 (2)重载GetHashCode()的规则: 如果两个对象相等,那么其散列值也应相等;对于任何一个对象,其GetHashCode()必须保持不变;对于所有输入,散列函数应该在所有整数中按照随机分布生成散列码. 2.推荐使用查询语句而不是循环 查询语句可以让程序的逻辑表达式由"命令式"转为&qu

我的高效编程秘诀

高效编程.高效学习.高效工作.高效生活 高效的意思是指在相同或更短的时间里完毕比其她人很多其它的任务,并且质量与其她人一样或者更好.用英文来说就是write less.do more.这是程序永远的主题,在我们日常编程中一段代码常常复用的时候我们会进行代码封装,借助一些工具来高速定位错误这些都有利于提高我们编程的效率.今天和小伙伴们聊聊高效编程的秘诀,事实上不仅仅是高效编程的秘诀,更是高效学习.生活和工作的秘诀,由于小编感觉编程就如同人生一样,一样的丰富多彩,一样的璀璨夺目.指导小编高效编程.生

【Matlab编程】Matlab高效编程技巧

1.默认状态下.matlab显示精度是short型,而默认的计算精度是double型.而且显示精度与计算精度没有关系. 2. 一仅仅失明的猫的问题:注意方法! 3.给数组预分配空间是主要的高效编程准则之中的一个.假设不预先分配内存详细的动态扩充数组内存的实现方式例如以下: 假设预分配空间,则仅仅将新加入的值放入连续的内存中,而不会将整个数组又一次分配空间. 4.matlab也能够使用window命令,仅仅须要在系统命令前加.或者dos:比如! shutdown -s 会关闭电脑.这样能够想到.我

【转载】架构师速成-如何高效编程

引子 赵云大喝一声,挺枪骤马杀入重围,左冲右突,如入无人之境.那枪浑身上下,若舞梨花:遍体纷纷,如飘瑞雪. 赵云是所有历史人物中我最喜欢的一个,如果放到现代,他走了it的道路,一定可以成为一个编程高手.为什么? 其实古时打仗也是一门技术活,需要有勇有谋,跟it没有什么太大的区别.打仗要修身.修技.修器才能左冲右突,如入无人之境,同样做it也要修身.修技.修器,才能高效编程,如入无人之境. 高效编程的修炼 何谓修身.修技.修器? 修身,古今都是修炼自己的体魄和思维,使自己体魄强健,思维敏捷 修技,

架构师速成-如何高效编程

今天看见有个csdn的征文大赛,谈谈如何高效编程,正好之前有些感触,先沉淀下来. 引子 赵云大喝一声,挺枪骤马杀入重围,左冲右突,如入无人之境.那枪浑身上下,若舞梨花:遍体纷纷,如飘瑞雪. 赵云是所有历史人物中我最喜欢的一个,如果放到现代,他走了it的道路,一定可以成为一个编程高手.为什么? 其实古时打仗也是一门技术活,需要有勇有谋,跟it没有什么太大的区别.打仗要修身.修技.修器才能左冲右突,如入无人之境,同样做it也要修身.修技.修器,才能高效编程,如入无人之境. 高效编程的修炼 何谓修身.

[.NET] 《C# 高效编程》(一) - C# 语言习惯

C# 语言习惯 目录 一.使用属性而不是可访问的数据成员 二.使用运行时常量(readonly)而不是编译时常量(const) 三.推荐使用 is 或 as 操作符而不是强制类型转换 四.使用 Conditional 特性而不是 #if 条件编译 五.为类型提供 ToString() 方法 六.理解几个等同性判断之间的关系 七.理解 GetHashCode() 的陷阱 八.推荐使用查询语法而不是循环 九.避免在 API 中使用转换操作符 十.使用可选参数减少方法重载的数量 十一.理解短小方法的优