Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: dumper hash incorrect?

by Corion (Patriarch)
on Oct 19, 2021 at 13:54 UTC ( [id://11137726]=note: print w/replies, xml ) Need Help??


in reply to dumper hash incorrect?

You have carriage return whitespace at the end of your input, most likely because your input file is formatted with "Windows" newlines, that is \r\n.

Data::Dumper will show you that whitespace when you set $Data::Dumper::Useqq = 1.

Personally, I like to, instead of chomp, use s!\s+$!!, to remove all kinds of whitespace at the end of input lines.

Replies are listed 'Best First'.
Re^2: dumper hash incorrect?
by BillKSmith (Monsignor) on Oct 19, 2021 at 17:47 UTC
    If the file is known to have Windows line separators, I prefer to read it same way that windows does (use the :crlf IO-layer) and process it as a normal file rather than use a DIY solution.
    use strict; use warnings; use Autodie; use Data::Dumper; my $file = \do{ "Jay|Jay\@email|puppy|123 Street|Shirley\r\n" ."Travis|Travis\@email|puppy|456 Street|Emmy\r\n" ."Trisha|Trisha\@email|baby|789 Street|Eddie\r\n" ."Eddie|Eddie\@email|puppy|789 Street|Trisha\r\n" ."Shirley|Shirley\@email|baby|123 Street|Jay\r\n" }; open my $fh, '<:crlf', $file ; my @name_lines = <$fh>; my %spouses; my %people; foreach my $line ( @name_lines ) { chomp($line) ; my @data = split '\|' , $line ; #map { $_ =~ s/[^a-zA-Z0-9_\@\. ]//g } @data ; #print Dumper \@data ; my ( $name , $email , $wishlist , $address , $spouse_name ) = +@data ; $people{$name}{email} = $email ; $people{$name}{wishlist} = $wishlist ; $people{$name}{address} = $address ; $people{$name}{spouse} = $spouse_name ; #if ( $spouse_name ne '' ) { if ( defined $spouse_name and $spouse_name ne '' ) { $spouses{$name} = $spouse_name ; } } print Dumper \%spouses ;

    RESULT:

    $VAR1 = { 'Shirley' => 'Jay', 'Jay' => 'Shirley', 'Eddie' => 'Trisha', 'Trisha' => 'Eddie', 'Travis' => 'Emmy' };
    Bill

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11137726]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (5)
As of 2024-04-23 16:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found