如何使用perl将多个文本文件转换为具有.html文件格式的相同文件名?

时间:2017-02-13 04:19:45

标签: perl

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

1 个答案:

答案 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;
}