[Omaha.pm] Module refuses to return a value

Mike Hostetler hostetlerm at gmail.com
Mon Dec 4 11:35:17 PST 2006


I've written my very first Perl module to simplify some of my Excel
tasks (don't ask.  No, really) .

My module looks something like this:

package ExcelUtil;

use strict;
use vars qw($VERSION);
$VERSION='0.5';

sub getCellByValue {
  my ($sheet,$rangeName,$value) = @_;

  ## if the range name ends in :, then select the whole row!
  ## yes, I made this up myself
  if ($rangeName=~m/(\d+):$/) {
    my $row = $1;
    $rangeName = "A$row:AG$row";
  }

  my $range = $sheet->Range($rangeName);

  foreach my $cell (in $range) {
    if ($cell->{'Text'} eq $value) {
      print $cell->{"Text"}."\n";
      return $cell;
    }
  }
  return 0;
}

1;

The print statement is there to tell us the value before it's returned.

I'm calling is like this:

my $cell = ExcelUtil::getCellByValue($Sheet,"A2:A32",$cellDate);
print $cell->{'Text'}."\n";

And this is my output:

12/04/2006
Use of uninitialized value in concatenation (.) or string at tfireport.pls line
182.

12/04/2006 is the correct value that I'm looking for, so the
subroutine is finding the right value, but stubbornly refuses to give
me a value back.

If I put the getCellByValue sub in my script than everything is fine.
So I'm missing something in my module.  Anyone wish to bring me to
enlightenment?


-- 
Mike Hostetler
http://mike.hostetlerhome.com/


More information about the Omaha-pm mailing list