Различия в поведении в Perl? - PullRequest
2 голосов
/ 08 апреля 2011

Я установил активный Perl той же версии на Windows XP и Windows 7.

Я обнаружил, что в Windows XP и Ubuntu Split вернут пустые элементы массива, но в Windows 7 - нет. Например:

my @array;
my $item = "test,,,,";
@array = split(/,/,$item);
print $#array;

напечатает 4, и массив будет иметь 3 пустых элемента, но в Windows 7 он всегда печатает 0 и имеет только 1 элемент. Кто-нибудь знает, почему это происходит и что я должен использовать, чтобы сделать Perl-скрипт более переносимым?

1 Ответ

2 голосов
/ 08 апреля 2011

В соответствии с документацией split версия Windows 7 верна:

По умолчанию пустые начальные поля сохраняются, а пустые конечные поля удаляются.(Если все поля пусты, они считаются завершающими.)

Так что, если вы разделите, например, ",,,test,,,,", тогда ваш пример должен вывести 3.(Проверено с 5.10.1 на Ubuntu 10.04.)

...