Nano HE
Nano HE

Reputation: 9307

String Concatenation Issue

Could you please have a look at my code below.

#!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

Output:

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

Style error. I want the style below. Is ther anything wrong about my code? thanks.

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

Upvotes: 3

Views: 2740

Answers (2)

codaddict
codaddict

Reputation: 455020

The line read in $line has a trailing newline char. You need to use chomp to get rid of it. You have chomp in your code, but its misplaced. Move it to the start of the loop as:

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:

Answer to the question in the comment:

To remove the leading whitespace in a string:

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

To remove the trailing(ending) whitespace in a string:

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

To remove the leading and trailing whitespace in a string:

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

Upvotes: 2

vimma
vimma

Reputation: 31

Think about the order, between print and chomp ;)

Upvotes: 2

Related Questions