[спасибо, помогли] Вопрос к знающим Perl
$text =~ s/^.*?\{//is;
$text =~ s/\}.*$//is;
my @array = split(",", $text);
Хотя я тоже в перле не очень и это вполне себе индийский код
![](/images/graemlins/grin.gif)
$text =~ s/^.*?{//is; $text =~ s/}.*$//is; my @array = split(",", $text
![](/images/graemlins/shocked.gif)
спасибо
![](/images/graemlins/smile.gif)
я чуть подправил - сначала скобки не заслешил
$a = "{3,4,5,6,7}";
if($a =~ /\{(.*?)\}/){
$a = $1;
print $a, "\n";
@a = split(/\,/, $a);
}
else{
@a = ;
}
foreach(@a){
print;
print "\n";
}
![](/images/graemlins/smile.gif)
$a =~ /\{(.*?)\}/ ;я ж говорю - у меня код индийский
$a = $1;
$a =~ /\{(.*?)\}/ ;Я не против.
$a = $1;
А если строка не соотв. твоему шаблону?
такого в условии не было
@arr = map{s/[\{\}]//g;$_}split(/,/, "{3,4,5,6,7}");
foreach(@a){Это тоже в одну строчку пишется:
print;
print "\n";
}
print join "\n", @a;
if($a =~ /\{(.*?)\}/){И это пишется в одну строку:
$a = $1;
print $a, "\n";
@a = split(/\,/, $a);
}
else{
@a = ;
}
@a = ($a =~ /\{(.*?)\}/) ? split(/,/, $1) : ;
$a = "{3,4,5,6,7}";Итого, твоя программа превращается в 3 строчки:
if($a =~ /\{(.*?)\}/){
$a = $1;
print $a, "\n";
@a = split(/\,/, $a);
}
else{
@a = ;
}
foreach(@a){
print;
print "\n";
}
$a = "{3,4,5,6,7}";
@a = ($a =~ /\{(.*?)\}/) ? split(/,/, $1) : ;
print join "\n", @a;
Оставить комментарий
mazamaza2008
Есть строка вида "{1,2,3,4,5}"Как ее преобразовать в массив @a : @a[0] = 1, @a[1] = 2, ... ?
То есть надо убрать символы "{" и "}", а потом список чисел через запятую как-то преобразовать в массив. Я подозреваю, что в перле это можно как-то очень легко сделать, но не могу найти.
Надо очень срочно сделать, к сожалению некогда разбираться
Спасибо!