perl - добавить двойную кавычку и правую угловую скобку в конце соединения - PullRequest
0 голосов
/ 01 апреля 2020
#!/usr/bin/perl -w
# prints dir list of .jpg filenames to screen
# and adds HTML markup for flexbox

use 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 period
next 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 title

my $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 строки вывода, которые я получаю сейчас:

<code><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

Эти первые два символа должны быть в КОНЦЕ строк, как это :

<code><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">

вот строка соединения:

$mylist = join("",$first, $file, $last, $title, $nfilename, $estr);
print $mylist;

Это объявление $ estr: my $ estr = '">'; я пробовал Неисчислимая версия этого - это только текущая версия.

Я хочу знать, как сделать так, чтобы эти два символа отображались в конце строки, а не в начале следующей строки.

Я работал часами над этим, а также два часа позавчера, пытаясь заставить форум принять мой вопрос.

Большое спасибо за любую помощь. Клер

Ответы [ 3 ]

2 голосов
/ 01 апреля 2020

Строка в $nfilename, очевидно, заканчивается переводом строки. Вы прочитали строку из файла и оставили перевод строки? chomp может использоваться для удаления перевода строки в трейлинге.

0 голосов
/ 01 апреля 2020

Пожалуйста, посмотрите, нашли ли вы применение для следующего кода.

Он ищет файлы 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>
0 голосов
/ 01 апреля 2020

Существуют сотни способов решения этой проблемы, один из них:

$ mylist (перед печатью) в вашем примере содержит:

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

удаление перевода строки между и добавление его в конец строки

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

исправит это.

Кстати: '> "' в конце $ last также кажется неправильным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...