perl学习笔记(3)—— 坑
来源:互联网 发布:mac dock图标不显示 编辑:程序博客网 时间:2024/06/05 15:10
(1)用perl来ls一个目录:
写perl的时候,经常要调用到系统命令,perl有很多等价的函数可以用,但是,不小心任性了,就想用system来实现了,好吧,来个ls把,列出指定的一个目录,直接上代码
sub ls{ my ($dir) = @_; system("ls -al $dir ");}
不做参数校验了,直接ls一个目录,这个是试了一下,确实可以这样做,感觉是挺容易的,没压力。但是,你仔细想一想,这真的可行吗?仔细想一下使用场景,你会发现,这个是一个坑,据说,是惨痛的教训。
好了,不绕了,这是要在linux下使用的,linux下是允许文件名是有空格,要是我们输入一个带有空格的文件名,这里是会出错的,比如:你这样使用,
ls("files isnot done");
会被解释为“ls files isnot done”,这样就相当于ls了三个文件夹了,是不是很神奇。解决方法就是,把函数改为
sub ls{ my ($dir) = @_; system("ls -al '$dir' ");}
像你在linux下ls一个文件一样。
(2)函数的参数,如果把数组和标量作为参数,比如:
sub func{ my (@arrar, $var) = @_;}当你按函数定义传参的时候,你会发现,在函数体里$var为undef, 那时我纳闷了,说好的var去哪了,调试了一下,居然发现被存在@array里了,也是醉了,要解决这方法,可以把数组变为数组的引用,传参的时候也传一下数组的引用就可以了,这样var才不会被@array吞了。
0 0
- perl学习笔记(3)—— 坑
- perl学习笔记(一)——perl的安装
- perl 哈希(hash)学习笔记(—)
- perl学习笔记-----------------------(3)
- Perl学习笔记(3)
- perl学习笔记(二)——语法
- perl学习笔记(三)——语法
- perl学习笔记(4)——动态加载
- perl学习笔记——数据类型
- perl学习笔记—正则表达式
- Perl学习笔记 No.3
- Perl学习笔记(1)
- Perl学习笔记(2)
- perl学习笔记(一)
- perl学习笔记(二)
- perl学习笔记(一)
- perl学习笔记(二)
- Perl学习笔记(一)
- VS2010报错:warning C4715:not all control paths return a value
- intelliJ idea创建分层的项目结构
- [LeetCode] Flatten Binary Tree to Linked List
- latex 安装和使用
- 让我们来谈谈最小生成树(Minimum Spanning Tree)算法
- perl学习笔记(3)—— 坑
- 实习篇---第二十五天
- 【剑指Offer面试编程题】 题目1350:二叉树的深度--九度OJ
- 搭建dwr框架
- VS2010编译运行项目提示 拒绝访问
- Android Studio系列教程四--Gradle基础
- hbase0.94集群搭建
- 回来
- 谈优秀游戏程序员工作的三大基本要求