<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Blog.Perl6doc.ru</title>
    <link rel="alternate" type="text/html" href="http://blog.perl6doc.ru/" />
    <link rel="self" type="application/atom+xml" href="http://blog.perl6doc.ru/atom.xml" />
    <id>tag:blog.perl6doc.ru,2010-03-04://7</id>
    <updated></updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.01</generator>

<entry>
    <title>Отличия между Perl 5 и Perl 6 - Документация Perl 6</title>
    <link rel="alternate" type="text/html" href="http://blog.perl6doc.ru/coredoc-perl6/2010/12/-perl-5-perl-6-1.html" />
    <id>tag:blog.perl6doc.ru,2010:/coredoc-perl6//11.45</id>

    <published>2010-12-15T20:41:17Z</published>
    <updated>2010-12-15T20:42:34Z</updated>

    <summary><![CDATA[Завершен перевод документа &nbsp;Differences Between Perl 5 and Perl 6...]]></summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Perl 5 vs Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl6doc.ru/coredoc-perl6/">
        <![CDATA[<meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="color: rgb(30, 30, 30); font-family: verdana, sans-serif; border-collapse: collapse; ">Завершен перевод документа &nbsp;<a href="http://perl6doc.ru/perl5-perl6-differences" style="color: rgb(148, 139, 3); text-decoration: none; ">Differences Between Perl 5 and Perl 6</a></span> ]]>
        
    </content>
</entry>

<entry>
    <title>Отличия между Perl 5 и Perl 6 (встроенные функции) - Документация Perl 6</title>
    <link rel="alternate" type="text/html" href="http://blog.perl6doc.ru/coredoc-perl6/2010/11/perl-diff-functions.html" />
    <id>tag:blog.perl6doc.ru,2010:/coredoc-perl6//11.43</id>

    <published>2010-11-14T21:02:22Z</published>
    <updated>2010-11-15T00:11:19Z</updated>

    <summary> Данный пост является вырезкой из документации Perl6::Perl5::Differences Встроенные функции Некоторые встроенные функции удалены. Дополнительно см. [S29]: Устаревшие функции Ссылки в прошлом (или все типы данных являются ссылками) В Perl 6 захват объектов заполнил экологическую нишу ссылок. Можно представить себе,...</summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Perl 5 vs Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl6doc.ru/coredoc-perl6/">
        <![CDATA[<div style="color: brown;">
<p>
Данный пост является вырезкой из документации  <a href="http://feather.perl6.nl/syn/Differences.html">Perl6::Perl5::Differences</a>
</p></div>
<br />
    
<h1 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);"> Встроенные функции</h1>

<p>Некоторые встроенные функции удалены. Дополнительно см. <a href="http://feather.perl6.nl/syn/S29.html#Obsolete_Functions">[S29]: Устаревшие функции</a></p>
<h2 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);">  Ссылки в прошлом (или все типы данных являются ссылками)</h2>
<p>В Perl 6 <i>захват</i> объектов заполнил экологическую нишу ссылок.
Можно представить себе, что это "толстые" ссылки, то есть ссылки, которые
могут захватывать не только текущую идентичность одного объекта, но
так же относительные идентичности нескольких связанных объектов. 
С другой стороны, можно считать, что ссылки в Perl 5 являются частной формой
<i>захвата</i>, когда создается ссылка только на один элемент.</p>
<pre>  <span style="color: grey;">Было:</span>  <font color="#007f00">ref</font>&nbsp;<font color="#0000ff">$foo</font>&nbsp;<font color="#ffa500">eq</font>&nbsp;<font color="#ffa500">'</font><font color="#ff0000">HASH</font><font color="#ffa500">'</font>
  <span style="color: grey;">Стало:</span> <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">foo</span> <span style="color: DimGray;">~~</span> Hash

  <span style="color: grey;">Было:</span>  <font color="#0000ff">@new</font>&nbsp;=&nbsp;(<font color="#007f00">ref</font>&nbsp;<font color="#0000ff">$old</font>&nbsp;<font color="#ffa500">eq</font>&nbsp;<font color="#ffa500">'</font><font color="#ff0000">ARRAY</font><font color="#ffa500">'</font>&nbsp;)&nbsp;?&nbsp;<font color="#0000ff">@$old</font>&nbsp;:&nbsp;(<font color="#0000ff">$old</font>);
  <span style="color: grey;">Стало:</span> <span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">new</span> <span style="color: DimGray;">=</span> <span style="color: Brown; font-weight: bold;">@</span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">old</span>;

  <span style="color: grey;">Было:</span>  <font color="#0000ff">%h</font>&nbsp;=&nbsp;(&nbsp;k&nbsp;=&gt;&nbsp;\<font color="#0000ff">@a</font>&nbsp;);
  <span style="color: grey;">Стало:</span> <span style="color: DarkOrange; font-weight: bold;">%</span><span style="color: DarkOrange; font-weight: bold;">h</span> <span style="color: DimGray;">=</span> ( k =&gt; <span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">a</span> );</pre>

<p>Передача аргумента по ссылке с последующей его модификацией:</p>
<pre>  <span style="color: grey;">Было:</span>  <b>sub&nbsp;</b><font color="#007f00">foo</font>&nbsp;{...};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foo(\<font color="#0000ff">$bar</font>)
  <span style="color: grey;">Стало:</span> <span style="color: DarkRed;">sub</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">foo</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">(</span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">bar</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">is</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">rw</span><span style="color: DarkRed;">)</span>; foo(<span style="color: rgb(0, 0, 139); font-weight: bold; ">$</span><span style="color: rgb(0, 0, 139); font-weight: bold; ">bar</span>)</pre><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8">

<p>В вышеприведенных примерах "устаревших" ссылок имеются некоторые нюансы. 
Подробнее о <i>захватах</i> можно узнать в документе 
<a href="http://feather.perl6.nl/syn/S02.html#Names_and_Variables">[S02]: Имена и переменные </a>, или на 
странице  <a href="http://moritz.faui2k3.org/pugs/docs/Perl6/FAQ/Capture.pod.html">Perl6::FAQ::Capture</a>.</p>
<h2 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);"> say()</h2>
<p>Это та же функция <code class="inline">print</code> с автоматическим добавлением символа новой строки:</p>
<pre>    <span style="color: grey;">Было:</span>     <font color="#007f00">print</font>&nbsp;<font color="#ffa500">"</font><font color="#ff0000">Hello,&nbsp;world!</font><font color="#ff00ff">\n</font><font color="#ffa500">"</font>;
    <span style="color: grey;">Стало:</span>    say   <span style="color: DarkMagenta;">"</span><span style="color: DarkMagenta;">Hello, world!</span><span style="color: DarkMagenta;">"</span>;</pre>

<p>Так как печать с символом завершения строки используется довольно часто, 
было решено сделать эту возможность на уровне языка.</p>
<a name="wantarray()"></a><h2 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);"> wantarray()</h2>
<p>Функции wantarray() в Perl 6 нет. Контекст подпрограммы определяется за её пределами, это значит, что подпрограмма "не знает", в каком контексте она выполняется.</p><p><meta http-equiv="content-type" content="text/html; charset=utf-8">Вместо этого нужно возвращать объекты, которые действуют в зависимости от своего контекста. Подробнее см. <a href="http://perlcabal.org/syn/S06.html#The_want_function">[S06]: Функция want&nbsp;</a></p>


]]>
        
    </content>
</entry>

<entry>
    <title>Отличия между Perl 5 и Perl 6 ( Перегрузка  ) - Документация Perl 6</title>
    <link rel="alternate" type="text/html" href="http://blog.perl6doc.ru/coredoc-perl6/2010/10/perl-diff-overload.html" />
    <id>tag:blog.perl6doc.ru,2010:/coredoc-perl6//11.41</id>

    <published>2010-10-16T12:55:08Z</published>
    <updated>2010-10-17T07:01:07Z</updated>

    <summary> Данный пост является вырезкой из документации Perl6::Perl5::Differences pre{ padding: 5px; } Перегрузка Как встроенные функции, так и операторы являются перегружаемыми подпрограммами и методами [ или мультиподпрограммами и мультиметодами от анг. multi subs and methods], изменение их поведения к определенному...</summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Perl 5 vs Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl6doc.ru/coredoc-perl6/">
        <![CDATA[<div style="color: brown;">
<p>
Данный пост является вырезкой из документации  <a href="http://feather.perl6.nl/syn/Differences.html">Perl6::Perl5::Differences</a>
</p></div>
<hr>
<style>
pre{
    padding: 5px;
}
</style>
<h1 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);"> Перегрузка</h1>

<p>Как встроенные функции, так и операторы являются перегружаемыми подпрограммами 
и методами [ или мультиподпрограммами и мультиметодами от анг. multi subs and methods], 
изменение их поведения к определенному типу решается добавлением соответствующих 
мультиподпрограмм и мультиметодов. Если вы желаете,
чтобы данные подпрограммы были доступны глобально, то их нужно установить в 
область видимости <code class="inline">GLOBAL</code>:</p>

<pre>multi <span style="color: DarkRed;">sub</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">GLOBAL::uc</span><span style="color: DarkRed;">(</span><span style="color: DarkRed;">RussianStr</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">str</span><span style="color: DarkRed;">,</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">Int</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">i</span><span style="color: DarkRed;">)</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">{</span> ... <span style="color: DarkRed;">}</span>

<span style="color: DarkGreen; font-weight: bold;"># "перегрузка" оператора объединения строк:</span>
multi <span style="color: DarkRed;">sub</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">infix</span><span style="color: DarkRed;">:</span><span style="color: DarkRed;">&lt;</span><span style="color: DarkRed;">~</span><span style="color: DarkRed;">&gt;</span><span style="color: DarkRed;">(</span><span style="color: DarkRed;">Str</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">us</span><span style="color: DarkRed;">,</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">RussianStr</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">them</span><span style="color: DarkRed;">)</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">{</span><span style="color: DarkRed;"> </span><span style="color: grey;">...</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">}</span>
</pre>

<p>Чтобы осуществить приведение типа (т.е значение одного типа 
преобразовать в другому), можно просто создать
метод с именем типа данных, к которому нужно привести значение.</p>

<pre><span style="color: DarkRed;">sub</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">needs_bar</span><span style="color: DarkRed;">(</span><span style="color: DarkRed;">Bar</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">x</span><span style="color: DarkRed;">)</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">{</span> ... <span style="color: DarkRed;">}</span>
<span style="color: DarkRed;">class</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">Foo</span><span style="color: DarkRed;"> </span><span style="color: Black;">{</span><span style="color: Black;">
</span>    ...<br /><span style="color: DarkGreen; font-weight: bold;">    </span><span style="color: DarkGreen; font-weight: bold;"># приведение к типу Bar:  </span><span style="color: Black;">
</span><span style="color: DarkGreen; font-weight: bold;">    </span><span style="color: DarkRed;">method</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">Bar</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">{</span><span style="color: DarkRed;"> </span>...<span style="color: DarkRed;"> </span><span style="color: DarkRed;">}</span><span style="color: DarkRed;">
</span><span style="color: DarkGreen; font-weight: bold;"></span><span style="color: Black;">}</span><br /><br /><span style="color: DarkRed;">needs_bar</span>(Foo.<span style="color: black; font-weight: bold;">new</span>); <span style="color: DarkGreen; font-weight: bold;"># передача подпрограмме объекта типа Bar</span>
</pre>

<a href="editor-content.html?cs=UTF-8" name="Offering-Hash-and-List-semantics"></a><h2 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);">  Cемантика списка и хэша</h2>
<p>Для того, чтобы написать класс, чьи объекты могут быть отнесены к переменным
с сигилом <code class="inline">@</code>, нужно реализовать <code class="inline">позиционные</code> роли.
Аналогично для сигила <code class="inline">%</code> нужно реализовать <code class="inline">ассоциативную</code> роль. 
Сигил <code class="inline">&amp;</code> подразумевает фрагмент кода, который может быть вызван.</p>
<p>Роли обеспечиваются операторами <code class="inline"><span style="color: DarkRed;">postcircumfix:&lt;[ ]&gt;</span></code> ( позиционный, для
индексировании массива), <code class="inline"><span style="color: DarkRed;">postcircumfix: &lt;{ }&gt;</span></code> (ассоциативный) и
 <code class="inline"><span style="color: DarkRed;">postcircumfix:&lt;()&gt;</span></code> (вызываемый фрагмент кода).
Технически это обычные методы с причудливым синтаксисом. Нужно только
подкорректировать их для выражения соответствующей семантики.</p>

<pre><span style="color: DarkRed;">class</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">OrderedHash</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">does</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">Associative</span><span style="color: DarkRed;"> </span><span style="color: Black;">{</span><span style="color: Black;">
</span><span style="color: DarkGreen; font-weight: bold;">    </span><span style="color: DarkRed;">method</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">postcircumfix</span><span style="color: DarkRed;">:</span><span style="color: DarkRed;">&lt;</span><span style="color: DarkRed;">{}</span><span style="color: DarkRed;">&gt;</span><span style="color: DarkRed;">(</span><span style="color: DarkRed;">Int</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">index</span><span style="color: DarkRed;">)</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">{</span><span style="color: DarkRed;">
</span><span style="color: DarkGreen; font-weight: bold;">        </span><span style="color: DarkGreen; font-weight: bold;"># здесь код, оперирующий отдельными элементами хэша</span><span style="color: DarkRed;">
</span><span style="color: DarkGreen; font-weight: bold;">    </span><span style="color: DarkRed;">}</span><span style="color: DarkRed;">
</span><span style="color: DarkGreen; font-weight: bold;">    </span><span style="color: DarkRed;">method</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">postcircumfix</span><span style="color: DarkRed;">:</span><span style="color: DarkRed;">&lt;</span><span style="color: DarkRed;">{}</span><span style="color: DarkRed;">&gt;</span><span style="color: DarkRed;">(</span><span style="color: DarkRed;">**</span><span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">slice</span><span style="color: DarkRed;">)</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">{</span><span style="color: DarkRed;">
</span><span style="color: DarkGreen; font-weight: bold;">        </span><span style="color: DarkGreen; font-weight: bold;"># здесь код, оперирующий срезами хэша</span><span style="color: DarkRed;">
</span><span style="color: DarkGreen; font-weight: bold;">    </span><span style="color: DarkRed;">}</span><span style="color: DarkRed;">
</span><span style="color: grey;">    ...</span><span style="color: DarkRed;">
</span><span style="color: Black;">}</span><span style="">

</span><span style="color: DarkRed;">my</span><span style="color: DarkRed;"> </span><span style="color: DarkOrange; font-weight: bold;">%</span><span style="color: DarkOrange; font-weight: bold;">orderedHash</span><span style="color: DarkRed;"> </span><span style="color: DimGray;">=</span> OrderedHash.<span style="color: black; font-weight: bold;">new</span><span style="color: black; font-weight: bold;">()</span>;
<span style="color: DarkRed;">say</span> <span style="color: DarkOrange; font-weight: bold;">%</span><span style="color: DarkOrange; font-weight: bold;">orderedHash</span>{<span style="color: DarkMagenta;">'</span><span style="color: DarkMagenta;">a</span><span style="color: DarkMagenta;">'</span>};
</pre>
<p>См. подробнее в спецификации <a href="http://feather.perl6.nl/syn/S13.html">[S13]</a></p>
<a href="editor-content.html?cs=UTF-8" name="Chaining-file-test-operators-has-changed"></a>

<h2 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);">  Изменения в семантике операторов тестирования файлов</h2>

<pre><span style="color: grey;">Было:</span>    <b>if</b>&nbsp;(<font color="#ffa500">-r</font>&nbsp;<font color="#0000ff">$file</font>&nbsp;&amp;&amp;&nbsp;<font color="#ffa500">-x</font>&nbsp;_)&nbsp;{ ... } 
<span style="color: grey;">Стало:</span>   <span style="color: DarkRed;">if</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">file</span><span style="color: DarkRed;"> </span><span style="color: DimGray;">~~</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">:</span><span style="color: DarkRed;">r</span><span style="color: DarkRed;"> </span><span style="color: DimGray;">&amp;</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">:</span><span style="color: DarkRed;">x</span><span style="color: DarkRed;">  </span><span style="color: DarkRed;">{</span><span style="color: DarkRed;"> </span>... <span style="color: DarkRed;">}</span>
</pre>
<p>Операторы тестирования файлов теперь возвращают в качестве результата булево значение. Детальнее об этом см. <a href="http://feather.perl6.nl/syn/S13.html#Changes%20to%20Perl%205%20operators">[S03]: Изменения в операторах Perl</a> </p>]]>
        
    </content>
</entry>

<entry>
    <title>Отличия между Perl 5 и Perl 6 ( Объекты ) - Документация Perl 6</title>
    <link rel="alternate" type="text/html" href="http://blog.perl6doc.ru/coredoc-perl6/2010/09/-perl-5-perl-6.html" />
    <id>tag:blog.perl6doc.ru,2010:/coredoc-perl6//11.37</id>

    <published>2010-09-12T19:02:26Z</published>
    <updated>2010-09-13T15:31:02Z</updated>

    <summary> Сегодня перевел очередной кусочек спецификации Perl6::Perl5::Differences, а именно ту часть, в которой описывается объектно-ориентированное программирование на perl 6. Perl6::Perl5::Differences - Отличия между Perl 5 и Perl 6 Объекты В Perl 6 реализована полноценная объектная модель, с ключевыми словами для...</summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Perl 5 vs Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl6doc.ru/coredoc-perl6/">
        <![CDATA[<div style="color: brown">
<p>
Сегодня перевел очередной кусочек спецификации  <a href="http://feather.perl6.nl/syn/Differences.html">Perl6::Perl5::Differences</a>, а именно ту часть, в которой описывается объектно-ориентированное программирование на perl 6. 
</p></div>
<hr>

<a name="DESCRIPTION"></a><h1 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);"> Perl6::Perl5::Differences - Отличия между Perl 5 и Perl 6 </h1>

<a name="Blocks-and-Statements"></a><h1 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);"> Объекты </h1>

<p>
В Perl 6 реализована полноценная  объектная модель, с ключевыми словами для классов,
объектов и атрибутов. Имена публичных атрибутов предваряются символом <code class="inline"><span style="color: DarkGreen; font-weight: bold;">.</span></code>, а имена
приватных атрибутов - символом <code class="inline"><span style="color: DarkGreen; font-weight: bold;">!</span></code>. (В дальнейшем будем их называть <i>твигилы</i> (анг. twigil) (Прим. перев.) )
</p>

<pre><span style="color DarkRed;">class</span><span style="color DarkRed;"> </span><span style="color DarkRed;">YourClass</span><span style="color DarkRed;"> </span><span style="color: Black;">{</span><span style="color: Black;">
</span><span style="color: DarkGreen; font-weight: bold;">    </span><span style="color: DarkRed;">has</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkGreen;">!</span><span style="color: DarkBlue; font-weight: bold;">private</span><span style="color: Black;">;</span><span style="color: Black;">
</span><span style="color: DarkGreen; font-weight: bold;">    </span><span style="color: DarkRed;">has</span><span style="color: DarkRed;"> </span><span style="color: Brown; font-weight: bold;">@</span><span style="color: DarkGreen;">.</span><span style="color: Brown; font-weight: bold;">public</span><span style="color: Black;">;</span><span style="color: Black;">
</span><span style="color: DarkGreen; font-weight: bold;">    </span><span style="color: Black;">
</span><span style="color: DarkGreen; font-weight: bold;">    </span><span style="color: DarkGreen; font-weight: bold;"># с указанием права доступа "чтение-запись"</span><span style="color: Black;">
</span><span style="color: DarkGreen; font-weight: bold;">    </span><span style="color: DarkRed;">has</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkGreen;">.</span><span style="color: DarkBlue; font-weight: bold;">stuff</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">is</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">rw</span><span style="color: Black;">;</span><span style="color: Black;">
</span><span style="color: DarkGreen; font-weight: bold;">    </span><span style="color: Black;">
</span><span style="color: DarkGreen; font-weight: bold;">    </span><span style="color: DarkRed;">method</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">do_something</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">{</span><span style="color: DarkRed;">
</span><span style="color: DarkGreen; font-weight: bold;">        </span><span style="color: DarkRed;">if</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">self</span><span style="color: DarkRed;">.</span><span style="color: black; font-weight: bold;">can</span><span style="color: black; font-weight: bold;">(</span><span style="color: DarkMagenta;">'</span><span style="color: DarkMagenta;">bark</span><span style="color: DarkMagenta;">'</span><span style="color: black; font-weight: bold;">)</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">{</span><span style="color: DarkRed;">
</span><span style="color: DarkGreen; font-weight: bold;">            </span><span style="color: DarkRed;">say</span><span style="color: DarkRed;"> </span><span style="color: DarkMagenta;">"</span><span style="color: DarkMagenta;">Something doggy</span><span style="color: DarkMagenta;">"</span><span style="color: DarkRed;">;</span><span style="color: DarkRed;">
</span><span style="color: DarkGreen; font-weight: bold;">        </span><span style="color: DarkRed;">}</span><span style="color: DarkRed;">
</span><span style="color: DarkGreen; font-weight: bold;">    </span><span style="color: DarkRed;">}</span><span style="color: DarkRed;">
</span><span style="color: DarkGreen; font-weight: bold;"></span><span style="color: Black;">}</span>
</pre>
<h2 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);">
Вызовы метода обозначаются символом . вместо -&gt;
</h2> 
<pre>    <span style="color: grey">Было:</span>     <font color="#0000ff">$object</font>-&gt;<font color="#0000ff">method</font><font color="#0000ff"></font> 
    <span style="color: grey">Стало:</span>    <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">object</span>.<span style="color: black; font-weight: bold;">method</span>
</pre>

<h2 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);">
Отличие символических ссылок от жестких при вызове динамического метода
</h2>

<pre>    <span style="color: grey">Было:</span>   <font color="#0000ff">$self</font>-&gt;<font color="#0000ff">$method</font>()
    <span style="color: grey">Стало:</span>  <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">self</span>.<span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">method</span><span style="color: black; font-weight: bold;">()</span>   <span style="color: DarkGreen; font-weight: bold;"># жесткая ссылка</span>
    <span style="color: grey">Стало:</span>  <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">self</span>.<span style="color: DarkMagenta;">"</span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">method</span><span style="color: DarkMagenta;">"</span><span style="color: black; font-weight: bold;">()</span> <span style="color: DarkGreen; font-weight: bold;"># символическая ссылка</span>
</pre>

<div style="color: brown">
Продолжение следует ...
</div>]]>
        
    </content>
</entry>

<entry>
    <title>Отличия между Perl 5 и Perl 6 (часть 3). - Документация Perl 6</title>
    <link rel="alternate" type="text/html" href="http://blog.perl6doc.ru/coredoc-perl6/2010/08/diff-perl-5-perl-6-3.html" />
    <id>tag:blog.perl6doc.ru,2010:/coredoc-perl6//11.33</id>

    <published>2010-08-15T19:03:11Z</published>
    <updated>2010-08-15T19:14:20Z</updated>

    <summary><![CDATA[ Сегодня перевел очередной кусочек спецификации Perl6::Perl5::Differences. Perl6::Perl5::Differences - Отличия между Perl 5 и Perl 6 Блоки и Операторы См. S04 если хотите узнать больше об операторах и блоках в Perl 6. Не требуются скобки в управляющих структурах Раньше: if&nbsp;($a&nbsp;&lt;&nbsp;$b)&nbsp;{&nbsp;...&nbsp;}...]]></summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Perl 5 vs Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl6doc.ru/coredoc-perl6/">
        <![CDATA[<div style="color: brown">
<p>
Сегодня перевел очередной кусочек спецификации <a href="http://feather.perl6.nl/syn/Differences.html">Perl6::Perl5::Differences</a>. 
</div>
<hr>

<a name="DESCRIPTION"></a><h1 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);"> Perl6::Perl5::Differences - Отличия между Perl 5 и Perl 6 </h1>

<a name='Blocks-and-Statements'></a><h1 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);"> Блоки и Операторы</h1>

<p>См. <a href="http://search.cpan.org/perldoc/S04">S04</a> если хотите узнать больше об операторах и блоках в Perl 6.</p>
<a name="You-don't-need-parens-on-control-structure-conditions"></a><h2 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);">  Не требуются скобки в управляющих структурах</h2>
<pre>    <span style="color: grey">Раньше:</span>    <b>if</b>&nbsp;(<font color="#0000ff">$a</font>&nbsp;&lt;&nbsp;<font color="#0000ff">$b</font>)&nbsp;{&nbsp;<span style="color: grey;">...</span>&nbsp;}
    <span style="color: grey">Теперь:</span>    <span style="color: DarkRed;">if</span><span style="color: DarkRed;">  </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">a</span><span style="color: DarkRed;"> </span><span style="color: DimGray;">&lt;</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">b</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">{</span><span style="color: DarkRed;"> </span><span style="color: grey;">...</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">}</span></pre>

<p>Аналогично для <code class='inline'><span style="color: DarkRed;">while</span></code>, <code class='inline'><span style="color: DarkRed;">for</span></code>, и.т.д. Можно использовать скобки,
но при этом придется соблюдать, чтобы был пробел после <code class='inline'><span style="color: DarkRed;">if</span></code>, иначе
это будет вызовом подпрограммы.</p>
<a name='eval-%7b%7d-is-now-try-%7b%7d'></a><h2 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);">  Теперь try {} вместо eval {}.</h2>
<p>Теперь вместо блока <code class='inline'><span style="color: DarkRed;">eval</span></code> используется <code class='inline'><span style="color: DarkRed;">try</span></code>.</p>
<pre>    <span style="color: grey">Было:</span>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#007f00">eval</font>&nbsp;{&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#7f7f7f"><i>#&nbsp;<span style="color: grey">...</span>&nbsp;</i></font><font color="#7f7f7f"><i>
</i></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>if</b>&nbsp;(<font color="#0000ff"><b>$@</b></font>)&nbsp;{&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#007f00">warn</font>&nbsp;<font color="#ffa500">"</font><font color="#ff0000">ошибка:&nbsp;</font><font color="#0000ff"><b>$@</b></font><font color="#ffa500">"</font>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;
    <span style="color: grey">Стало:</span> 
          try  <span style="color: Black;">{</span><span style="color: Black;">
</span><span style="color: DarkGreen; font-weight: bold;">             </span><span style="color: grey;"># ...</span><span style="color: Black;">
</span><span style="color: DarkGreen; font-weight: bold;">             </span><span style="color: DarkRed;">CATCH</span><span style="color: DarkRed;"> </span><span style="color: Black;">{</span><span style="color: Black;"> </span><span style="color: Black;">warn</span><span style="color: Black;"> </span><span style="color: DarkMagenta;">&quot;</span><span style="color: DarkMagenta;">ошибка: </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkGreen;">!</span><span style="color: DarkMagenta;">&quot;</span><span style="color: Black;"> </span><span style="color: Black;">}</span><span style="color: DarkRed;">
</span><span style="color: DarkGreen; font-weight: bold;">          </span><span style="color: Black;">}</span></pre>

<p>CATCH обеспечивает больше гибкости в обработке ошибок.
См. <a href="http://feather.perl6.nl/syn/S04.html#Exception_handlers">[S04]: "Обработчики исключений"</a> для получения детальной информации.</p>
<a name='foreach-becomes-for'></a><h2 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);">  foreach становится for</h2>
<pre>    <span style="color: grey">Раньше:</span>    <b>foreach</b>&nbsp;(<font color="#0000ff">@whatever</font>)&nbsp;{&nbsp;<span style="color: grey">...</span>&nbsp;}
    <span style="color: grey">Теперь:</span>    <span style="color: DarkRed;">for</span><span style="color: DarkRed;"> </span><span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">whatever</span><span style="color: DarkRed;">       </span><span style="color: DarkRed;">{</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;"><span style="color: grey">...</span></span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">}</span></pre>

<p>Кроме того, изменился способ присвоения нечто другому, чем <code class='inline'>$_</code>:</p>
<pre>    <span style="color: grey">Было:</span>    <b>foreach</b>&nbsp;<b>my</b>&nbsp;<font color="#0000ff">$x</font>&nbsp;(<font color="#0000ff">@whatever</font>)&nbsp;{&nbsp;<span style="color: grey">...</span>&nbsp;}
    <span style="color: grey">Стало:</span>   <span style="color: DarkRed;">for</span><span style="color: DarkRed;"> </span><span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">whatever</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">-</span><span style="color: DarkRed;">&gt;</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">x</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">      </span><span style="color: DarkRed;">{</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;"><span style="color: grey">...</span></span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">}</span></pre>

<p>Подобным образом можно извлекать несколько элементов одновременно:</p>
<pre>    <span style="color: grey">Было:</span>     <b>while</b>&nbsp;(<b>my</b>(<font color="#0000ff">$age</font>,&nbsp;<font color="#0000ff">$sex</font>,&nbsp;<font color="#0000ff">$location</font>)&nbsp;=&nbsp;<font color="#007f00">splice</font>&nbsp;<font color="#0000ff">@whatever</font>,&nbsp;0,&nbsp;<font color="#00007f">3</font>)&nbsp;{&nbsp;<span style="color: grey">...</span>&nbsp;}
    <span style="color: grey">Стало:</span>    <span style="color: DarkRed;">for</span><span style="color: DarkRed;"> </span><span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">whatever</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">-</span><span style="color: DarkRed;">&gt;</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">age</span><span style="color: DarkRed;">,</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">sex</span><span style="color: DarkRed;">,</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">location</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">{</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;"><span style="color: grey">...</span></span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">}</span></pre>

<p>(За исключением того, что версия <code class='inline'><span style="color: DarkRed;">for</span></code> не уничтожает массив)</p>
<p>В спецификациях <a href="http://feather.perl6.nl/syn/S04.html#The_for_statement">[S04]: "Оператор for"</a> и <a href="http://feather.perl6.nl/syn/S29.html#each">[S29]: each</a> об этом говорится подробнее.</p>
<a name='for-becomes-loop'></a><h2 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);">  for становится loop</h2>
<pre>    <span style="color: grey">Было:</span>     <b>for</b>&nbsp;(<font color="#0000ff">$i</font> = 0;&nbsp;<font color="#0000ff">$i</font> &lt; <font color="#00007f">10</font>;&nbsp;<font color="#0000ff">$i</font>++)&nbsp;{&nbsp;<span style="color: grey">...</span>&nbsp;}
    <span style="color: grey">Стало:</span>    loop (<span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">i</span> <span style="color: DimGray;">=</span> <span style="color: DarkOrange;">0</span>; <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">i</span> <span style="color: DimGray;">&lt;</span> <span style="color: DarkOrange;">10</span>; <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">i</span>++) { <span style="color: grey">...</span> }</pre>

<p>Также <code class='inline'><span style="color: DarkRed;">loop</span></code> можно использовать для создания бесконечных циклов:</p>
<pre>    <span style="color: grey">Было:</span>     <b>while</b>&nbsp;(<font color="#00007f">1</font>)&nbsp;{&nbsp;<span style="color: grey">...</span>&nbsp;}
    <span style="color: grey">Стало:</span>    <span style="color: DarkRed;">loop</span><span style="color: DarkRed;"> </span><span style="color: Black;">{</span><span style="color: Black;"> </span><span style="color: Black;"><span style="color: grey">...</span></span><span style="color: Black;"> </span><span style="color: Black;">}</span></pre>

<a name='Regexes-and-Rules'></a><h1 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);"> Регулярные выражения и "правила"</h1>

<p>В примере ниже иллюстрируется простая трансляция регулярного выражения Perl5 в Perl6:</p>
<pre>    <span style="color: grey">Было:</span>     <font color="#0000ff">$str</font>&nbsp;=~&nbsp;<font color="#ffa500">m/</font><font color="#ff00ff">^</font><font color="#007f00">\d</font><font color="#ff00ff">{2,5}</font><font color="#007f00">\s</font><font color="#ffa500">/i</font>
    <span style="color: grey">Стало:</span>    <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">str</span> <span style="color: DimGray;">~~</span> <span style="color: DarkMagenta;">m:P5:i/^\d{2,5}\s/</span></pre>

<p>Здесь используется модификатор <code class='inline'>:P5</code>. Так как стандартный синтаксис Perl6 
достаточно разнообразный, 'P5' отмечает где необходима совместимость с синтаксисом Perl5. Для замены:</p>
<pre>    <span style="color: grey">Было:</span>     <font color="#0000ff">$str</font>&nbsp;=~&nbsp;<font color="#ffa500">s/</font><font color="#ff00ff">(</font><font color="#b03060">a</font><font color="#ff00ff">)</font><font color="#ffa500">/</font><font color="#0000ff"><b>$1</b></font><font color="#ffa500">/e</font>;
    <span style="color: grey">Стало:</span>    <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">str</span> <span style="color: DimGray;">~~</span> <span style="color: DarkMagenta;">s:P5/(a)/{$0}/;</span></pre>

<p>Обратите внимание, что первый буфер захвата не <code class='inline'>$1</code>, как было раньше, а <code class='inline'>$0</code>,
а модификатор <code class='inline'>/e</code> удален в пользу встроенной закрытой нотации.</p>
<p>Данная тема подробно рассматривается в спецификации <a href="http://feather.perl6.nl/syn/S05.html">S05</a>. См. также:</p>
<p>Связанный с ним Апокалипсис (анг. Apocalypse), в котором объясняются изменения:</p>
<pre>  <a href="http://dev.perl.org/perl6/doc/design/apo/A05.html">http://dev.perl.org/perl6/doc/design/apo/A05.html</a></pre>

<p>И связанная с ним Экзегеза (анг. Exegesis), где данная тема объясняется более детально:</p>
<pre>  <a href="http://dev.perl.org/perl6/doc/design/exe/E05.html">http://dev.perl.org/perl6/doc/design/exe/E05.html</a></pre>

<div style="color: brown">
Продолжение следует ...
</div>
]]>
        
    </content>
</entry>

<entry>
    <title>Отличия между Perl 5 и Perl 6 (часть 2). - Документация Perl 6</title>
    <link rel="alternate" type="text/html" href="http://blog.perl6doc.ru/coredoc-perl6/2010/08/diff-perl-5-perl-6-2.html" />
    <id>tag:blog.perl6doc.ru,2010:/coredoc-perl6//11.31</id>

    <published>2010-08-03T20:40:14Z</published>
    <updated>2010-08-03T21:15:58Z</updated>

    <summary> Привет, сегодня продолжаю перевод документа Perl6::Perl5::Differences. Perl6::Perl5::Differences - Отличия между Perl 5 и Perl 6 Операторы Полный список операторов задокументирован на страницах [S03]: &quot;Изменения синтаксиса операторов Perl 5&quot; и [S03]: &quot;Новые операторы&quot;. Некоторые ключевые аспекты: Новая форма интерполяции оператора...</summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Perl 5 vs Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl6doc.ru/coredoc-perl6/">
        <![CDATA[<div style="color: brown">
<p>
Привет, сегодня продолжаю перевод документа  <a href="http://feather.perl6.nl/syn/Differences.html">Perl6::Perl5::Differences</a>. 
</div>
<hr>

<a name="DESCRIPTION"></a><h1 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);"> Perl6::Perl5::Differences - Отличия между Perl 5 и Perl 6 </h1>

<a name='Operators'></a><h1 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);"> Операторы</h1>

<p>Полный список операторов задокументирован на страницах <a href="http://feather.perl6.nl/syn/S03.html#Changes_to_Perl_5_operators">[S03]: "Изменения синтаксиса  операторов Perl 5"</a> и <a href="http://feather.perl6.nl/syn/S03.html#New_operators">[S03]: "Новые операторы"</a>.</p>
<p>Некоторые ключевые аспекты:</p>
<a name="'qw()'-changes%3b-new-interpolating-form"></a><h2  style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);">  Новая форма интерполяции оператора кавычек <code class='inline'>qw()</code></h2>
<pre>    <span style="color: grey">Было:</span>    <font color="#ffa500">qw(</font>foo<font color="#ffa500">)</font>
    <span style="color: grey">Стало:</span>   &lt;foo&gt;

    <span style="color: grey">Было:</span>    (<font color="#ffa500">"</font><font color="#ff0000">foo</font><font color="#ffa500">"</font>,&nbsp;(<font color="#007f00">split</font>&nbsp;<font color="#ffa500">'</font><font color="#ff0000">&nbsp;</font><font color="#ffa500">'</font>,&nbsp;<font color="#0000ff">$bar</font>),&nbsp;<font color="#ffa500">"</font><font color="#ff0000">bat</font><font color="#ffa500">"</font>)
    <span style="color: grey">Стало:</span>   &lt;&lt;foo <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">bar</span> bat&gt;&gt;</pre>

<p>Операторы кавычек теперь имеют модификаторы, которые могут быть
использованы для изменения их интерпретации ( подобно модификаторам 
регулярных выражений в Perl 5), с их помощью можно даже определить свои
собственные операторы кавычек.</p>
<p>Обратите внимание, что подпись <code class='inline'>()</code> теперь является вызовом подпрограммы, 
таким образом вместо <code class='inline'><font color="#ffa500">qw(</font>a&nbsp;b<font color="#ffa500">)</font>
</code>  надо написать <code class='inline'><span style="color: DarkMagenta;">q</span><span style="color: DarkMagenta;">w</span><span style="color: DarkMagenta;">&lt;</span><span style="color: DarkMagenta;">a b</span><span style="color: DarkMagenta;">&gt;</span></code> или <code class='inline'><span style="color: DarkMagenta;">q</span><span style="color: DarkMagenta;">w</span><span style="color: DarkMagenta;">[</span><span style="color: DarkMagenta;">a b</span><span style="color: DarkMagenta;">]</span></code>
(если вам не симпатична простая запись <code class='inline'>&lt;a&nbsp;b&gt;</code>).</p>
<a name='Other-important-operator-changes'></a><h2  style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);">  Другие важные изменения в операторах</h2>
<p>Объединение строк теперь осуществляется символом <code class="inline">~</code>.</p>
<p>Сопоставление регулярному выражению производится оператором "умного сопоставления" - <code class='inline'>~~</code>, 
Perl 5 оператор сопоставления <code class='inline'>=~</code> больше не используется.</p>
<pre>    <span style="color: DarkRed;">if</span><span style="color: DarkRed;"> </span><span style="color: DarkMagenta;">&quot;</span><span style="color: DarkMagenta;">abc</span><span style="color: DarkMagenta;">&quot;</span><span style="color: DarkRed;"> </span><span style="color: DimGray;">~~</span><span style="color: DarkRed;"> </span><span style="color: DarkMagenta;">m</span><span style="color: DarkMagenta;">/</span><span style="color: DarkMagenta;">a</span><span style="color: DarkMagenta;">/</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">{</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">...</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">}</span></pre>

<p><code class='inline'>|</code> и <code class='inline'>&</code> как инфиксные операторы теперь объединяют конструкции. Операторы
бинарный AND и бинарный OR разделены на строковые и числовые,
то есть <code class='inline'>~&</code> - бинарный строковый AND,  <code class='inline'>+&</code> бинарный 
числовой AND, <code class='inline'>~|</code> - бинарный строковый OR и.т.д.</p>
<pre>	<span style="color: grey">Было:</span>  <font color="#0000ff">$foo</font>&nbsp;&amp;&nbsp;<font color="#00007f">1</font>;
	<span style="color: grey">Стало:</span> <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">foo</span> <span style="color: DimGray;">+&amp;</span> <span style="color: DarkOrange;">1</span>;</pre>

<p>Побитовые операторы в настоящее время с префиксом +, ~ или ? в зависимости 
от типа данных: число, строка или логическое значение.</p>
<pre>	<span style="color: grey">Было:</span>  <font color="#0000ff">$foo</font>&nbsp;&lt;&lt;&nbsp;42;
	<span style="color: grey">Стало:</span> <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">foo</span> <span style="color: DimGray;">+&lt;</span> <span style="color: DarkOrange;">42</span>;</pre>

<p>Операторы присваивания изменены таким же образом:</p>
<pre>	<span style="color: grey">Было:</span>  <font color="#0000ff">$foo</font>&nbsp;&lt;&lt;=&nbsp;42;
	<span style="color: grey">Стало:</span> <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">foo</span> <span style="color: DimGray;">+&lt;</span>= <span style="color: DarkOrange;">42</span>;</pre>

<p>Скобки не создают списки, они просто группируют. Списки формируются
оператором запятой. У неё приоритет выше, чем у оператора
присвоения списка, это позволяет с правой стороны указывать список 
без скобок.</p>
<pre>    <span style="color: DarkRed;">my</span><span style="color: DarkRed;"> </span><span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">list</span><span style="color: DarkRed;"> </span><span style="color: DimGray;">=</span> <span style="color: DarkOrange;">1</span><span style="color: DimGray;">,</span> <span style="color: DarkOrange;">2</span><span style="color: DimGray;">,</span> <span style="color: DarkOrange;">3</span>;<span style="color: grey;">     </span><span style="color: grey;"># В @list на самом деле 3 элемента</span></pre>

<p>
Оператор стрелка <code class='inline'>-></code>  для разыменовывания больше не используется. Так как
все является объектом, а разыменовывающие скобки - это просто вызовы метода
с синтаксическим сахаром, можно сразу использовать соответствующую
пару скобок для индексирования либо вызова метода:
</p>

<pre>    <span style="color: DarkRed;">my</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">aoa</span><span style="color: DarkRed;"> </span><span style="color: DimGray;">=</span> [[<span style="color: DarkOrange;">1</span><span style="color: DimGray;">,</span> <span style="color: DarkOrange;">2</span><span style="color: DimGray;">,</span> <span style="color: DarkOrange;">3</span>]<span style="color: DimGray;">,</span> [<span style="color: DarkOrange;">4</span><span style="color: DimGray;">,</span> <span style="color: DarkOrange;">5</span><span style="color: DimGray;">,</span> <span style="color: DarkOrange;">6</span>]<span style="color: DimGray;">,</span> [<span style="color: DarkOrange;">7</span><span style="color: DimGray;">,</span> <span style="color: DarkOrange;">8</span><span style="color: DimGray;">,</span> <span style="color: DarkOrange;">9</span>]];
<span style="color: grey;">    </span>say <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">aoa</span>[<span style="color: DarkOrange;">1</span>][<span style="color: DarkOrange;">0</span>];<span style="color: grey;">         </span><span style="color: grey;"># 4</span>

<span style="color: grey;">    </span><span style="color: DarkRed;">my</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">s</span><span style="color: DarkRed;"> </span><span style="color: DimGray;">=</span> <span style="color: DarkRed;">sub</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">{</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">say</span><span style="color: DarkRed;"> </span><span style="color: DarkMagenta;">&quot;</span><span style="color: DarkMagenta;">hi</span><span style="color: DarkMagenta;">&quot;</span><span style="color: DarkRed;"> </span><span style="color: DarkRed;">}</span>;
<span style="color: grey;">    </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">s</span>();
<span style="color: grey;">    </span><span style="color: grey;"># или</span>
<span style="color: grey;">    </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">s</span>.();
<span style="color: grey;">    </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">lol</span>.[<span style="color: DarkOrange;">1</span>][<span style="color: DarkOrange;">0</span>]</pre>]]>
        
    </content>
</entry>

<entry>
    <title>Отличия между Perl 5 и Perl 6 (часть 1). - Документация Perl 6</title>
    <link rel="alternate" type="text/html" href="http://blog.perl6doc.ru/coredoc-perl6/2010/08/diff-perl-5-perl-6.html" />
    <id>tag:blog.perl6doc.ru,2010:/coredoc-perl6//11.29</id>

    <published>2010-08-02T04:42:52Z</published>
    <updated>2010-08-01T20:28:23Z</updated>

    <summary> Ну вот, наконец-то вышел первый официальный выпуск компилятора Perl 6 Rakudo - это радует, так теперь появилась определенная уверенность в завтрашнем дне Perl 6 ! На позитивной ноте начинаю перевод официальной документации Perl 6. Итак, первым делом рассмотрим документ...</summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Perl 5 vs Perl 6" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl6doc.ru/coredoc-perl6/">
        <![CDATA[<div style="color: brown">
<p>
Ну вот, наконец-то вышел первый официальный выпуск компилятора Perl 6 Rakudo -  это радует, так теперь появилась определенная уверенность в завтрашнем дне Perl 6 ! 
</p>
<p>
На позитивной ноте начинаю перевод официальной документации Perl 6.
Итак, первым делом рассмотрим документ <a href="http://feather.perl6.nl/syn/Differences.html">Perl6::Perl5::Differences</a> в котором описываются отличия между пятой и шестой версиями Perl:
</p>
</div>
<hr>

<a name="DESCRIPTION"></a><h1 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);"> Perl6::Perl5::Differences - Отличия между Perl 5 и Perl 6 </h1>

<p>Данный документ предназначен для тех программистов, которые знают
Perl 5, но не знают Perl 6 и интересуются их основными отличиями.
Подробнее об отличиях рассказывается в справочном пособии Perl 6.</p>
<p>Документ в настоящее время описывает не все отличия в Perl 5 и Perl 6, со временем это будет исправлено.</p>
<a name="Bits-and-Pieces"></a><h1 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);"> Всякая всячина</h1>

<a name="Sigils"></a><h2 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);">  Сигилы</h2>
<p>Там, где раньше говорили:</p>

<pre>&nbsp;&nbsp;&nbsp;&nbsp;<b>my</b>&nbsp;<font color="#0000ff">@fruits</font>&nbsp;=&nbsp;(<font color="#ffa500">"</font><font color="#ff0000">яблоко</font><font color="#ffa500">"</font>,&nbsp;<font color="#ffa500">"</font><font color="#ff0000">груша</font><font color="#ffa500">"</font>,&nbsp;<font color="#ffa500">"</font><font color="#ff0000">банан</font><font color="#ffa500">"</font>);
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#007f00">print</font>&nbsp;<font color="#0000ff">$fruit</font>[0],&nbsp;<font color="#ffa500">"</font><font color="#ff00ff">\n</font><font color="#ffa500">"</font>;
</pre>

<p>Вы бы сейчас сказали:</p>
<pre>    <span style="color: DarkRed;">my</span><span style="color: DarkRed;"> </span><span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">fruits</span><span style="color: DarkRed;"> </span><span style="color: DimGray;">=</span> <span style="color: DarkMagenta;">"</span><span style="color: DarkMagenta;">яблоко</span><span style="color: DarkMagenta;">"</span><span style="color: DimGray;">,</span> <span style="color: DarkMagenta;">"</span><span style="color: DarkMagenta;">груша</span><span style="color: DarkMagenta;">"</span><span style="color: DimGray;">,</span> <span style="color: DarkMagenta;">"</span><span style="color: DarkMagenta;">банан</span><span style="color: DarkMagenta;">"</span>;
<span style="color: grey;">    </span>say <span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">fruit</span>[<span style="color: DarkOrange;">0</span>];</pre>

<p>Или даже используюя оператор <code class="inline">&lt;&gt;</code>, который заменяет <code class="inline">qw()</code>:</p>
<pre>    <span style="color: DarkRed;">my</span><span style="color: DarkRed;"> </span><span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">fruits</span><span style="color: DarkRed;"> </span><span style="color: DimGray;">=</span> &lt;яблоко груша банан&gt;;</pre>

<p>Обратите внимание, что теперь, когда мы хотим извлечь элемент, указываем 
сигил <code class="inline">@</code> вместо <code class="inline">$</code>. Возможно правильнее рассуждать так: сигил 
переменной теперь является частью его имени, поэтому он ни в каком 
случае не изменяется.</p>
<p>То же самое относится и к хэшам:</p>
<pre>    say <span style="color: DarkMagenta;">"</span><span style="color: DarkMagenta;">В этом году в феврале </span><span style="color: DarkOrange; font-weight: bold;">%</span><span style="color: DarkOrange; font-weight: bold;">days</span><span style="color: DarkMagenta;">{</span><span style="color: DarkMagenta;">'</span><span style="color: DarkMagenta;">February</span><span style="color: DarkMagenta;">'</span><span style="color: DarkMagenta;">}</span><span style="color: DarkMagenta;"> дней</span><span style="color: DarkMagenta;">"</span></pre>

<p>Опять же, в сокращенной форме:</p>
<pre>    say <span style="color: DarkMagenta;">"</span><span style="color: DarkMagenta;">В этом году в феврале </span><span style="color: DarkOrange; font-weight: bold;">%</span><span style="color: DarkOrange; font-weight: bold;">days</span><span style="color: DarkMagenta;">&lt;</span><span style="color: DarkMagenta;">February</span><span style="color: DarkMagenta;">&gt;</span><span style="color: DarkMagenta;"> дней</span><span style="color: DarkMagenta;">"</span></pre>

<p>Подробнее обо всем этом вы можете узнать из документа 
<a href="http://feather.perl6.nl/syn/S02.html#Names_and_Variables">[S02]: "Имена и переменные"</a>.</p>
<a name="Global-variables-have-a-twigil"></a><h2 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);">  Имена глобальных переменных предваряются твигилом</h2>
<p>Да, твигил. Это второй символ в имени переменной. Для глобальных переменных таковым является <code class="inline">*</code>.</p>
<pre>    <span style="color: grey">Было:</span>     <span style="color: grey;"></span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">ENV</span>{FOO}
    <span style="color: grey">Стало:</span>    <span style="color: grey;"></span><span style="color: DarkOrange; font-weight: bold;">%</span><span style="color: DarkGreen;">*</span><span style="color: DarkOrange; font-weight: bold;">ENV</span>&lt;FOO&gt;</pre>

<p>Детальнее см. <a href="http://feather.perl6.nl/syn/S02.html#Names_and_Variables">[S02]"Имена и переменные"</a>.</p>
<a name="New-ways-of-referring-to-array-and-hash-elements"></a><h2 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);" >  Новые способы ссылаться на элементы массивов и хэшей</h2>
<p>Количество элементов в массиве:</p>
<pre>    <span style="color: grey">Было:</span>    <font color="#0000ff">$#array</font>+<font color="#00007f">1</font>&nbsp;<font color="#ffa500">or</font>&nbsp;<font color="#007f00">scalar</font>(<font color="#0000ff">@array</font>)
    <span style="color: grey">Стало:</span>   <span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">array</span>.<span style="color: black; font-weight: bold;">elems</span></pre>

<p>Индекс последнего элемента массива:</p>
<pre>    <span style="color: grey">Было:</span>    <font color="#0000ff">$#array</font><font color="#0000ff"></font>
    <span style="color: grey">Стало:</span>   <span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">array</span>.<span style="color: black; font-weight: bold;">end</span></pre>

<p>Таким образом, последний элемент массива:</p>
<pre>    <span style="color: grey">Было:</span>    <font color="#0000ff">$array</font>[<font color="#0000ff">$#array</font>]
    <span style="color: grey">Стало:</span>   <span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">array</span>[<span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">array</span>.<span style="color: black; font-weight: bold;">end</span>]
             <span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">array</span>[*<span style="color: DimGray;">-</span><span style="color: DarkOrange;">1</span>]              <span style="color: grey;"># beware of the "whatever"-star</span></pre>

<p>Подробнее об этом см. <a href="http://feather.perl6.nl/syn/S02.html#Built-In_Data_Types">"[S02]: "Встроенные типы данных"</a>.</p>
<a name="The-double-underscore-keywords-are-gone"></a><h2 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);" >  Удалены удвоенные символы подчеркивания ключевых слов</h2>
<pre>    <span style="color: grey;">в Perl 5            в Perl 6
    ---                 ---</span>
    <b>__LINE__</b>            <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkGreen;">?</span><span style="color: DarkBlue; font-weight: bold;">LINE</span>
    <b>__FILE__</b>            <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkGreen;">?</span><span style="color: DarkBlue; font-weight: bold;">FILE</span>
    <b>__PACKAGE__</b>         <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkGreen;">?</span><span style="color: DarkBlue; font-weight: bold;">PACKAGE</span>
    <b>__END__</b>             <span style="color: #B5A642;">=begin </span><span style="color: green;">END</span>
    <b>__DATA__ </b>           <span style="color: #B5A642;">=begin </span><span style="color: green;">DATA</span></pre>

<p>См. <a href="http://feather.perl6.nl/syn/S02.html#double-underscore_forms_are_going_away">"[S02]: Удвоенные символы подчеркивания остались в прошлом"</a> 
для получения детальной информации. В примере выше используется твигил 
<code class="inline">?</code> - он ссылается на данные, которые известны во время компиляции.</p>
<a name="Context"></a><h2 style="font-weight: bold; border-bottom: 1px solid rgb(170, 170, 170);" >  Контекст</h2>
<p>Есть еще три основных контекста - void, item (прежний скалярный тип) 
и списковый(list). Имеются дополнительные более специализированные 
контексты и операторы, принуждающие к определенному контексту.</p>
<pre>    <span style="color: DarkRed;">my</span><span style="color: DarkRed;"> </span><span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">array</span><span style="color: DarkRed;"> </span><span style="color: DimGray;">=</span> <span style="color: DarkOrange;">1</span><span style="color: DimGray;">,</span> <span style="color: DarkOrange;">2</span><span style="color: DimGray;">,</span> <span style="color: DarkOrange;">3</span>;

<span style="color: grey;">    </span><span style="color: grey;"># общий контекст элемента</span>
<span style="color: grey;">    </span><span style="color: DarkRed;">my</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">a</span><span style="color: DarkRed;"> </span><span style="color: DimGray;">=</span> <span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">array</span>; say <span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">a</span>.<span style="color: black; font-weight: bold;">WHAT</span>;<span style="color: grey;">    </span><span style="color: grey;"># печатает Array</span>

<span style="color: grey;">    </span><span style="color: grey;"># строковый контекст</span>
<span style="color: grey;">    </span>say ~<span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">array</span>;<span style="color: grey;">                    </span><span style="color: grey;"># "1 2 3"</span>

<span style="color: grey;">    </span><span style="color: grey;"># числовой контекст</span>
<span style="color: grey;">    </span>say +<span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">array</span>;<span style="color: grey;">                    </span><span style="color: grey;"># 3</span>

<span style="color: grey;">    </span><span style="color: grey;"># логический(boolean) контекст</span>
<span style="color: grey;">    </span><span style="color: DarkRed;">my</span><span style="color: DarkRed;"> </span><span style="color: DarkBlue; font-weight: bold;">$</span><span style="color: DarkBlue; font-weight: bold;">is-nonempty</span><span style="color: DarkRed;"> </span><span style="color: DimGray;">=</span> ?<span style="color: Brown; font-weight: bold;">@</span><span style="color: Brown; font-weight: bold;">array</span>;</pre>

<p>Символы <code class="inline">'</code> и <code class="inline">-</code> можно использовать в рамках идентификаторов, если они 
находятся между двумя буквенными символами.</p>]]>
        
    </content>
</entry>

</feed>

