Code which i have tried for single file:
#!/usr/bin/perl
use strict;
use warnings;
open my $HTML, '>', 'h.html' or die $!;
print $HTML <<'_END_HEADER_';
<html>
<head><title></title></head>
<body>
_END_HEADER_
open my $IN, '<', 'h.txt' or die $!;
while (my $line = <$IN>) {
# You probably want to do more work here.
print $HTML $line;
}
print $HTML '</body></html>';
close $HTML or die $!;
查询:
上面的代码将.txt转换为.html文件格式。在这段代码中,我试过单个文件。我怎么能用perl对文件夹中的多个文件做什么?
输入文件:
h.txt
e.txt
l.txt
预期输出;(使用html formt)
h.html
e.html
l.html
答案 0 :(得分:1)
试试glob。它返回所提到目录的文件名列表。
#!/usr/bin/perl
use strict;
use warnings;
open my $HTML, '>', 'h.html' or die $!;
print $HTML <<'_END_HEADER_';
<html>
<head><title></title></head>
<body>
_END_HEADER_
while (my $file= glob("~/Desktop/*.txt"))
{
open my $IN, '<', $file or die $!;
while (my $line = <$IN>)
{
print $HTML $line;
}
}
print $HTML '</body></html>';
close $HTML or die $!;
写入新文件
#!/usr/bin/perl
use strict;
use warnings;
my $HTML;
#open my $HTML, '>', 'h.html' or die $!;
while (my $file= glob("~/Desktop/*.txt"))
{
open my $IN, '<', $file or die $!;
my $new_file_name = $file;
$new_file_name=~s/.+\///;
open $HTML, '>', "$new_file_name.html" or die $!;
print $HTML "
<html>
<head><title></title></head>
<body>";
while (my $line = <$IN>)
{
print $HTML $line;
}
print $HTML '</body></html>';
close $HTML;
}