in reply to Re: Deleting undefined entries from DB_FILE hash
in thread Deleting undefined entries from DB_FILE hash

It just seemed like there was _something_ in that position in the database for it to return the undefined value.

I thought the issue was that split was being run against a string with null values among the tab delimiter or the entry was somehow otherwise incomplete, leading to the "Use of uninitialized value in split at ./list_hash.pl line 74." that I receive if I remove the prior checks and try and split the string anyway.

It loks like you've used all different constructs, and I'm not familar with the abstraction your using. It's beyond my level of perl understanding, unfortunately.

Thanks,
Alex
  • Comment on Re^2: Deleting undefined entries from DB_FILE hash

Replies are listed 'Best First'.
Re^3: Deleting undefined entries from DB_FILE hash
by 2teez (Vicar) on Jul 23, 2012 at 03:19 UTC

    If then you suspect split function, then check what you are getting for each split "action" ( using print ), before assigning them to other variables. like so:

    print join "\n",split /\t/, $hash{$key}, 7;
    See if you have 7 seperate values. If not, then one can say try "\s+" in the split function, instead of the "\t" like so:
    print join "\n",split /\s+/, $hash{$key}, 7;
    If that works, then :-)! You got it!!!

      I've added the following:

      print "\n------------\n"; print join "\n",split /\t/, $hash{$key}, 7;

      This has produced the following output:

      ------------ spam 20120625T115711 14359 Time Attendance Software <rasputin@gustyhelp.info> drape@gustyhelp.info Track employee time and attendance 11.034 ------------ spam 20120627T054428 119032 "CriminalJustice Education" <CollegePrograms@birdddeals.com> CollegePrograms@birdddeals.com Succeed in a Criminal Justice program

      ========

      It may not be clear from the second example, but it only has six fields, where the seventh is blank. It is that condition I'm trying to manage with split and keep it from choking.

      It looks like the last value is null, which must be the type of thing that's choking the split from my example.

      When the database was written, it appears undef'd values were used in some fields where there was no data available.

      Is there another way to split the tab-delimited line other than split() that won't choke?