Perl 学习笔记-目标操作

1.在目录树中移动.

  程序运行时会以当前工作目录作为相对路径的起点, 可以使用  chdir 操作符改变当前目录:

chdir "/etc" or die "Can‘t chdir to /etc:$!"; #因为这是一个相对操作系统的调用, 所以错误信息会返回到 $! 中.

  由Perl程序启动的所有进程都会继承Perl程序的工作目录. 但对于启动Perl的进程,它的工作目录不会随Perl工作目录的改变而改变, 所以无法写出任何Perl程序来代替Shell里的cd命令.因为一旦退出Perl程序, 又会回到开始的工作目录.

  如果省略参数, 将回到用户主目录, 这是少数不以$_作为默认参数的情形之一.

2. 文件通配名(globbing)

  命令行里: shell会将命令行里的文件名模式展开成所有匹配的文件名, 称为文件名通配, 如 echo *.txt  名令echo并不知道如何展开*txt, 因为shell会将它展开, 在Perl中也同样适用.

  Perl程序中: 适用 glob 操作符进行文件名通配.  my @all_files = glob "*"; #所有文件   my @pm_files = glob "*.pm";

  glob 不会匹配以 . 号开头的文件名, 任何能在命令行上键入的模式都能作为参数交给glob处理, 如果要一次匹配多种模式,可以在参数中用空格隔开各个模式:  my @all_files_including_dot=glob ".* *";

  在glob操作符之前的方式: 使用尖括号语法 my @all_files=<*>;  和双引号字符串内插的情形类似, 尖括号内的变量也会被替换为当前变量的值, 然后按照文件名通配展开成对应的文件名列表.

my $dir="/etc";
my @dir_files=<$dir/* $dir/.*>;

  联想到<STDIN>表示从文件句柄读取, 那么Perl怎么区分是文件名通配还是从文件句柄读取呢? => 规则: 如果尖括号内是满足Perl标识符条件的,就作为文件句柄读取, 否则代表使用文件名通配操作.

my @files = <FRED/*>; ## glob
my @lines = <FRED>;   ## 从文件句柄
my $name = "FRED";
my @files = <$name/*> ## glob
my @files2 = <$name>  ## $name是简单标量变量, 不是数组或哈希, 所以也是对文件句柄的读取,Perl是在编译时确定的, 所以和变量的内容无关  

3. 目录句柄

  与文件句柄类似, 只是操作符和内容不同

  使用 opendir 代替文件句柄操作符 open

  使用 readdir 代替文件句柄操作符  readline

  使用 closedir 代替文件句柄操作符  close

  读取到的是目录里的文件名和子目录名 , 而不是文件的内容.

my $dir_to_process = ".";
opendir DH, $dir_to_process or die "Can‘t! $!\n";
foreach $file(readdir DH){
    print "$file\n";
}
closedir DH;

  和文件句柄一样, 目录句柄会在程序结束时自动关闭, 也会在用这个句柄再打开另一个目录前自动关闭.

4.文件操作

  删除:在Perl中使用 unlink 操作符来将文件放入碎纸机,类似于Linux中的rm命令,参数是列表,返回成功地删除了多少个文件,可以配合通配符glob使用,实现一次删除多个文件。执行失败时信息保存在变量 $!

   重命名: rename 函数,类似mv命令,参数为列表。执行失败返回假,信息保存在$!中,通常使用 or die(或 or warn)来报告

5.建立和删除目录(每次只能操作一个)

  建立目录 mkdir ,可以在创建目录时指定权限,如果权限是字符串,要用otc函数处理

my $name = "roger";
my $perssions = "0755";
mkdir $name , oct($perssions) or warn "Can‘t make directory $name : $!";

删除目录 rmdir ,删除非空目录将会失败。可以先用unlink删除目录里面的目录。创建临时目录最好包含当前进程标识符,这个代号放在 $$ 变量中,这么做什可以防止和别的进程冲突。

  删除目录树:使用模块 File::Path

use File::Path qw(make_path remove_tree);

# 创建任意深度的目录树
# make_path($dir1,dir2,...)
make_path(‘roger/bar/zoo‘,‘rog/dsd‘);
make_path("roger/bar/zar","roger/dst/r",{ #实际过程中是一层一层创建的
    verbose => 1,
    error => \my $roger, #为什么要使用反斜杠
    mode => 0711,
    });

# 删除任意深度的目录树,如果目录非空会先unlink文件
remove_tree(‘roger/bar/zar‘,‘roger/dst/r‘,{
    verbose => 1,
    error => \my $err_list,
    });

  修改文件或目录权限: chmod

  更改隶属关系:  chown

  修改时间戳: utime :可以修改某个文件的最近访问时间来造假

时间: 2024-10-09 15:12:42

Perl 学习笔记-目标操作的相关文章

perl学习笔记——目录操作

在目录书中移动 chdir 操作副改变当前的工作目录.它和shell中cd命令类似: chdir ‘/etc’ or die “cannot chdir to /etc:$1”; 注意:工作目录不能更改的,也就是说Perl程序返回后一定会回到所在的工作目录. 如果调用chdir时不加参数,Perl会猜想是想要回到用户主目录,并将工作目录设成主目录,这和shell下使用不加参数的cd命令效果相同. 注意:可不能使用波浪符-. 文件名通配 形如:echo *.pm;其中通配符是*.在Perl中同样适

PERL学习笔记---正则表达式的应用

使用m//匹配 //这是m//(模式匹配)的一种简写.同qw//操作一样,可以使用任何成对的分隔符.因此,可以使用m(fred), m<fred>, m{fred}, m[fred],或者m,fred,, m!fred!, m^fred^,其它非成对的分隔符也可以 不区分大小写:/i if(/yes/i) {#大小写无关 print “In that case, I recommend that you go bowling.\n”;} 匹配任何字符:/s 默认情况下,点(.)不匹配换行符,这

Blender学习笔记 | 02 | 操作

Shift 点击不同图层 同时显示多图层物件 z 切换 Solid / Wireframe 视图模式 点选物件后M 移动到图层选项 Ctrl + 鼠标左键拖动 自由全选物件 B 方形区域圈选物件 Tab Object / Edit Mode 切换 T 开 / 关 侧栏 Ctrl + Tab 编辑状态下切换编辑对象 E Extrude Region 推挤区域.以发现为轴线. X 删除物件菜单 Blender学习笔记 | 02 | 操作,布布扣,bubuko.com

memcached学习笔记5--socke操作memcached 缓存系统

使用条件:当我们没有权限或者不能使用服务器的时候,我们需要用socket操作memcached memcached-client操作 特点: 无需开启memcache扩展 使用fsocketopen()套接字连接memcached 同样执行CRUD require_once(CLASS_PATH.'memcached-client.php');//CLASS_PATH 是我定义的类文件文件夹路径 $mc = new memcached( array( 'servers' => array( '1

树莓派学习笔记——SQLite操作简述

0 前言 本文介绍如何在树莓派中利用SQLite数据库保存CPU温度数据.SQLite是一款轻量级零配置数据库,非常适合在树莓派和其他嵌入式系统中使用.SQLite文档详细资料丰富,本文不会详细解释SQLite数据库操作的方方面面,只能结合具体场景按需说明.本文介绍的SQLite技巧也可以在其他平台使用,并不局限于树莓派. 本文继续折腾树莓派温度,需要从中可以玩出新花样. [相关博文] [树莓派学习笔记--索引博文]--更多博文请关注. [树莓派学习笔记--获取树莓派CPU温度] [树莓派学习笔

计算机操作系统学习笔记_1_操作系统概述

操作系统概述 一.操作系统的概念.特征.功能和提供的服务 1.操作系统的概念     操作系统是计算机系统中最重要.最基本的系统软件,操作系统位于硬件和用户程序之间.    对于用户来讲:它能向用户提供使用计算机的接口;    从资源管理角度来看:它能管理计算机软硬件资源,提高其利用率;    再者,利用虚拟机技术(如WMWare,VirtualBox,Java虚拟机等),扩展了计算机的功能和使用范围.     因此,操作系统的定义为:操作系统是控制和管理计算机软.硬件资源,以尽可能合理.高效的

Perl学习笔记(一)--简介

1. 查看当前所用Perl版本号 ? 1 perl –v 2.  一个简单的Perl程序 ? 1 2 3 print "hello world"; #这是注释 执行它: ? 1 Perl helloWorld.txt 文件名后缀可以是pl可以是txt 3. 一个稍微复杂点的Perl程序 ? 1 2 3 4 5 6 @line = `perldoc -u -f atan2`; //运行一个外部命令,通过反引号来调用,将输出结果一行行依次存储在@line这个数组变量中 foreach(@l

perl学习笔记--搭建开发环境

windows下perl开发环境搭建 perl下载地址:http://www.activestate.com/developer-tools 各个插件的安装方法:(通过代理上网的方法) 方法一:padwalker的安装步骤 1. padwalker下载地址: http://www.bribes.org/perl/ppm/ 2. 解压下载的文件 4. 拷贝 blib/lib/PadWalker.pm 到 Perl/lib(你的安装路径)5. 拷贝 blib/arch/auto/PadWalker

memcached学习笔记3--telnet操作memcached

方式: 一.telnet访问memcached缓存系统(主要用于教学,不讨论) telnet 127.0.0.1 11211     => telnet IP地址 端口号 //往Memcached中存放数据 add username 0 60 5       => add:添加命令 username:key的名字(是以key/value存放) 0:标示,一般不用管 60:缓存多长时间,超过时间自动删除,单位(秒) s 5: 表示放入的数据大小 注意:如果一个key已经存在,再要添加数据到这个k

perl学习笔记之:正则表达式

 Perl 中的正则表达式 正则表达式的三种形式  正则表达式中的常用模式  正则表达式的 8 大原则          正则表达式是 Perl 语言的一大特色,也是 Perl 程序中的一点难点,不过如果大家能够很好的掌握他,就可以轻易地用正则表达式来完成字符串处理的任务,当然在 CGI 程序设计中就更能得心应手了.下面我们列出一些正则表达式书写时的一些基本语法规则. ----------------------------------------------------------------