Если бы <loner>
элемент в Вашем демонстрационном XML не имел xmlns
объявление пространства имен по умолчанию по нему, то это было бы в whatever:name-space-1.0
пространство имен вместо того, чтобы не находиться ни в каком пространстве имен. Если это - то, что Вы хотите, необходимо создать элемент в том пространстве имен:
xml.CreateElement("loner", "whatever:name-space-1.0")
, Если Вы хотите <loner>
элемент не быть ни в каком пространстве имен, тогда XML, это было произведено, точно, в чем Вы нуждаетесь, и Вы не должны волноваться об эти xmlns
атрибут, это было добавлено автоматически для Вас.
Начиная с версии 5.10 существует оператор //
, который семантически эквивалентен, если вы считаете, что концепция undef
в Perl эквивалентна концепция null
в C #.
Пример A:
my $a = undef;
my $b = $a // 5; # $b = 5;
Пример B:
my $a = 0;
my $b = $a // 5; # $b = 0;
Фактически, оператор короткого замыкания ИЛИ также будет работать при вычислении undef:
my $b = undef || 5; # $b = 5;
Однако он завершится ошибкой при вычислении 0, но истинно:
my $b = 0 || 5; # $b = 5;
Я не знаю об этом.
На самом деле Perl не является большим пользователем концепции null. У него есть проверка, не определена ли переменная. Нет специального оператора вроде ?? хотя, но вы можете использовать условный оператор?: с тестом undef и подойти довольно близко.