Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re: dumper hash incorrect?

by Corion (Patriarch)
on Oct 19, 2021 at 13:54 UTC ( #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 ;


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

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (2)
As of 2023-02-09 05:30 GMT
Find Nodes?
    Voting Booth?
    I prefer not to run the latest version of Perl because:

    Results (44 votes). Check out past polls.