Как я могу получить последние две цифры номера, используя Perl? - PullRequest
3 голосов
/ 01 октября 2010

Как я могу получить значение из определенного числа?

Допустим, число равно 20040819. Я хочу получить последние две цифры, т.е. 19, используя Perl.

Ответы [ 9 ]

11 голосов
/ 01 октября 2010
my $x = 20040819;
print $x % 100, "\n";
print substr($x, -2);
4 голосов
/ 01 октября 2010

Ответ Бенуа находится на отметке, и я бы использовал его, но для того, чтобы сделать это с помощью поиска по шаблону, как вы предложили в заголовке, вы должны сделать:

my $x = 20040819;
if ($x =~ /\d*(\d{2})/)
{
    $lastTwo = $1;
}
3 голосов
/ 01 октября 2010

Я просто пойду дальше и покажу, как извлечь дату формата ГГГГММДД в ​​год, месяц и дату:

my $str = '20040819';
my ($year, $month, $date) = $str =~ /^(\d{4})(\d{2})(\d{2})$/;

Вы можете проверить defined $year и т. Д., Чтобы выяснить, сработало ли совпадение.

3 голосов
/ 01 октября 2010
substr("20040819", -2); 

или вы можете использовать Regexp :: Common :: time - регулярные выражения даты и времени, такие как

use strict;
use Regexp::Common qw(time);


my $str = '20040819' ;

if ($str =~ $RE{time}{YMD}{-keep})
{
  my $day = $4; # output 19

  #$1 the entire match

  #$2 the year

  #$3 the month

  #$4 the day
}
2 голосов
/ 01 октября 2010
my $num = 20040819;
my $i = 0;
if ($num =~ m/([0-9]{2})$/) {
    $i = $1;
}
print $i;
1 голос
/ 01 октября 2010

Другой вариант:

my $x = 20040819;
$x =~ /(\d{2})\b/;
my $last_two_digits = $1;

\b соответствует границе слова.

0 голосов
/ 14 октября 2015
$x=20040819-int(20040819/100)*100;
0 голосов
/ 10 декабря 2013

Решение для вас:

my $number = 20040819;
my ($pick) = $number =~ m/(\d{2})$/;
print "$pick\n";
0 голосов
/ 01 октября 2010

Еще одно решение:

my $number = '20040819';
my @digits = split //, $number;
print join('', splice @digits, -2, 2);
...