我有一个包含一堆 html 文件的文件夹,我想添加一个
<h1>Filename without extension</h1>
标签后面的行<body>
。
我怎样才能写出一个脚本或一句话来
- 浏览文件夹中的每个文件
- 根据文件名创建 H1 标签,但不包含扩展名(例如:文件名为
foobar.html
received行<h1>foobar</h1>
后有一行<body>
- 覆盖文件
?
答案1
下面是一个可以完成这个工作的小型 perl 脚本:
#!/usr/bin/perl
use strict;
use warnings;
# Retrieve all html files in an array
my @files = glob '*.html';
# "slurp" mode
undef $/;
# loop over all files
for my $file(@files) {
# open file in read mode
open my $fhi, '<', $file or die "Can't open '$file' for reading: $!";
# retrieve content in a single string
my $content = <$fhi>;
close $fhi;
# remove extension
(my $without_ext = $file) =~ s/\.[^.]+$//; #/this is a comment for syntaxic color!
# add h1 tag with filename
$content =~ s~<body[^>]*>~$&\n<h1>$without_ext</h1>~s;
# open same file in write mode
open my $fho, '>', $file or die "Can't open '$file' for writing: $!";
# write the modified string in the file
print $fho $content;
}