Hi,

I am not getting the results that I expect from this test and I am not
sure why. If I run the script below I get:

1..3
Line=???/FOO BAR, Name=Joe Smo M="???"
ok 1 - handle_name ???/FOO BAR
Line=change accordingly /FOO BAR, Name=Foo bar M="change"
ok 2 - handle_name change accordingly /FOO BAR
Line=GEOF KID/FOO BAR, Name=Geoff Kidd M=""
Use of uninitialized value in concatenation (.) or string at
credit_handle.t line 33.
not ok 3 - handle_name GEOF KID/FOO BAR
#   Failed test 'handle_name GEOF KID/FOO BAR'
#   at credit_handle.t line 16.
# Looks like you failed 1 test of 3.


The 'GOOF KID' entry is not getting handled correctly (or rather as I
want). It is being processed within the initial if() block. It was my
understanding that a failed match would mean control would fall to the
else statement. If I uncomment the 2 lines below, I can make it would
but I suspect there is something I am not seeing here. I have used
this construct a lot in the past and it's been fine.

Any thoughts?
Thanx,
Dp.



----------- handle_name.t ----------
use strict;
use warnings;
use Test::More tests => 3;

my %tests = (
        'FOO BAR/FOO BAR'       => ['change accordingly /FOO BAR', 'Foo bar'],
        'JOE SMO/FOO BAR'               => ['???/FOO BAR',' Joe Smo'],
        'GOOF KID/FOO BAR'      => ['GOOF KID/FOO BAR', 'Gooff Kid' ],
        );

foreach my $test (keys %tests) {
        my $got = handle_name($tests{$test});
        ok( $got eq $test, "handle_name ${$tests{$test}}[0]");          
}

sub handle_name {
  my $arryref = shift;
  my ($line, $name) = ($arryref->[0], $arryref->[1]);
  $name =~ s/^\s+//;
  $name =~ s/\s+$//;
  my $regex = qr/^(change|\?*)/i;
#  $line =~ /$regex/;
#  if ($&)  {
  if ($line =~ /$regex/ ) {
        print STDERR "Line=$line, Name=$name M=\"$&\"\n";
        my ($nil, $rest) = ($line =~ /^(change\s+\w+\s?|\?*)(\/.*)/);
        return(uc($name).$rest);
  }
  else {
        return $line;
 }
}
--------------------------------------------

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to