为了账号安全,请及时绑定邮箱和手机立即绑定

perl -- 在连接末尾添加双引号和直角括号

perl -- 在连接末尾添加双引号和直角括号

BIG阳 2023-10-24 20:47:01
#!/usr/bin/perl -w# prints dir list of .jpg filenames to screen# and adds HTML markup for flexboxuse strict;use warnings;use Text::Autoformat;my $file;my $nfilename;my $first = '<img src="';my $last = '" style="width:100%"> ';my $title = 'title = "';my $estr = '">';my $dir = "/home/clair/cp-perl/";my $mylist;opendir(DIR, $dir) or die $!;while ($file = readdir(DIR)) {# Use a regular expression to ignore files beginning with a periodnext if ($file =~ m/^\./);next if (substr $file, -1) ne "g";#***************************************# get rid of extension and replace hyphen with space   $nfilename=$file;$nfilename=~s/.jpg//;$nfilename =~ s/-/ /g;# ****************************************#capitalizewords in filename to be a titlemy $formatted = autoformat $nfilename, { case => 'highlight' };chomp($nfilename);# ****************************************$mylist = join("",$first, $file, $last, $title, $nfilename, $estr);# ************************* # thanks to George Mavridis - stackoverflow$mylist =~ s/[\r\n]+//;$mylist .="\n";# *************************print $mylist;}closedir(DIR);exit 0;这是我现在得到的前 3 行输出:<pre><img src="out-of-the-night.jpg" style="width:100%"> title = "Out of the Night"><img src="homage-to-borgeson.jpg" style="width:100%"> title = "Homage to Borgeson"><img src="autumn-in-vermont.jpg" style="width:100%"> title = "Autumn in Vermont</pre>前两个字符应该位于行的末尾,如下所示:<pre><img src="out-of-the-night-sm.jpg" style="width:100%"> title = "Out of the Night"><img src="homage-to-borgeson.jpg" style="width:100%"> title = "Homage to Borgeson"><img src="autumn-in-vermont-sm.jpg" style="width:100%"> title = "Autumn in Vermont"></pre>这是连接线:$mylist = join("",$first, $file, $last, $title, $nfilename, $estr);print $mylist;这是 $estr 声明: my $estr = '">'; 我已经尝试了无数版本——这只是当前的一个。我想知道如何使这两个字符显示在行的末尾而不是下一行的开头。我在这件事上花了几个小时,前天还花了两个小时试图让论坛接受我的问题。
查看完整描述

3 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

中的字符串$nfilename显然以换行符结尾。您是否从文件中读取了一行并保留了换行符?chomp可用于从变量中删除尾随换行符。



查看完整回答
反对 回复 2023-10-24
?
莫回无

TA贡献1865条经验 获得超7个赞

有数百种方法可以解决这个问题,其中之一是:

您的示例中的 $mylist (打印之前)包含:

<img src="out-of-the-night.jpg" style="width:100%"> title = "Out of the Night
">

删除中间的换行符,并将其添加到字符串的末尾

$mylist =~ s/[\r\n]+//;
$mylist .="\n";

会解决这个问题。

顺便说一句: $last 末尾的 '> "' 似乎也是错误的。


查看完整回答
反对 回复 2023-10-24
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

请看看您是否发现以下代码有用。


它在本地目录中查找 JPG 文件并生成网页


use strict;

use warnings;

use feature 'say';


my $dir = '.';

my @files;


push @files, $_ while glob('*.jpg');


my $title = 'Pictures in JPEG format';

my $space = "\n\t\t\t";

my $style = 'width:100%';


my $html  = '

<html>

    <head>

        <title>$title</title>

    </head>

    <body>';


for (@files) {

    /(.*?)\.jpg/;

    my $title = $1;

    $title =~ s/[-_]/ /g;

    $html .= "$space title = \"\u$title\"";

    $html .= "$space<img src=\"$_\" style=\"$style\">";

}


$html .= '

    </body>

</html>';


say $html;

输出


<html>

        <head>

                <title>Pictures in JPEG format</title>

        </head>

        <body>

                         title = "File 08"

                        <img src="file-08.jpg" style="width:100%">

                         title = "File 09"

                        <img src="file-09.jpg" style="width:100%">

                         title = "File 01"

                        <img src="file_01.jpg" style="width:100%">

                         title = "File 02"

                        <img src="file_02.jpg" style="width:100%">

                         title = "File 03"

                        <img src="file_03.jpg" style="width:100%">

        </body>

</html>


查看完整回答
反对 回复 2023-10-24
  • 3 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信