2007-02-04记录
目录操作
改变当前工作目录
chdir "/etc" or die "cannotchdirto/etc:$!";
@all_files=<*>;
相当于@all_files=glob "*";
$dire="/etc";
#打开目录句柄
opendir DH,"$dire";
#读文件
foreach $line (readdir DH){
print "$line\n";}
#关闭目录句柄
colsedir DH;
删除文件
unlink "file1";
unlink glob "*.c";
unlik返回值为删除文件的数目
重命名
rename "old","new";
创建和删除目录
mkdir "work",0755 or die "can't make dir work:$!";
rmdir glob "/work/*";
修改权限
chmod 0755,"work";
改变所有者
my $user= 1004;
my $group=100;
chown$user,$group,glob"*.o";
修改时间
my $now= time;
my $ago= $now-24*60*60;
utime $now,$ago,glob "*";
INDEX函数,取字符串$small在字符串$big中的位置,从0开始算,不存在则返回-1
index($big,$small);
substr函数
$part = substr($string,$initial_position,$length);
初始位置可以是负的,表示从字符串结尾处开始(此时,-1 表示最后一个字符)
my $string = "Hello,world!";
substr($string,0,5)="Goodbye"; #$string 现在变成了 "Goodbye,world!"
将字符串的最后 20 个字符串中的 fred 替换成barney
substr($string, -20)=~ s/fred/barney/g;
或者
my $previous_value= substr($string,0, 5,"Goodbye");
sprintf函数
my $data_tag= sprintf
"%4d/%02d/%02d%02d:%02d:%02d",
$yr, $mo,$da,$h,$m,$s;
$date_tag得到像 "2038/01/19 3:00:08"这样的值
格式化数字中的前置0 的含义是,如果需要,在前面加上0,使之达到需要的宽度