| PPI documentation | Contained in the PPI distribution. |
PPI::Token::Number::Octal - Token class for a binary number
$n = 0777; # octal integer
PPI::Token::Number::Octal
isa PPI::Token::Number
isa PPI::Token
isa PPI::Element
The PPI::Token::Number::Octal class is used for tokens that
represent base-8 numbers.
Returns the base for the number: 8.
Return the numeric value of this token.
See the support section in the main module.
Chris Dolan <cdolan@cpan.org>
Copyright 2006 Chris Dolan.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included with this module.
| PPI documentation | Contained in the PPI distribution. |
package PPI::Token::Number::Octal;
use strict; use PPI::Token::Number (); use vars qw{$VERSION @ISA}; BEGIN { $VERSION = '1.215'; @ISA = 'PPI::Token::Number'; }
sub base () { 8 }
sub literal { my $self = shift; return if $self->{_error}; my $str = $self->_literal; my $neg = $str =~ s/^\-//; my $val = oct $str; return $neg ? -$val : $val; } ##################################################################### # Tokenizer Methods sub __TOKENIZER__on_char { my $class = shift; my $t = shift; my $char = substr( $t->{line}, $t->{line_cursor}, 1 ); # Allow underscores straight through return 1 if $char eq '_'; if ( $char =~ /\d/ ) { # You cannot have 8s and 9s on octals if ( $char eq '8' or $char eq '9' ) { $t->{token}->{_error} = "Illegal character in octal number '$char'"; } return 1; } # Doesn't fit a special case, or is after the end of the token # End of token. $t->_finalize_token->__TOKENIZER__on_char( $t ); } 1;