You're right, I am passing a numeric value to the function and encountering
the error.
I used the function provided by you and it's working fine.

Thanks
Ankur Jain

On Dec 4, 2007 8:27 PM, Rob Dixon <[EMAIL PROTECTED]> wrote:

> Ankur wrote:
> >
> > I am running the following code and receiving the warning :
> >
> > Use of uninitialized value in pattern match (m//) at a.pl line 15.
> >
> >
> > a.pl :
> > /
> >
> **************************************************************************************/
> > sub CommaFormatted{
> >         my $delimiter = ','; # replace comma if desired
> >         my($n,$d) = split /\./,shift,2;
> >         my @a = ();
> >         while($n =~ /\d\d\d\d/)
> >         {
> >                 $n =~ s/(\d\d\d)$//;
> >                 unshift @a,$1;
> >         }
> >         unshift @a,$n;
> >         $n = join $delimiter,@a;
> >         $n = "$n\.$d" if $d =~ /\d/;
> >         return $n;
> > }
> >
> >
> > print CommaFormatted(10000);
> >
> > /
> >
> **************************************************************************************/
> >
> >
> > Please help.
>
> Hi Ankur.
>
> As has been explained, the line
>
>   my($n,$d) = split /\./,shift,2;
>
> splits the string into a maximum of two pieces at the first full-stop
> character. Because there is no such character in the target string
> there is no second piece, and the value of $d is undefined. The warning
> is generated when you try to use it in a pattern match at line 15.
>
> To get around this you could change the statement to
>
>   $n = "$n.$d" if $d and $d =~ /\d/;
>
> (there is also no need to escape the full-stop in a simple quoted
> string: it is only a special character in regular expressions.)
>
> You may prefer the the subroutine below which does this job more
> concisely.
>
> HTH,
>
> Rob
>
>
> sub CommaFormatted {
>
>   my $delimiter = ',';
>
>   my $n = shift;
>
>   while (1) {
>     last unless $n =~ s/^(\d+)(\d\d\d)/$1$delimiter$2/;
>   }
>
>   return $n;
> }
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> http://learn.perl.org/
>
>
>


-- 
Regards
Ankur Jain

http://ankurjain.org

Reply via email to