Проблема конкатенации строк - PullRequest
3 голосов
/ 11 апреля 2010

Не могли бы вы взглянуть на мой код ниже.

#!C:\Perl\bin\perl.exe 
use strict; 
use warnings; 
use Data::Dumper;  

my $fh = \*DATA;  
my $str1 = "listBox1.Items.Add(\"";
my $str2 = "\")\;";

while(my $line = <$fh>)
{
    $line=~s/^\s+//g;

    print $str1.$line.$str2;

    chomp($line);

}


__DATA__  
Hello
 World

Выход:

D:\learning\perl>test.pl
listBox1.Items.Add("Hello
");listBox1.Items.Add("World
");
D:\learning\perl>

Ошибка стиля. Я хочу стиль ниже. Что-то не так с моим кодом? спасибо.

D:\learning\perl>test.pl
listBox1.Items.Add("Hello");
listBox1.Items.Add("World");
D:\learning\perl>

Ответы [ 2 ]

2 голосов
/ 11 апреля 2010

Подумайте о порядке, между принтом и чомпом;)

2 голосов
/ 11 апреля 2010

Строка, читаемая в $line, имеет в конце newline char. Вам нужно использовать chomp, чтобы избавиться от него. У вас есть код в вашем коде, но он неуместен. Переместите его в начало цикла как:

while(my $line = <$fh>)
{
    chomp($line);                 # remove the trailing newline.
    $line=~s/^\s+//g;             # remove the leading white space.
    print $str1.$line.$str2."\n"; # append a newline at the end.
}

EDIT:

Ответ на вопрос в комментарии:

Чтобы удалить начальный пробел в строке:

$str =~s/^\s+//;

Чтобы удалить конечный (конец) пробел в строке:

$str =~s/\s+$//;

Для удаления начальных и конечных пробелов в строке:

$str =~s/^\s+|\s+$//g;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...