在日常的网页ref="/tag/156/" style="color:#479099;font-weight:bold;">开发中,很多人以为Perl已经过时,但在一些后台脚本和自动化任务里,它依然发挥着作用。尤其是在处理服务器日志、配置文件或批量修改HTML模板时,Perl的文件操作能力相当趁手。
打开和读取文件
最常见的需求是从一个文本文件中读取内容,比如读取浏览器生成的日志片段进行分析。使用open函数就能轻松实现:
open(my $fh, '<', 'access.log') or die "无法打开文件: $!";
while (my $line = <$fh>) {
chomp $line;
print "处理行: $line\n";
}
close($fh);
这段代码打开了名为access.log的文件,逐行读取并输出。chomp用来去掉换行符,避免格式错乱。
写入和覆盖文件
假设你写了一个小工具,用来提取Chrome调试日志中的关键请求URL,想把结果保存成新的文件,可以用写入模式:
open(my $out, '>', 'urls.txt') or die "无法创建文件: $!";
print $out "https://example.com/page1\n";
print $out "https://example.com/page2\n";
close($out);
注意这里的'>'表示覆盖写入。如果想追加内容,换成'>>'即可。
批量重命名HTML文件
有时候前端构建出了一堆老命名规则的页面,比如page_1.html到page_10.html,你想统一改成article-1.html这样的格式,用Perl几行就搞定:
for my $i (1..10) {
my $old = "page_$i.html";
my $new = "article-$i.html";
if (-e $old) {
rename($old, $new);
print "已重命名 $old 为 $new\n";
}
}
其中-e用来判断文件是否存在,避免报错。
读取整个文件到字符串
有时需要把整个HTML模板一次性加载进来做替换,比如动态插入CDN地址。可以借助local操作临时修改输入记录分隔符:
open(my $fh, '<', 'template.html') or die "无法打开: $!";
local $/;
my $content = <$fh>;
close($fh);
$content =~ s/{{cdn_url}}/https:\/\/static.example.com/g;
这里$/是输入记录分隔符,默认是换行符,设为空后<$fh>会一次性读完整个文件。
这些操作看似简单,但在实际项目中能省下大量手动处理的时间。特别是配合正则表达式,Perl处理文本的能力依然在线。