<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Проверка: определена ли переменная?</title>
    <link>https://opennet.dev/openforum/vsluhforumID9/9215.html</link>
    <description>Добрый день.&lt;br&gt;&lt;br&gt;Есть скрипт:&lt;br&gt;&lt;br&gt;#!/usr/bin/perl&lt;br&gt;&lt;br&gt;use utf8;&lt;br&gt;use warnings;&lt;br&gt;use strict;&lt;br&gt;&lt;br&gt;my $var1;&lt;br&gt;my $var2 = &quot;0&quot;;&lt;br&gt;my $var3 = 0;&lt;br&gt;my $var4 = &quot;a&quot;;&lt;br&gt;&lt;br&gt;print isDef($var1).&quot;&#092;n&quot;;&lt;br&gt;print isDef($var2).&quot;&#092;n&quot;;&lt;br&gt;print isDef($var3).&quot;&#092;n&quot;;&lt;br&gt;print isDef($var4).&quot;&#092;n&quot;;&lt;br&gt;&lt;br&gt;sub isDef &#123;&lt;br&gt;  if (shift) &#123;&lt;br&gt;    return &quot;true&quot;;&lt;br&gt;  &#125; else &#123;&lt;br&gt;    return &quot;false&quot;;&lt;br&gt;  &#125;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;После выполнения получаем результат:&lt;br&gt;&lt;br&gt;./test.pl &lt;br&gt;false&lt;br&gt;false&lt;br&gt;false&lt;br&gt;true&lt;br&gt;&lt;br&gt;Первая переменная действительно не определена, но почему вторая и третья тоже?&lt;br&gt;&lt;br&gt;p.s. Perl v5.14.1 built for i386-freebsd-thread-multi-64int&lt;br&gt;</description>

<item>
    <title>Проверка: определена ли переменная? (cirus)</title>
    <link>https://opennet.dev/openforum/vsluhforumID9/9215.html#7</link>
    <pubDate>Fri, 16 Sep 2011 20:06:28 GMT</pubDate>
    <description>Извиняюсь. Действительно не понял авторского замысла. Но все равно пара замечаний.&lt;br&gt;&lt;br&gt;Во-первых, совершенно не понятно из чего исходил автор, когда давал имя функции isDef. Проверяет она на истина/ложь, а не на определено/не_определено. Эта неточность влечет неверные выводы в дальнейших рассуждениях.&lt;br&gt;&lt;br&gt;Во-вторых, Perl мы любим за краткость:&lt;br&gt;sub isTrue &#123; shift ? &apos;true&apos; : &apos;false&apos; &#125;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Проверка: определена ли переменная? (serg_56)</title>
    <link>https://opennet.dev/openforum/vsluhforumID9/9215.html#6</link>
    <pubDate>Thu, 15 Sep 2011 12:59:38 GMT</pubDate>
    <description>&amp;gt; Правильно не делать еще одну безполезную функцию. Есть defined и его достаточно.&lt;br&gt;&lt;br&gt;товарищ просто проверял как работает if, а if от 0 дает false, потому и получилось как получилось.&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Проверка: определена ли переменная? (cirus)</title>
    <link>https://opennet.dev/openforum/vsluhforumID9/9215.html#5</link>
    <pubDate>Fri, 02 Sep 2011 22:11:22 GMT</pubDate>
    <description>Правильно не делать еще одну безполезную функцию. Есть defined и его достаточно.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Проверка: определена ли переменная? (anonymous)</title>
    <link>https://opennet.dev/openforum/vsluhforumID9/9215.html#4</link>
    <pubDate>Sun, 14 Aug 2011 15:40:15 GMT</pubDate>
    <description>&amp;gt; Натуральный быдлокод.&lt;br&gt;&lt;br&gt;А как правильно?&lt;br&gt;</description>
</item>

<item>
    <title>Проверка: определена ли переменная? (cirus)</title>
    <link>https://opennet.dev/openforum/vsluhforumID9/9215.html#3</link>
    <pubDate>Tue, 09 Aug 2011 21:21:57 GMT</pubDate>
    <description>Натуральный быдлокод.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Проверка: определена ли переменная? (XoRe)</title>
    <link>https://opennet.dev/openforum/vsluhforumID9/9215.html#2</link>
    <pubDate>Sun, 07 Aug 2011 19:50:40 GMT</pubDate>
    <description>Для ключей хеша ещё есть проверка на if(exists $hash&#123;key&#125;)&lt;br&gt;</description>
</item>

<item>
    <title>Проверка: определена ли переменная? (breeze)</title>
    <link>https://opennet.dev/openforum/vsluhforumID9/9215.html#1</link>
    <pubDate>Sun, 07 Aug 2011 10:49:45 GMT</pubDate>
    <description>Ответ уже сам нашел&amp;#8230;&lt;br&gt;&lt;br&gt;A simple Boolean test will not distinguish among undef, zero, the empty string, and &quot;0&quot; , which are all equally false.&lt;br&gt;&lt;br&gt;Если кому интересно, решение работает:&lt;br&gt;&lt;br&gt;sub isDef &#123;&lt;br&gt; return (defined shift) ? &apos;true&apos; : &apos;false&apos;;&lt;br&gt;&#125;&lt;br&gt;</description>
</item>

</channel>
</rss>
