Wordpress 升级 从2.7到2.8 记录

作者:Ajian 发布时间:August 21, 2009 分类:Linux软件

前言:其实2.8早出来了,一直在我的后台闪来闪去的,实在看不过去,还是升了吧。本身就自带自动升级,但是我的就是升不上去啊,老是报错,怎么办呢,只好手动来进行了,以下就是手动升级的相关步骤。

环境:Wordpress 2.7 升级到 2.8.4
系统:CentOS 5.3

升级步骤:
1、备份
最好还是准备下,不然把自己的心血写的东西都丢了可不值啊
备份两个东西:数据库 可以找个备份插件 也可以自己手动导出SQL语句 或者直接备份数据库文件
wordpress程序文件 : 其实这个中间有几个注意要保存的 A、原来的配置文件(有数据库连接方面的信息) B、有空间整体保存还是最保险的 C、最要注意 相册文件(自己定义的目录) 还有上传的相关文件(默认在wp-content/uploads下) D、最有用的文件 插件和主题 在wp-content下面

2、下载
从官方下载 latest.zip 我这里下载的 中文版的 http://cn.wordpress.org/wordpress-2.8.4-zh_CN.zip

3、解压并安排目录方法

解压到原来的同级目录  使用软件连接方法来安排目录
例:目录blog 为对外的目录 那么 原来的 wordpres-2.7 和wordpress-2.8.4都在同一目录

删除原来wordpress-2.7与blog的软连接
建议新连接 ln -s wordpress-2.8.4 blog  这样就很快切到新的了

4、拷贝原来的文件

拷贝2.7 目录下 wp-config.php 和 .htaccess(如果有做) 到新的目录下
拷贝原来的模板文件: \cp -r ../wordpress-2.7/wp-content/themes/*   wp-content/themes/  (记得加*号 不然会copy目录的 如果要强制覆盖请用\cp)
拷贝原来的插件文件:  \cp -r ../wordpress-2.7/wp-content/plugins/*   wp-content/plugins/   (如果你不怕麻烦 怕出错的话 只要copy你需要的插件就可以了 也可以配置完后再添加插件,有些插件可能会有版本的需求,而导致出错)
拷贝原来的上传文件:     cp -r ../wordpress-2.7/wp-content/uploads    wp-content/            (新安装有是没有这个目录的)
恢复相册文件:如果之前的目录已经定好了 想下载更新时还要这么麻烦 同样可以把相册目录移动blog 目录之外 利用软件连接来进行访问  这样可以避免备份的数据过大。

5、配置

在浏览器上运行 /wp-admin/upgrade.php 升级数据库
删除或者重命名 wp-admin 目录下的 install.php 和 upgrade.php

Ctr-F5 刷新自己的网站即可看到系统已经升级成功。

6、升级过程中遇到的问题(如自动升级):

1、问题:使用自动升级失败。

下载失败。:Operation timed out after 30 seconds with 1524600 bytes received

解决:修改 wp-admin/includes/file.php

把 444行的 $response = wp_remote_get($url, array(’timeout’ => 30));

30改成300 或 600

2、问题:PCLZIP_ERR_BAD_FORMAT (-10) : Unable to find End of Central Dir Record signature  进行解压安装时报的错

未解决

7、升级后的完善工作

添加新插件  修改模版
之后还对服务器软件进行了相关的升级

我的BLOG 升级后相关数据:

Wordpress 2.8.4

Nginx 2.8.8

PHP 5.2.10

Mysql 5.1.36

Perl学习笔记五

作者:Ajian 发布时间:August 17, 2009 分类:Perl

前言:《Perl语言入门(第四版)》这本书,最后三章看完了,可以说对perl有个基本的认识的,其实我觉得如果学过PHP的人来学这个,真是简单的不能再简单了,不过也可能会觉得他那“丑”了,但对于一个系统管理员来说Perl是一个很好的管理程序,何况像Perl这种语言基本都是系统自带的,就像Shell一样调用方便,这样才会让你可以自由的移动到不同的服务器上,直接进行操作等。之后的学习就是实践了,多看多回顾,最快的学习方法就是亲手写,解决了几个问题之后就会熟练了。

第十三章 字符串和排序
Perl 被设计成 90%擅长处理文本,10%处理其余的问题。

1、 使用索引寻找子串
index 函数
$where = index($big, $small);
index 函数总是报告子串出现的第一个位置。
某个子串最后出现的位置
my $last_slash = rindex("/etc/passwd","/"); #值为 4

2、 使用 substr 操作子串
substr 只处理部分的字符串
$part = substr($string, $initial_position, $length);
my $mineral = substr("Fred J. Flintstone", 8, 5);#得到“Flint”
它有三个参数:一个字符串,一个从 0 开始编号的初始位置(类似于 index 的返回值),以及子串的长度

index 和 substr 可以很好的一起工作。在本例中,我们提取出了字符串中字母 l 后的子串。
my$ $long = "some very very long string";
my $right = substr($long, index($long, "l" ));
如果想明确要求到达字符串的结尾处,无论其或长或短,可以像下例那样省略掉第三个参数.

3、 使用 sprintf 格式化数据
sprintf 函数的参数和 printf 的参数完全相同(除了可选的文件句柄外),但它返回的是被请求的字符串,而非打印出来。
 在“货币数字”中使用 sprintf
my $money = sprintf "%.2f",2.49997;
需要将所有有效的精度均保存在数字中,只是在输出时再进行四舍五入。

4、 高级排序
sort subroutine(排序子程序)
sub by_number {
if($a < $b){-1} elsif($a > $b){1} else {0}
}
my @result = sort by_number @some_numbers;
种三向的比较(three-way comparison)使用很频繁,太空船(spaceship)符号(<=>)
sub by_number {$a <=> $b }
cmp 操作符有些类似于字符串比较操作符如 ge

 依据值对 Hash 进行排序
:想根据 value 对 hash 排序。
sub by_socre { $score{$b} <=> $score{$a}}

 对多个 keys 排序
(发现两边的成绩相同)因为它比较这两个值得结果是 0。
my @winners = sort by_score_and_name keys %score;
sub by_score_and_name {
$score{$b} <=> $score{$a} #按照降序的成绩
or
$a cmp $b;  #字母顺序的名字
}

第十四章 进程管理
1、系统函数
最简单方法是使用 system 函数。
system "date";
system ' ls -l $HOME';
system "ls -l \$HOME";
注意有$时候的引号使用区别

system "long_running_command with parameters &";
它变成后台运行的进程

2、 避免 Shell
!system "rm -rf files_to_delete"or die "something went wrong";
这不是和系统调用相关的错误,因此 Perl 的$!变量不能描述。

3、exec 函数
system 函数创建子进程,它会立刻去执行请求的操作,Perl 则暂停。exec 函数引起 Perl 自己处理请求的操作。可以将它看作"goto"而非子程序调用。
实际使用 exec 的情况很少,除了和 fork 一起使用外
exec "date";
die "date couldn'trun: $!";

4、环境变量
在 Perl 中,环境变量可以通过 %ENV 这个 hash 变量得到,hash 中的每一个 key 代表一个环境变量。

5、使用反引号捕捉输出
my $now = `date`; #捕获 date 的输出
print "The time is now $now";  #已经有换行符
因此从安全和效率的观点,应当使用 system。
 在 List context 中使用反引号

6、 像文件句柄那样处理
open DATE, "date|"or die "cannot pipe from date: $!";
open MAIL, "|mail merlyn"or die "cannot pipe to mail: $!";
在第一个例子中, 竖线在右边,命令被调入,且其被打开到 DATE 这个文件句柄进行读入,这和 shell 中的命令date|your_program 类似。 
在第二个例子中,出现在左边,命令的标准输入被连接到 MAIL 这个文 件句柄, 这和命令your_program | mail merlyn 类似。

7、 发送和接收信号
my $int_count;
sub my_int_handler {$int_count++}
…
$int_count=0;
while(){
…某些处理花了几秒钟时间…
if ($int_count) {
#中断发生
print "[processing interrupted… ]\n";
last;
}
}

当每一行处理时,$int_count 的值可能是 0 如果没人按下 Ctrl-C,因此循环会继续处理下一行。但是,如果中断发生,则中
断处理部分会增加$count_int,当在结尾处检测到它时,循环退出。

第十五章 Perl模块
1、查找模块
从两种途径可以得到模块:Perl 发布包中附带的以及从 CPAN 中下载并安装的。
CAPN 上:http://search.cpan.org, 或 kobes 上:http://kobesearch.cpan.org查找。
方法之一是使用 perldoc 相应文档。
$perldoc CGI

2、 安装模块
如果模块使用了 MakeMaker,则需运行的命令大致如下:
$ perl Makerfile.PL
$ make install
如果在默认目录中不能安装,你可以针对 Makerfile.PL 使用 PREFIX 这个参数来指定目录。
$ perl Makerfile.PL PREFIX=/Users/fred/lib

一些模块的创建者使用另一个模块:Module::Build,来构造及安装他们的模块。此时的命令如下:
$ perl Build.PL
$./Build install

3、使用简单的模块
 File::Basename 模块
 用 命 令 perldocFile::Basename,或者你系统中的文档,可以阅读其功能
 use File::Basename;
 
 4、仅使用模块中的一些函数
假定需要在以前的程序中加入 File::Basename,同时你发现有一个子程序叫做:&dirname。
因此,你有一个子程序其名字和此模块中的一个函数同名
例如 File:Basename,在 use 声明中,可以使用输入列表(import list)来指定所需的函数,那它将只提供这些函数。
use File:Basename qw/ basename /;

use File:Basename qw/ /; #没有引入函数
my $betty = &dirname($wilma); #使用我们自己的子程序 &dirname(这里没有显示)
my $name = "/usr/local/bin/perl"; 
my $dirname = File::Basename::dirname $name; #使用模块中的 dirname

5、File::Spec 模块
将它和目录名一起组合成一个全文件名(fullfilename)。
use File::Spec;
#得到上面的$dirname, $basename 的值
my $new_name = File::Spec->catfile($dirname, $basename);

6、CGI.pm
创建 CGI 程序
CGI 模块提供了两种方法,一种是普通的老式函数接口,一种是 OO 接口。我们使用第一种。

7、数据库和 DBI
DBI(数据库接口(database interface))模块不是 Perl 默认附带的,但它是最常用的模块之一,因为大多数用户都需要连接到某种类型的数据库上。
DBI 漂亮的地方在于,对于绝大多数常用的数据库,其接口都是一样的,
当安装了 DBI 后,也需要安装 DBD(数据库驱动程序(database driver))。从 CPAN 上搜索 DBD,会返回一长串的结果。
根据数据库服务器,及其版本安装正确的数据库驱动程序。
use DBI;
$dbh = DBI->connect($data_source, $username, $password);

一旦连接上数据库后,则进入了 preparing, executing, reading 查询的循环。
当结束时,需要断开和数据库的连接。
$dbh->disconnect( );

Linux图形化连接打印机[图]

作者:Ajian 发布时间:August 17, 2009 分类:openSUSE

前言:应该是去年吧 也添加过打印机,觉得好麻烦,而且打印出来的东西也比在windows下打印得差远了,尤其是表格和字体方面。所以后来工作就一直麻烦别人帮我打印。

今天为折腾一个pdf文件的打印,麻烦了好几位同事,想想都过意不去,还是弄下自己的电脑吧,这东西弄好了,以后也不用那么麻烦了,一劳永逸,说干就干,还没有查找资料自己就看了看界面,呵呵真是比以前简单多了,没十分钟就搞定,所以还是特别再花几十分钟写了这篇,也是告诉大部分的人,其实linux下配置打印机,是件比win更简单的事。

系统环境:openSUSE 11.1 KDE 4.3.00 (KDE 4.3.0) "release 155"  yast2 2.17.59

“注意:我的系统上的软件都是使用的factory的源,基本都是比较新的软件,不过都差不了多少”

步骤:

第一步:打开yast管理工具

用到openSUSE 第一步就要想到yast  特有的工具 打开yast管理工具,选择“硬件”-->“打印机”

cups1

这个是今天刚更新过的yast 出来的样式跟以前的不一样,就是右侧的会都显示在一页,以前都是分开显示的而且选择是双击,可能你的还是单击。而且我最近也都使用中文了,其实英文有英文的好处,美观,尤其是在终端中的报错会显示原本的英文错误,方便查询,改用中文后操作是方便了很多。

第二步:添加新打印机

第一次使用这个,可能会有很多的提示,如:是否要加入服务自启动,等等提示,看清楚了点确认就OK了。 显示你的远程和本地打印都是空的,现在选择“添加”进入到下面的界面

cups3

第三步:填写相关信息

这里主要以网络打印机为例:

1、选择左侧的“TCP端口”
2、右侧填写打印机的IP  默认端口号就可以了,除非打印机改变了
3、选择打印机类型“HP”  一般的牌子都会有,当然是越出名越好 呵呵
4、最后使用“测试连接”  会提示test OK  说明信息都填写正确了

cups4

第四步:选择打印机驱动

上一步确认后,系统会自动搜索相关的驱动,并列出来所有的驱动,选择相应的驱动这里是 HP LaserJet 3055  可以自定义设置名称 如“HP 3055”

cups5

cups6

第五步:打印测试

这样你的打印机列表就产生了一个hp3055 最后进行打印测试

cups7

最后补充:如果驱动列表中没有,如果可以手动在网上找到该驱动,就可以自己手动添加驱动。大体过程就是这样的。

相当简单吧! 快去试试吧。

Shell统计隐藏目录的大小方法小记

作者:Ajian 发布时间:August 17, 2009 分类:管理监控维护,Shell

前言:今天df看到磁盘快满了,通过查看发现很多都是隐藏文件的,但是通过du又查不到隐藏目录的大小 不知道 哪些目录太大?怎么查看方便呢?

所以写了个脚本进行统计

脚本的功能,打印出指定目录下的一级目录所有隐藏目录的大小并且按M进行排序

#!/bin/bash
#Author:Ajian
#Date   : 2009-08-17
#website:www.ohlinux.com
for i in `find $DOCUMENT -maxdepth 1 -name ".*"  -type d -print `
do
  du -sm $i
done | sort -n | awk '{print $1"M"," ",$2}'

后来我又减化了下到一个命令

find /root -maxdepth 1 -name ".*"  -type d -print | xargs du -sm | sort -n | awk '{print $1"M",$2}'

解説:
1、查找隐藏目录 使用find /path -name ".*" -type d -print
2、查找一级的隐藏目录添加上 -maxdepth 1
3、对目录进行以M兆的统计 du -sm
4、对大小进行排序 默认以第一列 sort -nr (r是反向排序)
5、awk 在这里进行修饰了下因为du -sm 是没有显示单位的 用du -sh 有单位但增加了排序的麻烦
6、脚本和命令的书写区别 因为脚本用的for 语句是分条读入的所以如果把sort -n | awk '{print $1"M"," ",$2}' 放到 du -sm $i 之后不会对顺序产生变化,因为每次就对一条进行排序肯定最后的结果是没有影响的 而命令是用管道的方式 每次都是一批处理完后交给后面进行 注意脚本和命令的区别。

结果:

13M   /root/.opera
13M   /root/.svnqt
15M   /root/.cpan
16M   /root/.mplayer
78M   /root/.tencent
100M   /root/.config
116M   /root/.VirtualBox
158M   /root/.icons
160M   /root/.google
218M   /root/.kde4
258M   /root/.mozilla
517M   /root/.thumbnails
650M   /root/.beagle

Perl学习笔记四

作者:Ajian 发布时间:August 11, 2009 分类:Perl

前言:第十章是讲更多的控制结构方面,是之前的一个完善,第11和12章主要讲目录文件方面的操作,有SHELL基础的会发现很多都可以和SHELL中的一些命令对比,甚至是一样的。学习到12章这本书已经只有1/5了,再过4章就完结了,算是有个大概的了解的,最后一篇笔记就是最后四章了。

第十章 更多控制结构
1、unless 控制结构
在条件为假时执行 跟if 相反
也可以用unless ...else 但这种情况最好还是用if ... else

2、until 控制结构
跟while循环条件部分取反
until($j > $i){
$j *=2;
}
只是在条件为假时重复执行,而不是在条件为真的情况下执行。

3、表达式修饰符
print "$n is a negative number.\n" if $n<0;
简写的形式读起来很像英文:输出这段消息,如果$n 小于 0。
跟下面是一样的
if($n < 0){
print "$n is a negative number.\n";
}

4、The Naked Block 控制结构
裸块
{
body;
body;
body;
}

5、elsif语句
elsif,只有一个 e。

6、自增和自减
自增运算符(++)会使标量变量自动加1,这和 C 以及类似语言是一样的:
$bedrock++;  #$bedrock 的值加1;
自减运算符(--)将标量变量的值减

将++放在变量前,先将此变量增1,再取其值。这是前置++
my $m = 5;
my $n = ++$m;#$m 的值增加到6,将此值赋给$n
my $d = $m++; #$d 得到先前的值(5)然后自增到6
my $e = $m--; #$e 得到先前的值(6),再自减到5

7、for控制结构
for 循环的最常用用法是,进行重复的运算:
for($i =1; $i <=10; $i++){
print "I can count to $i;\n";
}
#从1到10

关键字 foreach 和 for 是等价的。

8、循环控制
last 操作
last 会立刻结束循环和C语言中的break类似
#输出所有出现 fred 的行,直到遇见 _ _END_ _标记
while(){
if(/_ _ END_ _/){
#这个标记之后不会有其它输入了
last;
}elsif(/fred/){
print;
}
}
##last 跳转到这里##
last 常用在最内层的循环体中,可以从中跳到外面来;

next 操作
它跳到当前循环块的最后面(块内)。next 之后,又会进入下一轮循环(这和 C 或者类似语言的 "continue"相似)

循环控制的第三个操作是 redo。它会调到当前循环块的顶端,不进行条件表达式判断以及接着本次循环。
next 和 redo 的最大区别在于,next 会进入下一次循环,而 redo 会继续执行本次循环。

9、 标签块
标签在 Perl 中就像一般标识符一样:由字母,数字,下划线组成,但不能由数字开头。
推荐标签均大写。这会防止标签和其它标识符冲突,同时也使之在代码中更突出。同时,标签很少使用,
LINE: while(<>){
oreach (split){
last LINE if /_ _END_ _/; #推出 Line 循环
…
}
}

10、 逻辑操作符
逻辑判断的逻辑与 AND(&&)和逻辑或 OR (||):

11、短路操作的值
短路操作的结果是最后被执行语句的返回值,而非仅仅是一个 Boolean 值。结果是相同的。如果最后被执行的部分为真,则整个为真;为假,则整个为假。

12、 三元操作符 ?:
三元操作有些像 if-then-else 一样,不过是在一个表达式之中。被称作“三元”操作符是因为它有三个操作数,看起来如下:
Express ? if_true_expr : if_false_expr

13、 控制结构:使用部分求值的操作符
前面三个操作符 &&, || , ?:,均有一个共同的特殊性质:根据左侧的值(true 或 false),来判断是否执行右侧代码。

第十一章 文件检验
1、文件检测操作
使用-e 选项
die "Oops! A file called '$filename' already exists.\n"
if -e $filename;

选项	含义
-r		文件或目录对此(有效的)用户(effective user)或组是可读的
-w		文件或目录对此(有效的)用户或组是可写的
-x		文件或目录对此(有效的)用户或组是可执行的
-o		文件或目录由本(有效的)用户所有
-R		文件或目录对此用户(real user)或组是可读的
-W		文件或目录对此用户或组是可写的
-X		文件或目录对此用户或组是可执行的
-O		文件或目录由本用户所有
-e		文件或目录名存在
-z		文件存在,大小为 0(目录恒为 false)
-s		文件或目录存在,大小大于 0(值为文件的大小,单位:字节)
-f		为普通文本
-d		为目录
-l		为符号链接
-S		为 socket
-p		为管道(Entry is a named pipe(a "fifo"))
-b		为 block-special 文件(如挂载磁盘)
-c		为 character-special 文件(如 I/O 设备)
-u		setuid 的文件或目录
-g		setgid 的文件或目录
-k		File or directory has the sticky bit set
-t		文件句柄为 TTY(系统函数 isatty()的返回结果;不能对文件名使用这个测试)
-T		文件有些像“文本”文件
-B		文件有些像“二进制”文件
-M		修改的时间(单位:天)
-A		访问的时间(单位:天)
-C		索引节点修改时间(单位:天)

2、 stat 和 lstat 函数
要得到文件的其余信息,可以使用 stat 函数,其返回 Unix 系统调用 stat 时相同的值
$dev 和 $ino
文件的设备号和索引节点号。
$mode
文件的权限位以及一些其它的位。
$nlink
文件或目录的(硬)连接数。
$uid 和 $gid
指文件所有权的 user ID 及 group ID。
$size
返回其大小,单位:字节,同 – 文件检测项相同。
$atime, $mtime, 及 $ctime
这三个时间,它们按照系统的时间格式:32 位
当 stat 的参数是符号连接时,其返回的信息是此符号连接指向的实体的信息,而非符号连接本身的信息,除非此符号连接所指向的内容不能被访问。
。如果需要得到(几乎是没用的)符号连接本身的信息,可以使用 lstat 代替 stat(它按照相同的顺序返回同样的值)。如果其操作数不是符号连接,则 lstat 和 stat 返回的值相同。

3、 localtime 函数
。gmtime 函数同 localtime 一样,除了其返回的形式为是世界时间(曾经被叫做格林威治时间)。如果想从系统中得到当前的时间,可使用 time 函数。localtime 和 gmtime 在默认的情况下都使用 time 的当前值,如果没提供参数:
my $now = gmtime; #得到当前的时间

4、位操作
按位与操作符(&)返回操作符左边和右边相应位操作的结果。
10 & 12 按位与;
10 | 12 按位或;
10 ^ 12按位异或;
6 << 2位左移,
25 >> 2位右移,
~10 位取反,

5、使用位串
所有的
使用特殊的下划线文件句柄

第十二章 目录操作
1、在目录树上移动
chdir改变工作目录 类似Shell的cd 命令
chdir "/etc" or die "cannot chdir to /etc: $!";

2、由于尖括号的含义可以指从文件句柄读入或 globbing,Perl 怎么判断使用哪一个操作呢?如果尖括号之间是一个严格意义
上的标识符,则其为文件句柄读入操作;否则,为 globbing 操作。如下例:
my @files = ; ##glob
my @lines = ; ##文件句柄读入
my $name = "FRED";
my @files = <$name/*> ##glob

3、目录句柄
从给定目录得到其文件名列表的方法还可以使用目录句柄(directory handle)
打开(使用 opendir 而非 open),从中读入(使用 readdir 而非 readline),关闭(使用 closedir 而非 close)
my $dir_to_process = "/etc";
opendir DH, $dir_to_process or die "Cannot open $dir_to_process: $!";
foreach $file(readdir DH) {
print "one file in $dir_to_process is $file\n";
}
closedir DH;
这些列表含有所有的文件名,包括点(.)文件,以及由点(.)开头,或点点(..)开头的文件名

readdir 操作返回的文件名没有路径名部分,而只是文件名。
得到的不是/etc/passwd 而是 passwd。

4、 递归的目录列表
 File::Find 的库,通过它你可以对递归的目录进行处理。
 
5、删除文件

在 Perl 中,我们使用 unlink:
unlink "slate","bedrock","lava"; 等价 $ rm slate bedrock lava
unlink glob "*.o";   等价  rm *.o 
返回值 如果数字为 3(个数),则它将所有的三个文件均删除了,如果为 0,则一个也没删除。

6、重命名文件
rename "old","new"; 类似Shell中的mv
甚至可以在不同的目录之间操作就跟mv的功能一样
怎样将所有的以.old 结尾的文件重名命名为以 .new 结尾的文件。
foreach my $file (glob "*.old"){
my $newfile = $file;
$newfile =~ s/\ .old$/.new/;
if (-e $newfile){
warn "can't rename $file to $newfile: $newfile exists\n";
}elsif(rename $file, $newfile){
##成功,什么也不做
} else {
warn "rename $file to $newfile failed: $!\n";
}
}

7、连接和文件
 符号连接。(也被叫做软连接(soft link),以区别于真或硬连接(hard links))是目录中的一种特殊实体
 link "chicken","egg" or warn "Can't link chicken to egg: $!"; shell 提示符后输入 ln chicken egg 的结果是差不多的。硬连接
 
 symlink "dodgson","carroll"or warn "Can't sysmlink Dodgson to carroll: $!";  shell 中使用 ln -s dodgson carroll 的结果是一样的。软连接
 可以使用 unlink 删除任意类型的连接。
 
8、 创建和删除目录
使用 mkdir 函数:
mkdir "fred",0755 or warn "Cannot make fred directory: $!";
要删除一个空的目录,按照类似于 unlink 函数的方法使用 rmdir 函数:
rmdir 在目录非空时失败。第一遍时,可以尝试使用 unlink 删除目录下的文件,其次再删除现在应当是空的目录。
my $temp_dir = "/tmp/scratch_$$"; #基于进程 ID
mkdir $temp_dir, 0700 or die "cannot create $temp_dir: $!";
#将$temp_dir 作为所有的临时文件存放的地方
unlink glob "$temp_dir/* $temp_dir/."; #将$temp_dir 里面的文件删掉
rmdir $temp_dir;  #将现在是空的目录删掉

9、修改权限
Perl 的 chomd 函数也能完成这种任务:
chmod 0755, "fred","barney";
Unix 的 chomd 命令可以使用的符号权限(如+x 或 go=u-w)对 chomd 函数是无效的 File::chmod 模块可以

10、改变所有者
my $user = 1004;
my $group = 100;
chown $user, $group, glob "*.o";

11、改变时间戳
my $now = time;
my $ago = $now -24*60*60;  #一天的秒数
utime $now, $ago, glob "*" #设成当前访问的,一天之前修改的