Решения regex, которые вы получили, вероятно, являются наилучшим подходом, но также возможно сделать это с split()
и join()
.
# You need this to use 'say()'
use feature 'say';
while (<DATA>) {
chomp;
say join '-', (split /-/)[0, 1];
}
__DATA__
10-9-1
10-9
(split /-/)[0, 1]
принимает список, возвращенный изsplit()
и дает вам первые два элемента списка.