@volumes = sort {($a =~ /(\d+)/)[0] <=> ($b =~ /(\d+)/)[0]} @volumes;
Argument "1 \x{43d}\x{430}\x{431}\x{43e}\x{440}" isn't numeric in sort at ./qq.pl line 10.
Argument "1 \x{448}\x{442}" isn't numeric in sort at ./qq.pl line 10.
Argument "118 \x{43c}\x{43b}" isn't numeric in sort at ./qq.pl line 10.
Argument "148 \x{43c}\x{43b}" isn't numeric in sort at ./qq.pl line 10.
Argument "15 \x{433}" isn't numeric in sort at ./qq.pl line 10.
Argument "15 \x{43c}\x{43b}" isn't numeric in sort at ./qq.pl line 10.
Argument "150 \x{433}" isn't numeric in sort at ./qq.pl line 10.
Argument "150 \x{43c}\x{43b}" isn't numeric in sort at ./qq.pl line 10.
Argument "167 \x{43c}\x{43b}" isn't numeric in sort at ./qq.pl line 10.
Argument "177 \x{43c}\x{43b}" isn't numeric in sort at ./qq.pl line 10.
Argument "207 \x{43c}\x{43b}" isn't numeric in sort at ./qq.pl line 10.
Argument "266 \x{43c}\x{43b}" isn't numeric in sort at ./qq.pl line 10.
Argument "284 \x{43c}\x{43b}" isn't numeric in sort at ./qq.pl line 10.
Argument "340 \x{43c}\x{43b}" isn't numeric in sort at ./qq.pl line 10.
Argument "350 \x{43c}\x{43b}" isn't numeric in sort at ./qq.pl line 10.
Argument "355 \x{43c}\x{43b}" isn't numeric in sort at ./qq.pl line 10.
Argument "360 \x{43c}\x{43b}" isn't numeric in sort at ./qq.pl line 10.
Argument "54 \x{43c}\x{43b}" isn't numeric in sort at ./qq.pl line 10.
Argument "67 \x{43c}\x{43b}" isn't numeric in sort at ./qq.pl line 10.
Argument "89 \x{43c}\x{43b}" isn't numeric in sort at ./qq.pl line 10.
1 набор 1 шт 15 г 15 мл 54 мл 67 мл 89 мл 118 мл 148 мл 150 г 150 мл 167 мл 177 мл 207 мл 266 мл 284 мл 340 мл 350 мл 355 мл 360 мл
$a cmp $b
цифровая $b <=> $a
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use open qw/:std :utf8/;
my @volumes = ('1 набор', '1 шт', '118 мл', '148 мл', '15 г', '15 мл', '150 г', '150 мл', '167 мл', '177 мл', '207 мл', '266 мл', '284 мл', '340 мл', '350 мл', '355 мл', '360 мл', '54 мл', '67 мл', '89 мл');
@volumes = sort {$a <=> $b} @volumes;
foreach my $volume (@volumes) {print $volume.' '; }