Необходимо сделать несколько отдельных переменных из строки - PullRequest
0 голосов
/ 02 мая 2020

Как получить три отдельные переменные из строки? my $ string = '2019-08-20'; my ($ year, $ month, $ day);

Ответы [ 3 ]

1 голос
/ 03 мая 2020

Как уже отмечали другие, вы можете использовать split(), чтобы делать то, что вы просите. Но мне интересно, действительно ли то, что вы просите, является лучшим подходом.

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

use Time::Piece;

my $date = Time::Piece->strptime('2019-08-20');

Затем вы можете получить отдельные элементы, которые вы хотите;

say $date->year;
say $date->mon;
say $date->mday;

Но вы также можете получить другие потенциально полезные вещи:

say $date->month; # August
say $date->day;   # Tuesday

Или вы можете использовать strftime() для переформатирования даты:

say $date->strftime('%A, %d %B %Y'); # Monday, 20 August 2019

С помощью Time :: Piece * 1018 вы можете сделать гораздо больше *.

1 голос
/ 02 мая 2020
my  $string = '2019-08-20';
my ($year, $month, $day) = $string =~ /^(\d{4})-(\d{2})-(\d{2})$/;

if( defined($day) ) {
  print ("$year $month $day\n");
}else{
  print "no match\n";
}

~

0 голосов
/ 03 мая 2020

Вы можете использовать функцию split, чтобы получить три значения из входа. Как уже упоминалось в комментарии икегами

my $str = '2019-08-20';

my ($year, $month, $day) = split /-/, $str;

print "$year\n$month\n$day\n";

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...