On Wed, 22 May 2002, Chris Angell wrote:

> Everyone,
> 
> Please correct me if I am emailing the wrong address/list.  Thanks.

Well, in general, you are mailing the wrong list; however, we do know a 
lot of perl 5, so you'll get your question answered :)  (This is the Perl 
6 list, used for discussing design and features of the new version of 
Perl)

> I have an idea for the int() function.  I think it would be cool if it
> returned false/undefined when the argument passed to it is a whole number.
> For example:
> 
> int(1) or print "argument passed to int() is something other than a
> decimal number";
> 
> A friend came up with this:
> 
> sub myint { return if $_[0] =~ /\A\d+\z/; $_[0] =~ /^(\d+)/ ? $1 : 0 }
> 
> What do you guys think?

That or:

sub myint($) { int $_[0] == $_[0] ? $_[0] : int $_[0] }

That way you don't have the string conversion or the regex match using up 
your processor time. It could be made more efficient:

sub myint($) { my $i = int $_[0]; $i == $_[0] ? $_[0] : $i }


Since this is a Perl 6 list, here's how you would do it in Perl 6 (unless 
there's a better way):

sub myint($x) { my $i = int $x; $i == $x ? $x : $i }


Luke

Reply via email to