<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ged</id>
		<title>Linuxformat - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ged"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:Contributions/Ged"/>
		<updated>2026-05-13T11:53:57Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF70:Perl._%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D1%83%D0%B5%D0%BC_%D0%BD%D0%B0%D1%88_%D0%BA%D0%BE%D0%B4</id>
		<title>LXF70:Perl. Сортируем наш код</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF70:Perl._%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D1%83%D0%B5%D0%BC_%D0%BD%D0%B0%D1%88_%D0%BA%D0%BE%D0%B4"/>
				<updated>2008-03-14T19:16:13Z</updated>
		
		<summary type="html">&lt;p&gt;Ged: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Perl. Сортируем наш код =&lt;br /&gt;
Часть 2. ''Напуганы непостижимыми операторами Perl и регулярными выражениями? Еще больше напуганы словом «непостижимые»? '''Марк Фиоретти''' ('''Marco Fioretti''') может всё объяснить!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Перед тем, как отправиться в путешествие по королевству Perl, вы должны запомнить три типа переменных: скаляр, массив и хэш. Отмеченные символом $ скаляры содержат один кусочек информации, например строку. В нашем втором руководстве мы узнаем, как работать с более сложными величинами, массивами и хэшами, а затем покажем вам настоящую черную магию Perl — регулярные выражения.&lt;br /&gt;
&lt;br /&gt;
=== Сортировка и перечисление ===&lt;br /&gt;
Вы помните, как массивы упорядочивают скаляры? Оператор списка Perl действует похожим образом. Это безымянная последовательность скаляров в круглых скобках. Хорошими вариантами использования оператора списка является присвоение значений двум или более переменным в одной инструкции или обмен значениями переменных тем или иным способом.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
($X,$Y,$Z) = ($Y,$Z,$X); # Circular shift&lt;br /&gt;
($Name,$Surname,$Phone) = ('John', 'Smith',5556791);&lt;br /&gt;
($DARTH_VADER,@JEDI) = ('Anakin Skywalker', 'Yoda', 'Obi-Wan', 'Mace Windu');&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Врезка |&lt;br /&gt;
Заголовок=Подсказка |&lt;br /&gt;
Содержание='''Подсчёт числа элементов массива'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Как можно узнать, сколько элементов содержится в массиве или хэше? Очень просто, присвоить их скалярной переменной! Поскольку она может содержать только одно число, Perl поместит туда число элементов массива. Тот же способ работает с хэшами. Функция keys возвращает массив, содержащий только ключи хэша, так что его размер можно узнать следующим образом:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
$HOW_MANY_JEDI = @JEDI;&lt;br /&gt;
$HOW_MANY_ITEMS_INTO_AN_HASH = keys %SOME_HASH;&lt;br /&gt;
&amp;lt;/source&amp;gt; |&lt;br /&gt;
Ширина=50%&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Две первые строчки говорят сами за себя. В третьей строке список из левой части присваивания состоит из скаляра ($DARTH_VADER) и именованного массива (@JEDI). Все знают, что случится после такого присвоения: на Тёмную Сторону Силы юный Энакин перейдёт в одиночестве. И поскольку вторым элементом списка является массив @JEDI, все остальные рыцари из правой части выражения попадут в него, в том же самом порядке.&lt;br /&gt;
&lt;br /&gt;
Давайте теперь посмотрим на функцию splice(), которая используется для удаления, добавления или замены элементов массива. Для начала определим несколько планет:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
@STAR_WARS_PLANETS = ('Naboo', 'Tatooine', 'Geonosis');&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Используем splice() для того, чтобы добавить Coruscant и Alderaan сразу после Tatooine:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
splice (@STAR_WARS_PLANETS, 2,0, ('Coruscant', 'Alderaan'));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Первым аргументом этой функции является имя массива, STAR_WARS_PLANETS. Затем идёт индекс элемента (считая с нуля!), с которого мы хотим начать склейку, в нашем случае это Tatooine. Третьим параметром является число элементов для удаления. Сейчас мы не хотим ничего удалять, нам надо только добавить несколько планет, поэтому в качестве третьего параметра передается «0». Последний, необязательный элемент — это список, который будет добавлен в позицию, номер которой вы только что указали. Если этот агрумента не указан, то splice() не добавит в массив ничего.&lt;br /&gt;
&lt;br /&gt;
Если вы хотите упорядочить содержимое массива в алфавитном порядке, то вам понадобится функция sort(). По умолчанию она рассматривает содержимое переданного массива как строки, даже если там содержатся числа. Например, если вы введёте в командной строке следующее выражение:&lt;br /&gt;
 perl -e &amp;quot;@A_LIST = ('Dominions', 180, 3, '10, Downing St.','Admiralty'); \&lt;br /&gt;
     print join( \&amp;quot;\n\&amp;quot;, sort @A_LIST), \&amp;quot;\n\&amp;quot;;&amp;quot;&lt;br /&gt;
то получите отсортированный по алфавиту список:&lt;br /&gt;
 10, Downing St.&lt;br /&gt;
 180&lt;br /&gt;
 3&lt;br /&gt;
 Admiralty&lt;br /&gt;
 Dominions&lt;br /&gt;
Однако функция sort() может руководствоваться и другими критериями:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
@SORTED_LIST = sort AS_I_WANT @UNORDERED_LIST;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
AS_I_WANT — это функция, принимающая два скаляра в качестве аргументов и возвращающая −1, 0 или 1 в зависимости от того, какой параметр оказался меньше согласно вашему критерию. Мы рассмотрим такие функции в последующих выпусках.&lt;br /&gt;
&lt;br /&gt;
Последнее замечание про массивы. Есть одна вещь, без которой не может жить ни один Perl-хакер, хотя она вовсе не выглядит как массив.&lt;br /&gt;
Я говорю о нашем возлюбленном STDIN, стандартном потоке ввода любой «правильной» Unix-программы. К счастью, им очень просто пользоваться. Я упомянул здесь STDIN потому, что он может быть превращен в массив одним мановением руки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
@LINES = &amp;lt;STDIN&amp;gt;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Вот так, одной единственной инструкцией вы внесли каждую строчку ввода в отдельный элемент массива @LINES. Удобно, не правда ли?&lt;br /&gt;
&lt;br /&gt;
=== Чистый хэш ===&lt;br /&gt;
В первой части нашего руководства я вам рассказывал про хэши и их концепцию индексирования доступа к одним скалярам другими скалярами (ключами). Как вы знаете, хэш состоит из ключей, связанных со своими значениями. Если у вас есть хэш, гораздо проще работать с ним с помощью ключей, а не их значений. В конце концов, если бы вы просто хотели собрать все эти значения вместе в определённом порядке, вы бы взяли обычный массив, не правда ли?&lt;br /&gt;
&lt;br /&gt;
В отличие от массивов, хэши в Perl никак не отсортированы — ни в порядке возрастания ключей, ни в порядке добавления элементов. Это значит, что к элементу хэша нельзя обращаться по его порядковому номеру, можно только по ключу. Это верно, даже если вы собрались удалить какой-то элемент хэша и его ключ. Для этого существует функция delete(), которая принимает в качестве параметра ключ элемента, подлежащего забвению. Пользоваться этой функцией необходимо, так как если вы, например, просто присвоите пустое значение соответствующему элементу хэша, то он не будет удалён, хотя значение этого элемента и станет равным null.&lt;br /&gt;
&lt;br /&gt;
Первой вещью, которую приходится делать с элементом хэша, является выяснение того, присутствует ли он в хэше, и соответствует ли его ключу какое-нибудь значение. Для этих целей в Perl существуют две функции, названные (вы уже догадались?) exists() и define(). Используют их следующим образом:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
if exists ($STAR_WARS_ACTORS{'Leia'}) { # do something...};&lt;br /&gt;
if defined ($STAR_WARS_ACTORS{'Leia'}) { # do something else...};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Первая команда выполнится, только если в хэше есть ключ 'Leia' вне зависимости от того, какое значение присвоено этому ключу. Второе выражение идёт еще дальше, оно истинно только в том случае, если в хэше есть ключ 'Leia' и если ему явно было присвоено какое-то значение.&lt;br /&gt;
&lt;br /&gt;
=== Регулярные выражения ===&lt;br /&gt;
Perl был создан для обработки большого количества текстовой информации, поэтому он имеет самый богатый набор инструментов работы с регулярными выражениями. Регулярное выражение — это описание структуры текстовой строки, созданное с помощью особого синтаксиса. Оно состоит из обычного текста и метасимволов, описывающих свойства строки. Основные метасимволы описаны в [[#Регулярные выражения: шпаргалка | Шпаргалке]] по регулярным выражениям.&lt;br /&gt;
&lt;br /&gt;
Красота и универсальность этого механизма проявляется в том, что вы можете как описать любую строку в деталях, так и дать указание скрипту найти в тексте нужные элементы и автоматически отредактировать их. Лучше всего это объяснять на примерах:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
/Jedi/&lt;br /&gt;
/\bJedi\b/&lt;br /&gt;
/^Jedi$/&lt;br /&gt;
/Jedi/i&lt;br /&gt;
/Jedi|Sith/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Врезка |&lt;br /&gt;
Заголовок=Как разрушить свою жизнь регулярными выражениями |&lt;br /&gt;
Содержание=Perl, вероятно, содержит гораздо больше регулярных выражений, чем все другие языки программирования. Для того, чтобы своими глазами увидеть, насколько мощными и неудобными они могут быть, посмотрите на самое длинное из всех, что я видел — http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html. Говорят, что оно проверяет правильность адреса e-mail, но я не могу это проверить. Если хотите научиться создавать такие же, прочитайте книгу Джефри Фридла «Регулярные выражения» (Jeffrey Friedl, «Mastering Regular expressions», O’Reilly, 2002).|&lt;br /&gt;
Ширина=50%}}&lt;br /&gt;
&lt;br /&gt;
Первое выражение будет истинно, если в анализируемом тексте содержится подстрока Jedi, возможно в виде части более длинного слова. Если вам нужно найти только отдельное слово «Jedi», нужно обрамить его символами границы слова (\b), как это было сделано во втором выражении. Третье выражение еще более строгое, оно требует чтобы Jedi с находилось одновременно в начале (^) и в конце ($) строки, то есть, другими словами, чтобы «Jedi» было единственным словом. Регулярные выражения Perl зависят от регистра символов, так что если вам не хочется писать что-то вроде JeDi|jedi|Jedi, то используйте модификатор i, как это сделано в четвёртом примере. Последнее выражение будет истинным, если в тексте встретится хотя бы одно вхождение Jedi или Sith.&lt;br /&gt;
&lt;br /&gt;
Всё это ценные знания, так как после того, как Perl смог распознать текст, описываемый регулярным выражением, он может выполнить любые действия, какие вы захотите, или сможет изменить найденную строку, руководствуясь вашими инструкциями. Вот соответствующие выражения:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
if ($STRING =~ m/some regex here/) {do something}&lt;br /&gt;
$STRING =~ s/some regex here/some other text pattern/;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Собственно регулярные выражения обрамлены косыми чертами (/). Строки связаны с ними при помощи оператора =~. Когда перед косыми чертами присутствует буква m, это значит: «Соответствует ли строка регулярному выражению?». Когда вместо m наличествует s, и добавлен какой-то текст между второй и третьей косыми чертами, это значит «Взять $STRING, и заменить в ней то, что соответствует регулярному выражению, на строку, взятую из последней пары черточек».&lt;br /&gt;
&lt;br /&gt;
Регулярные выражения могут содержать скаляры и сохраняют результаты своей работы в специальных переменных. Так что это очень гибкий инструмент.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
$JEDI = ‘Anakin’;&lt;br /&gt;
s/Master $JEDI/the future Darth Vader/g;&lt;br /&gt;
s/Master (Obi-Wan|Yoda)/the Jedi Knight $1/;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
A+ # Одна или несколько букв A&lt;br /&gt;
\+ # один знак &amp;quot;+&amp;quot;&lt;br /&gt;
\++ # Один или несколько знаков &amp;quot;+&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Тут мы начинаем с того, что заменяем все фразу «Master Anakin» на «the future Darth Vader» (именно «Anakin» потому, что при обработке регулярного выражения переменная $JEDI будет заменена её текущим значением). Модификатор g обозначает, что замена должна быть глобальной, без него изменение произошло бы только с самым первым вхождением искомой фразы.&lt;br /&gt;
&lt;br /&gt;
Второе регулярное выражение демонстрирует еще одну интересную особенность. Оно находит все случаи, в которых перед именами «Obi-Wan» или «Yoda» стоит слово «Master». Поскольку имена взяты в круглые скобки, после удачного поиска они не забываются, а сохраняются в специальной переменной $1, так что одно и то же регулярное выражение может заменить 'Master Yoda' на 'the Jedi Knight Yoda', а 'Master Obi-Wan' на 'the Jedi Knight Obi-Wan'. Если нужно запомнить более одного элемента регулярного выражения, используются переменные $2, $3 и так далее до $9.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Регулярные выражения: шпаргалка ===&lt;br /&gt;
Здесь приведён список основных метасимволов, используемых в регулярных выражениях Perl. Скопируйте его и держите поближе к клавиатуре, он действительно помогает сэкономить время.&lt;br /&gt;
* . — Любой символ за исключением перевода строки&lt;br /&gt;
* ^ — Начало строки&lt;br /&gt;
* $ — Конец строки&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; — Ноль или более предыдущих символов&lt;br /&gt;
* + — Один или более предыдущий символ&lt;br /&gt;
* ? — Ноль или один предыдущий символ&lt;br /&gt;
* \n — Перевод строки&lt;br /&gt;
* \t — Табуляция&lt;br /&gt;
* \w — Числа и алфавитные символы, вне зависимости от регистра&lt;br /&gt;
* \W — Все символы, кроме букв или цифр&lt;br /&gt;
* \d — Старые добрые цифры: 0, 1 и так до 9.&lt;br /&gt;
* \D — Всё, кроме цифр.&lt;br /&gt;
* \s — Пробельные символы: пробел, табуляция, перевод строки.&lt;br /&gt;
* \S — Любой не пробельный символ.&lt;br /&gt;
* \b — Граница слова.&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; — Выбор из двух вариантов (например A&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;B).&lt;br /&gt;
* [] — Квадратные скобки определяют диапазон символов.&lt;br /&gt;
* () — Круглые скобки сохраняют соответствующую им подстроку.&lt;br /&gt;
Примечания: Когда вам необходимо вставить в регулярное выражение один из этих символов в его буквальном смысле, например знак «+», нужно поставить перед ним обратную косую черту (\).&lt;br /&gt;
&lt;br /&gt;
[[Категория:Учебники]]&lt;br /&gt;
[[Категория:Первые шаги]]&lt;br /&gt;
[[Категория:Perl]]&lt;/div&gt;</summary>
		<author><name>Ged</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF70:Perl._%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B8_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B</id>
		<title>LXF70:Perl. Переменные и операторы</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF70:Perl._%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B8_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B"/>
				<updated>2008-03-14T18:50:59Z</updated>
		
		<summary type="html">&lt;p&gt;Ged: jobs(мн.ч.) != должность(ед.ч.) (к тому же дальше идет &amp;quot;значением элемента jobs является массив&amp;quot;)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Perl. Переменные и операторы =&lt;br /&gt;
Часть 1. ''В «эпизоде 1» нашей серии '''Марко Фиоретти''' ('''Marco Fioretti''') объясняет основные компоненты языка Perl.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Врезка |&lt;br /&gt;
Заголовок=Подсказка |&lt;br /&gt;
Содержание='''Руководства по Perl'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Perl — зрелый язык, и его пользователи имеют доступ к большому количеству различной документации. Книга Тома Кристиансена, Джона Орванта, Ларри Уолла «Программирование на Perl» (Programming Perl by Larry Wall, Jon Orwant and tom Christiansen, O’Reilly) является прекрасным началом, если вам нужна более подробная информация — к вашим услугам http://perl.oreilly.com. Для доступа к онлайновой документации, полной коллекции модулей, руководств и примеров посетите Comprehensive Perl Archive Network (http://www.cpan.org). Отдельные вопросы можно задавать в новостной группе [http://groups.google.com/group/comp.lang.perl.misc comp.lang.perl.misc].|&lt;br /&gt;
Ширина=250px}}&lt;br /&gt;
&lt;br /&gt;
Языки сценариев стали так популярны потому, что ценой небольшого падения производительности они берут на себя такую скучную работу, как определение переменных, выделение памяти, возвращение её операционной системе и так далее. Придуманный в конце восьмидесятых Practical extraction and Report Language или Perl исходно предназначался для работы с большими объёмами текста. И хотя он не является самым популярным языком сценариев двадцать первого века, он остаётся лучшим инструментом для решения многих задач. Знаете ли вы, например, что Perl спас проект «Геном человека» (Human Genome Project)? Целиком эту историю можно прочитать по адресу: http://bioperl.org/GetStarted/tpj_ls_bio.html.&lt;br /&gt;
&lt;br /&gt;
В девяностые годы Perl получил широкое распространение, благодаря своему умению генерировать html-страницы. Сейчас эту нишу занял PHP, однако у Perl всё еще есть много поклонников, а так же большая база унаследованного кода, расширений (называемых модулями) и документации, которую легко приспособить для любых нужд.&lt;br /&gt;
&lt;br /&gt;
Вам вовсе не обязательно быть системным администратором или профессиональным программистом для того, чтобы получить пользу от этого языка. Perl может помочь, когда вам нужно быстро обработать текст или даже картинки. Независимо от того, находятся ли эти файлы на вашем жестком диске или в интернете, Perl обладает модулями, способными прозрачно работать и с тем, и с другим.&lt;br /&gt;
&lt;br /&gt;
=== Используй переменные, Люк! ===&lt;br /&gt;
Почти все основные правила синтаксиса Perl (такие как правила обрамления строк кавычками) очень напоминают или даже идентичны правилам оболочек Unix. Документации по оболочкам существует огромное количество, она не ограничивается учебником из предыдущих выпусков Linux Format. Поэтому, так как общую информацию можно найти в других местах, в эта серия сосредоточена на специфических особенностях языка, начиная с неудобочитаемых переменных. Я нежно люблю Perl, и использую его изо дня в день для решения самых разных задач. Но я должен предупредить вас: критики говорят, что это единственный язык, код на котором выглядит одинаково до и после&lt;br /&gt;
зашифровки. и если вы не знаете структуры программы на Perl, то так для вас и будет. Давайте рассмотрим компоненты этого языка. Первая вещь, которая раздражает новичков, когда они смотря на Perl-код — это тот факт, что все переменные имеют неалфавитный префикс. Клевещут, что из-за этого экран заполняется нечитаемым мусором. Но мне эти маркеры кажутся очень полезными, так как они сразу же сообщают о структуре соответствующей переменной и о том, что я могу сделать с нею. Вот пример:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;$NAMe = 'Johnny';&lt;br /&gt;
$AGE = 33;&lt;br /&gt;
@BOOK = ('Introduction', 'First Chapter', 'Second Chapter');&lt;br /&gt;
%STAR_WARS_FAMILY = ('Father', 'Anakin',&lt;br /&gt;
               'Mother', 'Padme',&lt;br /&gt;
               'Male twin', 'Luke',&lt;br /&gt;
               'Female twin', 'Leia');&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Первые две переменные — это скаляры. Скаляр Perl способен содержать один кусочек информации, будь то строка, число или ссылка. Их имена всегда начинаются с символа доллара ($). Строковые скаляры всегда заключаются в единичные('), двойные(&amp;quot;) или обратные кавычки(`), так же как и их эквиваленты из оболочек Unix, а числа, по аналогии, обходятся без кавычек.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
$A = 'Hello';&lt;br /&gt;
$B = '$A Johnny!';&lt;br /&gt;
$C = &amp;quot;$A Johnny!&amp;quot;;&lt;br /&gt;
$D = `ls /usr/bin`;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Здесь переменная $b содержит именно то, что мы указали в коде, $C (благодаря двойным кавычкам) равняется «Hello Johnny!», а $D, поскольку для его значения использовались обратные кавычки, содержит результат выполнения команды ls /usr/bin/.&lt;br /&gt;
&lt;br /&gt;
Упорядоченный список скаляров, проиндексированный номерами, называется массивом и начинается с символа @. Он полезен для хранения чего-либо в последовательном порядке. Один элемент массива обозначается так: символ $, имя массива и номер элемента (начиная с 0) в квадратных скобках. В приведенном выше примере, второй элемент массива @book — это $book[1] и он равен «First Chapter».&lt;br /&gt;
&lt;br /&gt;
Ассоциативные массивы, или коротко говоря хэши (hash) — это последняя из основных категорий переменных языка Perl. Хэш — это группа скаляров, которые проиндексированы, или другими словам к которым можно обратиться не по номерам, а при помощи других скаляров, так называемых ключей. Другими словами, Perl позволяет сказать нам без излишних синтаксических конструкций, что в «семье звёздных войн»(STAR_WARS_FAMILY) отцом (Father) является Энакин (Anakin):$sTar_Wars_FamiLy{‘Father’} = ‘anakin’. Каждый ключ или значение хэша могут быть скаляром любого типа.&lt;br /&gt;
&lt;br /&gt;
Итак, даже самый короткий скрипт на Perl может быть заполнен символами $, @ и %. Но при этом мы можем создавать очень сложные структуры данных, используя минимальное количество префиксов, почти не заботясь об именовании, и при этом всегда понимая, каков смысл каждого кусочка. Это возможно благодаря мощной и немного опасной возможности вкладывать массивы и хэши друг в друга:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;%STAR_WARS_FAMILY = (&lt;br /&gt;
    'Father', {'Name', 'Anakin',&lt;br /&gt;
             'Height (cm)', 210,&lt;br /&gt;
             'jobs', ['Slave', 'Podracer pilot', 'Jedi Knight', 'Darth Vader']},&lt;br /&gt;
    'Mother', {} # другие такие же данные...&lt;br /&gt;
 );&lt;br /&gt;
 print &amp;quot;$STAR_WARS_FAMILY{'Father'}{'jobs'}[2]\n&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Это хэш, в котором каждый из элементов первого уровня является в свою очередь хэшем, содержащим элементы name (имя), Height (рост) and jobs (занятия), причём значением элемента jobs является массив. Обратите внимание, как мы различаем массивы и хэши при помощи квадратных и фигурных скобок, даже если они вложены друг в друга. В результате у нас получится, что оператор print в последней строке отобразит строчку Jedi knight (Джедай).&lt;br /&gt;
&lt;br /&gt;
Существует одна встроенная скалярная переменная, о которой вам надо знать. иногда программисты на Perl забывают указать, какую переменную они имели ввиду, например:&lt;br /&gt;
 print if условие&lt;br /&gt;
Эта инструкция указывает, что надо выполнять оператор print при некотором условии, но не говорит, что именно надо напечатать — значение какой переменной? В этом случае интерпретатор Perl использует текущее значение переменной по умолчанию, $_. Её значение определяются предыдущими выражениями, или она может выступать в качестве переменной цикла. Если вы помните об этой особенности, большое количество кода на Perl покажется вам гораздо понятнее.&lt;br /&gt;
&lt;br /&gt;
=== Помоги мне, Падме ===&lt;br /&gt;
Perl понимает большое число разных операторов. Некоторые из них применимы только к какому-то одному классу переменных, будь то скаляры, массивы или хэши, тогда как другие изменяют свой смысл в зависимости от того, к какой переменной они относятся. В этой статье осталось место только для нескольких вариантов. Основные числовые операторы имеют тот же смысл, что и в языке C.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
$A =10 * 7.5 - 16;&lt;br /&gt;
$B = $A % 4; # деление по модулю 4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
и номера, и строки можно увеличивать при помощи оператора инкремента&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
$A = 4;&lt;br /&gt;
$B = 'ab';&lt;br /&gt;
$A++; # теперь $A равен 5...&lt;br /&gt;
$B++; # а $B равен 'ac'!!&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Не правда ли это здорово, что буквы тоже можно инкрементировать? Вы также можете соединять строки из нескольких частей:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
$FIRST_NAME = 'Luke';&lt;br /&gt;
$LAST_NAME = 'Skywalker';&lt;br /&gt;
$COMPLETE_NAME = $FIRST_NAME.' '.$LAST_NAME;&lt;br /&gt;
$REPEATED_NAME = $FIRST_NAME x 3;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Теперь $COMPLETE_NAME равняется «Luke Skywalker», a $REPEATED_NAME содержит «LukeLukeLuke».&lt;br /&gt;
&lt;br /&gt;
Скаляры можно сравнивать между собой многими разными способами. Давайте попробуем некоторые из них и посмотрим, что получится:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
$A &amp;lt; $B; # число $A больше, чем число $B?&lt;br /&gt;
$A lt $B; # строка $A располагается в словаре до $B?&lt;br /&gt;
$A &amp;lt;=&amp;gt; $B; # какое число меньше, $A или $B?&lt;br /&gt;
$A cmp $B; # какая строка располагается раньше, $A или $B?&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Некоторые сравнения имеют смысл, только если обе переменные являются или строками, или числами. Например, оператор 'Эта строка в алфавитном порядка стоит перед другой', всегда используется для сортировки в алфавитном порядке. Даже если одна или обе сравниваемые переменные содержат только числа, использование строковых операторов сравнения приведёт к сортировке в алфавитном порядке. Чтобы увидеть это в действии, введите следующую команду в командной строке и проверьте, какие из операторов сравнения вернут истину?.&lt;br /&gt;
  perl -e 'if (&amp;quot;dude&amp;quot; lt &amp;quot;hello&amp;quot;) {print &amp;quot;dude!\n&amp;quot;;} if (&amp;quot;dude&amp;quot; &amp;lt; &amp;quot;hello&amp;quot;) {print &amp;quot;Hello!\n&amp;quot;;}'&lt;br /&gt;
Фактически только первый тест должен завершиться успешно. Его смысл таков: «Верно ли, что строки переданы в алфавитном порядке?». Во втором операторе, используя &amp;lt; вместо lt, мы спрашиваем Perl, правда ли что число «dude» меньше числа «hello»? Конечно, это абсурдный вопрос, и ответ на него предсказуемо непредсказуемый.&lt;br /&gt;
&lt;br /&gt;
Еще одна особенность Perl, о которой стоит знать — это его постоянные преобразования строк в числа и обратно, в зависимости от контекста. Они могут быть огромным подспорьем или же постоянным источником недоразумений, в зависимости от того как часто вы забываете про это.&lt;br /&gt;
&lt;br /&gt;
Я думаю, что на этом достаточно разговоров про скалярные операторы. Когда речь заходит об операторах, работающих с массивами, Perl может сделать многое. Приведённый ниже пример показывает, как отдельный элемент может быть добавлен к массиву, а затем удалён оттуда:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
@Jedi = (&amp;quot;Yoda&amp;quot;, &amp;quot;Obi Wan&amp;quot;); # несколько рыцарей-джедаев&lt;br /&gt;
push(@Jedi, &amp;quot;Anakin&amp;quot;); # юный Энакин встаёт в строй&lt;br /&gt;
$gone_to_the_dark_side = pop(@Jedi); # Энакин уже не джедай&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Существуют специальные операторы для работы с хэшами. Инструкции, подобные следующим, встречаются в коде на Perl очень часто:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
while (($Actor, $Character) = each(%STAR_WARS_CAST));&lt;br /&gt;
# или даже&lt;br /&gt;
@ACTORS_ONLY = keys(%STAR_WARS_CAST);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Первая строка будет циклически перебирать элементы хэша %STAR_WARS_CAST, каждый раз присваивая ключ очередного элемента и его значение паре скаляров $Actor и $Character, которые вы затем можете обработать, как вам захочется. Оператор key используется в том случае, когда нужно сохранить только ключи хэша в отдельном массиве и работать с ними независимо от значений.&lt;br /&gt;
&lt;br /&gt;
В Perl существует ещё очень много операторов, но у меня не осталось места для их описания. Однако того, что мы уже успели рассмотреть, с лихвой хватит для понимания структуры простого сценария. Свою силу и истинную ценность Perl особенно ярко проявляет в работе с массивами и хэшами.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Учебники]]&lt;br /&gt;
[[Категория:Первые шаги]]&lt;br /&gt;
[[Категория:Perl]]&lt;/div&gt;</summary>
		<author><name>Ged</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF70:Perl._%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B8_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B</id>
		<title>LXF70:Perl. Переменные и операторы</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF70:Perl._%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B8_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B"/>
				<updated>2008-03-14T18:30:35Z</updated>
		
		<summary type="html">&lt;p&gt;Ged: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Perl. Переменные и операторы =&lt;br /&gt;
Часть 1. ''В «эпизоде 1» нашей серии '''Марко Фиоретти''' ('''Marco Fioretti''') объясняет основные компоненты языка Perl.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Врезка |&lt;br /&gt;
Заголовок=Подсказка |&lt;br /&gt;
Содержание='''Руководства по Perl'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Perl — зрелый язык, и его пользователи имеют доступ к большому количеству различной документации. Книга Тома Кристиансена, Джона Орванта, Ларри Уолла «Программирование на Perl» (Programming Perl by Larry Wall, Jon Orwant and tom Christiansen, O’Reilly) является прекрасным началом, если вам нужна более подробная информация — к вашим услугам http://perl.oreilly.com. Для доступа к онлайновой документации, полной коллекции модулей, руководств и примеров посетите Comprehensive Perl Archive Network (http://www.cpan.org). Отдельные вопросы можно задавать в новостной группе [http://groups.google.com/group/comp.lang.perl.misc comp.lang.perl.misc].|&lt;br /&gt;
Ширина=250px}}&lt;br /&gt;
&lt;br /&gt;
Языки сценариев стали так популярны потому, что ценой небольшого падения производительности они берут на себя такую скучную работу, как определение переменных, выделение памяти, возвращение её операционной системе и так далее. Придуманный в конце восьмидесятых Practical extraction and Report Language или Perl исходно предназначался для работы с большими объёмами текста. И хотя он не является самым популярным языком сценариев двадцать первого века, он остаётся лучшим инструментом для решения многих задач. Знаете ли вы, например, что Perl спас проект «Геном человека» (Human Genome Project)? Целиком эту историю можно прочитать по адресу: http://bioperl.org/GetStarted/tpj_ls_bio.html.&lt;br /&gt;
&lt;br /&gt;
В девяностые годы Perl получил широкое распространение, благодаря своему умению генерировать html-страницы. Сейчас эту нишу занял PHP, однако у Perl всё еще есть много поклонников, а так же большая база унаследованного кода, расширений (называемых модулями) и документации, которую легко приспособить для любых нужд.&lt;br /&gt;
&lt;br /&gt;
Вам вовсе не обязательно быть системным администратором или профессиональным программистом для того, чтобы получить пользу от этого языка. Perl может помочь, когда вам нужно быстро обработать текст или даже картинки. Независимо от того, находятся ли эти файлы на вашем жестком диске или в интернете, Perl обладает модулями, способными прозрачно работать и с тем, и с другим.&lt;br /&gt;
&lt;br /&gt;
=== Используй переменные, Люк! ===&lt;br /&gt;
Почти все основные правила синтаксиса Perl (такие как правила обрамления строк кавычками) очень напоминают или даже идентичны правилам оболочек Unix. Документации по оболочкам существует огромное количество, она не ограничивается учебником из предыдущих выпусков Linux Format. Поэтому, так как общую информацию можно найти в других местах, в эта серия сосредоточена на специфических особенностях языка, начиная с неудобочитаемых переменных. Я нежно люблю Perl, и использую его изо дня в день для решения самых разных задач. Но я должен предупредить вас: критики говорят, что это единственный язык, код на котором выглядит одинаково до и после&lt;br /&gt;
зашифровки. и если вы не знаете структуры программы на Perl, то так для вас и будет. Давайте рассмотрим компоненты этого языка. Первая вещь, которая раздражает новичков, когда они смотря на Perl-код — это тот факт, что все переменные имеют неалфавитный префикс. Клевещут, что из-за это экран заполняется нечитаемым мусором. Но мне эти маркеры кажутся очень полезными, так как они сразу же сообщают о структуре соответствующей переменной и о том, что я могу сделать с нею. Вот пример:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;$NAMe = 'Johnny';&lt;br /&gt;
$AGE = 33;&lt;br /&gt;
@BOOK = ('Introduction', 'First Chapter', 'Second Chapter');&lt;br /&gt;
%STAR_WARS_FAMILY = ('Father', 'Anakin',&lt;br /&gt;
               'Mother', 'Padme',&lt;br /&gt;
               'Male twin', 'Luke',&lt;br /&gt;
               'Female twin', 'Leia');&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Первые две переменные — это скаляры. Скаляр Perl способен содержать один кусочек информации, будь то строка, число или ссылка. Их имена всегда начинаются с символа доллара ($). Строковые скаляры всегда заключаются в единичные('), двойные(&amp;quot;) или обратные кавычки(`), так же как и их эквиваленты из оболочек Unix, а числа, по аналогии, обходятся без кавычек.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
$A = 'Hello';&lt;br /&gt;
$B = '$A Johnny!';&lt;br /&gt;
$C = &amp;quot;$A Johnny!&amp;quot;;&lt;br /&gt;
$D = `ls /usr/bin`;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Здесь переменная $b содержит именно то, что мы указали в коде, $C (благодаря двойным кавычкам) равняется «Hello Johnny!», а $D, поскольку для его значения использовались обратные кавычки, содержит результат выполнения команды ls /usr/bin/.&lt;br /&gt;
&lt;br /&gt;
Упорядоченный список скаляров, проиндексированный номерами, называется массивом и начинается с символа @. Он полезен для хранения чего-либо в последовательном порядке. Один элемент массива обозначается так: символ $, имя массива и номер элемента (начиная с 0) в квадратных скобках. В приведенном выше примере, второй элемент массива @book — это $book[1] и он равен «First Chapter».&lt;br /&gt;
&lt;br /&gt;
Ассоциативные массивы, или коротко говоря хэши (hash) — это последняя из основных категорий переменных языка Perl. Хэш — это группа скаляров, которые проиндексированы, или другими словам к которым можно обратиться не по номерам, а при помощи других скаляров, так называемых ключей. Другими словами, Perl позволяет сказать нам без излишних синтаксических конструкций, что в «семье звёздных войн»(STAR_WARS_FAMILY) отцом (Father) является Энакин (Anakin):$sTar_Wars_FamiLy{‘Father’} = ‘anakin’. Каждый ключ или значение хэша могут быть скаляром любого типа.&lt;br /&gt;
&lt;br /&gt;
Итак, даже самый короткий скрипт на Perl может быть заполнен символами $, @ и %. Но при этом мы можем создавать очень сложные структуры данных, используя минимальное количество префиксов, почти не заботясь об именовании, и при этом всегда понимая, каков смысл каждого кусочка. Это возможно благодаря мощной и немного опасной возможности вкладывать массивы и хэши друг в друга:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;%STAR_WARS_FAMILY = (&lt;br /&gt;
    'Father', {'Name', 'Anakin',&lt;br /&gt;
             'Height (cm)', 210,&lt;br /&gt;
             'jobs', ['Slave', 'Podracer pilot', 'Jedi Knight', 'Darth Vader']},&lt;br /&gt;
    'Mother', {} # другие такие же данные...&lt;br /&gt;
 );&lt;br /&gt;
 print &amp;quot;$STAR_WARS_FAMILY{'Father'}{'jobs'}[2]\n&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Это хэш, в котором каждый из элементов первого уровня является в свою очередь хэшем, содержащим элементы name (имя), Height (рост) and jobs (должность), причём значением элемента jobs является массив. Обратите внимание, как мы различаем массивы и хэши при помощи квадратных и фигурных скобок, даже если они вложены друг в друга. В результате у нас получится, что оператор print в последней строке отобразит строчку Jedi knight (Джедай).&lt;br /&gt;
&lt;br /&gt;
Существует одна встроенная скалярная переменная, о которой вам надо знать. иногда программисты на Perl забывают указать, какую переменную они имели ввиду, например:&lt;br /&gt;
 print if условие&lt;br /&gt;
Эта инструкция указывает, что надо выполнять оператор print при некотором условии, но не говорит, что именно надо напечатать — значение какой переменной? В этом случае интерпретатор Perl использует текущее значение переменной по умолчанию, $_. Её значение определяются предыдущими выражениями, или она может выступать в качестве переменной цикла. Если вы помните об этой особенности, большое количество кода на Perl покажется вам гораздо понятнее.&lt;br /&gt;
&lt;br /&gt;
=== Помоги мне, Падме ===&lt;br /&gt;
Perl понимает большое число разных операторов. Некоторые из них применимы только к какому-то одному классу переменных, будь то скаляры, массивы или хэши, тогда как другие изменяют свой смысл в зависимости от того, к какой переменной они относятся. В этой статье осталось место только для нескольких вариантов. Основные числовые операторы имеют тот же смысл, что и в языке C.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
$A =10 * 7.5 - 16;&lt;br /&gt;
$B = $A % 4; # деление по модулю 4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
и номера, и строки можно увеличивать при помощи оператора инкремента&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
$A = 4;&lt;br /&gt;
$B = 'ab';&lt;br /&gt;
$A++; # теперь $A равен 5...&lt;br /&gt;
$B++; # а $B равен 'ac'!!&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Не правда ли это здорово, что буквы тоже можно инкрементировать? Вы также можете соединять строки из нескольких частей:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
$FIRST_NAME = 'Luke';&lt;br /&gt;
$LAST_NAME = 'Skywalker';&lt;br /&gt;
$COMPLETE_NAME = $FIRST_NAME.' '.$LAST_NAME;&lt;br /&gt;
$REPEATED_NAME = $FIRST_NAME x 3;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Теперь $COMPLETE_NAME равняется «Luke Skywalker», a $REPEATED_NAME содержит «LukeLukeLuke».&lt;br /&gt;
&lt;br /&gt;
Скаляры можно сравнивать между собой многими разными способами. Давайте попробуем некоторые из них и посмотрим, что получится:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
$A &amp;lt; $B; # число $A больше, чем число $B?&lt;br /&gt;
$A lt $B; # строка $A располагается в словаре до $B?&lt;br /&gt;
$A &amp;lt;=&amp;gt; $B; # какое число меньше, $A или $B?&lt;br /&gt;
$A cmp $B; # какая строка располагается раньше, $A или $B?&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Некоторые сравнения имеют смысл, только если обе переменные являются или строками, или числами. Например, оператор 'Эта строка в алфавитном порядка стоит перед другой', всегда используется для сортировки в алфавитном порядке. Даже если одна или обе сравниваемые переменные содержат только числа, использование строковых операторов сравнения приведёт к сортировке в алфавитном порядке. Чтобы увидеть это в действии, введите следующую команду в командной строке и проверьте, какие из операторов сравнения вернут истину?.&lt;br /&gt;
  perl -e 'if (&amp;quot;dude&amp;quot; lt &amp;quot;hello&amp;quot;) {print &amp;quot;dude!\n&amp;quot;;} if (&amp;quot;dude&amp;quot; &amp;lt; &amp;quot;hello&amp;quot;) {print &amp;quot;Hello!\n&amp;quot;;}'&lt;br /&gt;
Фактически только первый тест должен завершиться успешно. Его смысл таков: «Верно ли, что строки переданы в алфавитном порядке?». Во втором операторе, используя &amp;lt; вместо lt, мы спрашиваем Perl, правда ли что число «dude» меньше числа «hello»? Конечно, это абсурдный вопрос, и ответ на него предсказуемо непредсказуемый.&lt;br /&gt;
&lt;br /&gt;
Еще одна особенность Perl, о которой стоит знать — это его постоянные преобразования строк в числа и обратно, в зависимости от контекста. Они могут быть огромным подспорьем или же постоянным источником недоразумений, в зависимости от того как часто вы забываете про это.&lt;br /&gt;
&lt;br /&gt;
Я думаю, что на этом достаточно разговоров про скалярные операторы. Когда речь заходит об операторах, работающих с массивами, Perl может сделать многое. Приведённый ниже пример показывает, как отдельный элемент может быть добавлен к массиву, а затем удалён оттуда:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
@Jedi = (&amp;quot;Yoda&amp;quot;, &amp;quot;Obi Wan&amp;quot;); # несколько рыцарей-джедаев&lt;br /&gt;
push(@Jedi, &amp;quot;Anakin&amp;quot;); # юный Энакин встаёт в строй&lt;br /&gt;
$gone_to_the_dark_side = pop(@Jedi); # Энакин уже не джедай&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Существуют специальные операторы для работы с хэшами. Инструкции, подобные следующим, встречаются в коде на Perl очень часто:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
while (($Actor, $Character) = each(%STAR_WARS_CAST));&lt;br /&gt;
# или даже&lt;br /&gt;
@ACTORS_ONLY = keys(%STAR_WARS_CAST);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Первая строка будет циклически перебирать элементы хэша %STAR_WARS_CAST, каждый раз присваивая ключ очередного элемента и его значение паре скаляров $Actor и $Character, которые вы затем можете обработать, как вам захочется. Оператор key используется в том случае, когда нужно сохранить только ключи хэша в отдельном массиве и работать с ними независимо от значений.&lt;br /&gt;
&lt;br /&gt;
В Perl существует ещё очень много операторов, но у меня не осталось места для их описания. Однако того, что мы уже успели рассмотреть, с лихвой хватит для понимания структуры простого сценария. Свою силу и истинную ценность Perl особенно ярко проявляет в работе с массивами и хэшами.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Учебники]]&lt;br /&gt;
[[Категория:Первые шаги]]&lt;br /&gt;
[[Категория:Perl]]&lt;/div&gt;</summary>
		<author><name>Ged</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF70:%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5</id>
		<title>LXF70:Сравнение</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF70:%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5"/>
				<updated>2008-03-10T12:07:11Z</updated>
		
		<summary type="html">&lt;p&gt;Ged: орфография&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
'' '''Том Вилкинсон''' ('''Tom Wilkinson''') решил проверить широко распространённую в LXF теорию о том, что в наше время невозможно найти приличный текстовый редактор.''&lt;br /&gt;
&lt;br /&gt;
Если Вы используете Linux, то в какой-то момент вам обязательно потребуется текстовый редактор, для написания кода или же просто для правки конфигурационных файлов. Таких редакторов бесчисленное множество, причём все ведут себя по-разному, имеют свои слабые и сильные стороны.&lt;br /&gt;
&lt;br /&gt;
В этом месяце мы протестировали 8 самых популярных редакторов. Многие из них предлагают на выбор как текстовый, так и графический интерфейсы пользователя и предоставляют разнообразные функции, самыми ценными из которых являются проверка орфографии, подсветка синтаксиса и автоматические отступы.&lt;br /&gt;
&lt;br /&gt;
Текстовые редакторы отличаются от текстовых процессоров своим предназначением, хотя их функциональность и инструменты часто пересекаются. Текстовые процессоры нужны, в первую очередь, для создания и форматирования текстовых документов. Редакторы же должны суметь прочитать и изменить произвольный текстовый файл, поэтому их функции сосредоточены вокруг&lt;br /&gt;
манипуляций с текстом. Форматирование и окончательный вывод остаются при этом на совести web-браузеров, компилятора LateX или других приложений, преобразующих сырой текст в законченный документ.&lt;br /&gt;
&lt;br /&gt;
Многие текстовые редакторы предоставляют функции, особенно полезные для программистов. Подсветка синтаксиса и автоматические отступы – это, пожалуй, самые важные из инструментов такого рода. Они позволяют с одного взгляда понять, что введённый код в общих чертах корректен, что все блоки правильно вложены друг в друга и не содержат очевидных ошибок.&lt;br /&gt;
&lt;br /&gt;
Подсветка синтаксиса ярко выделяет ключевые слова, а также показывает различными цветами имена переменных и данные. Кроме того, цветами могут выделяться переменные разных типов или вызовы функций. автоматические отступы помогают увидеть каждый блок кода по отдельности, вложенные блоки отодвигаются дальше, что существенно упрощает чтение. Конечно, это может быть полезно только в том случае, если вы согласны с тем, каким способом расставляет отступы программа, так как стилей форматирования кода существует столько же, сколько и&lt;br /&gt;
программистов. Хороший редактор позволит вам выбрать ваш собственный стиль.&lt;br /&gt;
&lt;br /&gt;
Еще одно важное обстоятельство – способность редактора работать в текстовой консоли. В случае возникновения серьёзных проблем с системой графическая оболочка может оказаться недоступна. В этой ситуации редактор, способный запускаться в текстовом режиме, будет просто необходим.&lt;br /&gt;
&lt;br /&gt;
В конце мы посмотрим, насколько трудно изучить тот или иной редактор. Самые простые из них легки в освоении, но потом ими будет тяжело пользоваться, кроме как для самых простых вещей. Более сложные редакторы могут запросто выполнять самые нетривиальные преобразования, но при этом отпугивать новичков сложностью и неинтуитивностью интерфейса. Если вы не можете воспользоваться редактором на практике, то не имеет значения, насколько он хорош в теории.&lt;br /&gt;
&lt;br /&gt;
===Участники сравнения===&lt;br /&gt;
* CoolEdit&lt;br /&gt;
* gedit&lt;br /&gt;
* GNU Emacs&lt;br /&gt;
* Kate&lt;br /&gt;
* nano&lt;br /&gt;
* NEdit&lt;br /&gt;
* Minimum Profit&lt;br /&gt;
* Vim&lt;br /&gt;
&lt;br /&gt;
===nano===&lt;br /&gt;
Редактор командной строки, включенный во многие дистрибутивы&lt;br /&gt;
* Версия: 1.2.4 &lt;br /&gt;
* Web: [http://www.nano-editor.org www.nano-editor.org]&lt;br /&gt;
* Цена: бесплатно, по лицензии GPL&lt;br /&gt;
&lt;br /&gt;
Текстовый редактор nano, выпущенный Фондом свободного программного обеспечения, позиционируется как свободная замена популярному редактору Pico, разработанному в университете Вашингтона. Его интерфейс будет знаком любому работавшему с текстовым клиентом электронной почты Pine, который основан на Pico. Хотя исходный код Pico общедоступен, он не считается open-source редактором, поскольку любой, кто захочет разработать на основе Pico свою программу, должен сначала спросить разрешения у университета Вашингтона. Конечно, это менее свободная лицензия, чем GPL, поэтому под влиянием разработчиков таких дистрибутивов, как Debian, и был создан nano.&lt;br /&gt;
&lt;br /&gt;
Nano – один из самых простых текстовых редакторов. у него нет поддержки таких полезных для программистов функций, как поиск парных скобок или подсветка синтаксиса. Но, будучи редактором простого текста, он прекрасно справляется со своей задачей. Основные клавиатурные команды, выполняющие базовые действия, перечислены в нижней части экрана, и этого более чем достаточно для редактирования конфигурационного файла без путаницы в режимах или в миллионах команд меню. Эта программа предназначена для конкретной аудитории и точно соответствует ей. Её пользователи – новички, которые еще не готовы к схватке с Vi или emacs, но при этом хотят редактировать файлы в текстовой консоли.&lt;br /&gt;
&lt;br /&gt;
Несмотря на то, что в nano нет большинства функций других текстовых редакторов, он всё же содержит проверку орфографии. К сожалению, добавить своё слово в словарь невозможно. Но упрощенная проверка орфографии всё же лучше, чем ничего.&lt;br /&gt;
&lt;br /&gt;
Основные функции программы доступны по нажатию клавиши команды при удерживаемой кнопке &amp;lt;Ctrl&amp;gt;. Это самый логичный способ вызова команд в редакторе текстового режима, хотя число доступных команд при этом ограничено. Однако, мы думаем, что это не станет большой проблемой, поскольку к тому времени, как пользователям понадобится что-то, выходящее за рамки такой схемы, они, скорее всего, перейдут на какое-нибудь более мощное приложение.&lt;br /&gt;
&lt;br /&gt;
В редакторе nano нас сильно раздражала только одна вещь: по умолчанию символ перевода строки вставляется в файл автоматически. Это не самое удобное поведение: представьте себе, что вы написали длинную строку кода, которая отказывается компилироваться из-за того, что редактор добавил символ конца строки в неудачном месте. На поиск причины такой ошибки&lt;br /&gt;
может уйти очень много времени. К счастью, для изменения такого поведения программы достаточно указать соответствующую опцию командной строки.&lt;br /&gt;
&lt;br /&gt;
''' Вердикт Linux Format'''&lt;br /&gt;
&lt;br /&gt;
Простой, но малофункциональный nano не слишком привлекателен.&lt;br /&gt;
* Рейтинг - 5/10&lt;br /&gt;
&lt;br /&gt;
===Kate===&lt;br /&gt;
Редактор с возможностью управления проектами&lt;br /&gt;
&lt;br /&gt;
* Версия: 3.2&lt;br /&gt;
* Web: [http://kate.kde.org kate.kde.org]&lt;br /&gt;
* Цена: Бесплатно, по лицензии GPL&lt;br /&gt;
&lt;br /&gt;
Kate – это один из двух редакторов, интегрированных в рабочий стол KDE. Второй, KWrite, содержит минимальный набор функций работы с текстом. Kate – гораздо более богатый инструмент, предназначенный скорее для программистов, чем для обычных пользователей, а поддержка подключаемых модулей позволяет расширять его функциональность до бесконечности.&lt;br /&gt;
&lt;br /&gt;
Являясь частью KDE, Kate может работать только в графическом режиме. Это позволяет разработчикам сосредоточиться на его преимуществах и получить цельный редактор с набором функций, способным удовлетворить самого взыскательного пользователя, но при этом достаточно доступный, чтобы не пугать новичков.&lt;br /&gt;
&lt;br /&gt;
Как и большинство текстовых редакторов для программистов, Kate позволяет использовать регулярные выражения при поиске, а также предоставляет стандартную пару функций – подсветку синтаксиса и автоматические отступы. Из нестандартных возможностей нужно упомянуть свёртку кода. Она позволяет спрятать код функции в программе, оставив на виду только её первую строку. При необходимости можно снова отобразить всю функцию целиком. Это новое и очень полезное при кодировании достижение, так как оно позволяет программисту наблюдать всю картину, но при этом детально рассматривать любую подробность, привлекшую внимание.&lt;br /&gt;
&lt;br /&gt;
Кроме инструментов для разработчиков, Kate содержит еще и функции управления проектами. Можно создать проект как набор файлов, и его открытие приведёт к открытию каждого из входящих в него фалов в отдельной вкладке. Это позволяет редактировать множество взаимосвязанных файлов одновременно, например заголовочный файл, файл с исходным кодом на C и Makefile. Если вы работаете с более крупными проектами, например с целыми приложениями, эта возможность Kate будет для вас особенно полезна.&lt;br /&gt;
&lt;br /&gt;
В любом месте файла Kate может создать закладку, что позволит впоследствии мгновенно вернуться к нему через главное меню. Также очень полезна возможность открыть в новой закладке вместо одного из текстовых файлов окно терминала. Это самый быстрый способ переключиться в командную оболочку (например, для компилирования программы) из всех, которые можно себе представить.&lt;br /&gt;
&lt;br /&gt;
Еще одной новаторской возможностью Kate является выделение любого текста и осуществления поиска по этому слову с помощью Google. Результаты поиска отображаются в Konqueror, web-браузере входящем в состав KDE. Это особенно удобно при работе с каким-нибудь новым API. Выделив функцию, вы получаете справочную информацию, обсуждения и подсказки прямо на кончиках своих пальцев.&lt;br /&gt;
&lt;br /&gt;
'''Вердикт Linux Format'''&lt;br /&gt;
&lt;br /&gt;
Функции управления проектами закладывают для Kate серьезный фундамент. В целом, это полезная программа, но она не умеет работать в текстовой консоли.&lt;br /&gt;
* Рейтинг - 7/10&lt;br /&gt;
&lt;br /&gt;
===NEdit===&lt;br /&gt;
Основанный на Motif редактор, имеющий множество плюсов&lt;br /&gt;
&lt;br /&gt;
* Версия: 5&lt;br /&gt;
* Web: [http://www.nedit.org www.nedit.org]&lt;br /&gt;
* Цена: Бесплатно, по лицензии GPL&lt;br /&gt;
&lt;br /&gt;
Cозданный в 1991 году, NEdit является одним из старейших текстовых редакторов, рассматриваемых в этой статье. Он на несколько лет опередил эру Gnome и KDE и поэтому основан на межплатформенной библиотеке пользовательского интерфейса Motif. До недавнего времени Motif был продуктом с закрытым кодом, что вызывало проблемы с её получением и сборкой (его открытый аналог, Lesstif был доступен, но далеко не всегда компилировался успешно). Выпуск Open Motif в 2000 году сделал получение и сборку NEdit гораздо более простым делом.&lt;br /&gt;
&lt;br /&gt;
Несмотря на эти проблемы, разработчики NEdit продолжали добавлять новшества в свой редактор и сделали его вполне современным. Последние версии включают такие возможности, как вкладки (позволяющие открыть сразу несколько файлов), и поддержку UTF, обеспечивающую ввод в документ символов любого языка.&lt;br /&gt;
&lt;br /&gt;
NEdit – редактор голубых кровей. Он потрясающе прост в использовании для новичков и при этом имеет огромное количество инструментов для опытных пользователей. Сюда входят подсветка синтаксиса более чем для 30 языков программирования, автоматические отступы и гибкие настройки сворачивания слишком длинных строк. Еще одной удобной функцией является отображение номеров строк, которое позволяет сразу же видеть, где в файле расставлены символы перевода строки, а также сильно помогает при отладке.&lt;br /&gt;
&lt;br /&gt;
Этот редактор может использовать для обработки текста любую команду оболочки, причём сохранять для этого файл вовсе не обязательно. Некоторые пункты меню применяют этот метод для проверки орфографии (с помощью ispell), подсчёта слов (wc), и даже для сборки программы (make), а это значит что ваш код может быть откомпилирован и запущен прямо из текстового&lt;br /&gt;
редактора, что очень удобно при работе с компилируемыми языками программирования вроде C или Java.&lt;br /&gt;
&lt;br /&gt;
Поиск в NEdit, как и можно ожидать от редактора предназначенного для всех, поддерживает регулярные выражения, но не навязывает их. Вероятно, это самый лучший компромисс между потребностями новых и опытных пользователей. Также нам очень понравилась установка закладок. Она позволяет запомнить позицию в текстовом файле, чтобы потом вернуться к ней с помощью пары нажатий клавиш. Это бесценно, если вы часто переключаетесь между функциями их объявлениями в начале файла.&lt;br /&gt;
&lt;br /&gt;
Несмотря на свой довольно старомодный вид, NEdit делает работу, которую должен делать, и делает её хорошо. К сожалению, очень много людей прошли мимо этого редактора только потому, что он основан на библиотеке, которая уже не популярна.&lt;br /&gt;
&lt;br /&gt;
'''Вердикт Linux Format'''&lt;br /&gt;
&lt;br /&gt;
Прекрасный редактор, сочетающий серьёзные возможности с простотой использования. Сложности при сборке являются его слабостью.&lt;br /&gt;
* Рейтинг - 8/10&lt;br /&gt;
&lt;br /&gt;
===Vim===&lt;br /&gt;
Разнорежимный, но мощный и почти вездесущий&lt;br /&gt;
* версия: 3&lt;br /&gt;
* Web: [http://www.vim.org www.vim.org]&lt;br /&gt;
* Цена: Бесплатно, по лицензии Vim License&lt;br /&gt;
&lt;br /&gt;
Vim относится к числу программ, которые ругают больше всех. Но при этом он же входит в число самых популярных приложений.&lt;br /&gt;
&lt;br /&gt;
Он имеет репутацию редактора, который совершенно невозможно освоить новичку и, пожалуй, он её заслуживает. Дело в том, что Vim использует разные режимы работы, что является возвращением к самым первым текстовым редакторам, работающим на древних текстовых терминалах, которые могли прокручивать текст только в одном направлении. интерфейс Vim основан на&lt;br /&gt;
программе vi (собственно, имя этого редактора обозначает «vi improved», то есть «улучшенный vi»), а тот в свою очередь был основан на редакторе ed. Если вы попробовали Vim и нашли его слишком сложным, мы советуем вам взять ed и попробовать поработать с ним. Он всё еще входит в большинство дистрибутивов и ясно показывает, как обстояли дела с вводом текста 20 лет назад.&lt;br /&gt;
&lt;br /&gt;
Два режима работы Vim часто в шутку различают так: «пищит» или «не пищит». Второй называется режимом вставки, и используется для того, чтобы вставить текст в файл. Он довольно прост и поддерживает всю функциональность, которую можно было бы ожидать: автоматические отступы, подсветку синтаксиса, поиск парных скобок и так далее. Эти, а также целый ряд других функций, могут быть включены или отключены в режиме, «который пищит» – командном режиме.&lt;br /&gt;
&lt;br /&gt;
Командный режим часто ставит новичков в тупик. Совершенно непонятно, что именно надо набрать, чтобы получить желаемый результат, несмотря на прекрасную систему справки.&lt;br /&gt;
&lt;br /&gt;
Нажатие &amp;amp;lt;I&amp;amp;gt; (большая буква i) позволяет вводить текст, а клавиша &amp;lt;esc&amp;gt; возвращает редактор в командный режим, позволяющий делать действительно замечательные вещи. Диапазон команд простирается от самых простых (например :q приводит к выходу из приложения) до очень сложных – например вы можете включить эмуляцию поведения vi, включить или выключить автоматические отступы или подсветку синтаксиса.&lt;br /&gt;
&lt;br /&gt;
Поиск и замена текста в Vim выполняются при помощи регулярных выражений, что дает куда большую точность и вариативность, чем обычный поиск. Например, Vim может заменить все вхождения слова ‘Linux’, которому предшествует слово ‘Format’ с аббревиатурой ‘PC’. Возможны и замены с более сложными условиями - лишь бы нужный фрагмент мог быть в принципе&lt;br /&gt;
описан регулярными выражениями. Другие редакторы вынуждают обращаться к внешним программам, вроде perl или sed.&lt;br /&gt;
&lt;br /&gt;
'''Вердикт Linux Format'''&lt;br /&gt;
Очень мощная, но сложная программа, включаемая в большинство дистрибутивов.&lt;br /&gt;
* Рейтинг - 9/10&lt;br /&gt;
&lt;br /&gt;
===GNU Emacs===&lt;br /&gt;
Редактор с расширениями, написанными на Lisp&lt;br /&gt;
&lt;br /&gt;
===CoolEdit===&lt;br /&gt;
Редактор с отладчиком и расширениями на Python&lt;br /&gt;
&lt;br /&gt;
===Minimum Profit===&lt;br /&gt;
Серьезный редактор с несерьезным именем&lt;br /&gt;
&lt;br /&gt;
===gedit===&lt;br /&gt;
Текстовый редактор Gnome оставляет желать лучшего...&lt;br /&gt;
&lt;br /&gt;
===Наш вердикт===&lt;/div&gt;</summary>
		<author><name>Ged</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF70:Studio_To_Go!</id>
		<title>LXF70:Studio To Go!</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF70:Studio_To_Go!"/>
				<updated>2008-03-10T10:35:04Z</updated>
		
		<summary type="html">&lt;p&gt;Ged: uSB -&amp;gt; USB, убрал лишние пробелы&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
'' '''Грэхем Моррисон''' рассматривает дистрибутив, который может превратить ваш серый ящик в студию Abbey Roads. Но что это: Beatles For Sale или Sergeant Pepper?''&lt;br /&gt;
&lt;br /&gt;
Если вы следовали одному из недавно опубликованных нами руководств по работе со звуком, то уже знаете, что возможность использования Linux для записи и редактирования музыки становится все более осязаемой. Существует множество специализированных приложений, начиная с секвенсеров и заканчивая инструментами для звукозаписи. Все эти программы связаны&lt;br /&gt;
единым транспортным слоем.&lt;br /&gt;
&lt;br /&gt;
Обратной стороной этого разнообразия является сложность, как часто это бывает в случае с Linux. Как известно, сложность – это идеальное оправдание для тех, кто не желает ничего делать.&lt;br /&gt;
&lt;br /&gt;
Fervent Software разработала решение для записи и обработки аудио, и имя ему – Studio To Go (в дальнейшем для краткости STG). STG – это LiveCD на основе Linux, переполненный всевозможными приложениями для работы со звуком и не нуждающийся в какой-либо настройке. Это означает, что вам не придется конфигурировать и собирать ядро, устанавливать аудиодрайверы, настраивать мистический протокол Jack или плясать с бубном для того, чтобы извлечь из виртуальных инструментов хоть какой-нибудь звук. Смысл STG в том, что он просто работает.&lt;br /&gt;
&lt;br /&gt;
Соучредителем английской компании Fervent Software является Крис Кэннем (Chris Cannam), один из основных разработчиков звукового редактора RoseGarden. Fervent Software активно продвигает открытое программное обеспечение и Linux, особенно для использования в сфере образования. Основной мотивацией для создания STG являлась сложность настройки RoseGarden, возникающая у многих пользователей. Это не недостаток RoseGarden, скорее, причина в том, что Linux более подходит для рабочего стола, нежели для операций со звуком.&lt;br /&gt;
&lt;br /&gt;
===Алло, студия?===&lt;br /&gt;
STG основан на KNOPPIX, однако существенно отличается от него. Вы просто вставляете компакт-диск в привод, перезагружаетесь, и (при правильных настройках BIOS) через несколько минут попадаете в удобное окружение KDE 3.3.1. Если кто-нибудь в это время посмотрит вам через плечо, он наверняка примет вас за звукорежиссера со стажем. На рабочий стол выведены ярлыки аудиоприложений, а на нижней панели расположены датчики загрузки процессора и оперативной памяти, а также универсальный микшер.&lt;br /&gt;
&lt;br /&gt;
На первый взгляд выглядит впечатляюще, и все благодаря полнофункциональной аудиосистеме, автоматически настраивающейся при загрузке. Низкая латентность и малое время отклика жизненно важны для работы профессиональных аудиоприложений. Протокол Jack уже настроен, и все аудиоприложения (включая проигрыватель XMMS) сконфигурированы для работы с ним.&lt;br /&gt;
&lt;br /&gt;
STG поддерживает те же звуковые карты, что и любой другой дистрибутив Linux. Сюда входит оборудование от Creative, большинство USB-устройств и некоторые полупрофессиональные карты, такие как M-Audio и Hammerfall. Поддерживаются и встроенные звуковые карты, одну из которых мы использовали при тестировании.&lt;br /&gt;
&lt;br /&gt;
Как и в других LiveCD-дистрибутивах, домашняя директория расположена прямо в оперативной памяти, что не вполне надежно. Это общая черта всех LiveCD, требующая особого внимания: любой сбой питания может навсегда уничтожить вашу работу.&lt;br /&gt;
&lt;br /&gt;
Будучи основанным на KNOPPIX, STG может быть без труда установлен на жесткий диск, но Fervent Software рекомендует использовать внешние накопители для хранения данных. USB-носители монтируются автоматически и появляются на рабочем столе. &lt;br /&gt;
&lt;br /&gt;
===Запускаем VST===&lt;br /&gt;
Конфигурация по умолчанию - главный козырь STG, и, что очень важно, система уже полностью готова к работе с VST-расширениями. Поддержка VST необходима для использования обширной коллекции высококачественных подключаемых модулей, доступных в Windows. VST – это наиболее распространенный формат для звуковых эффектов и синтезаторов, а STG фактически обеспечивает каркас для работы с ними прямо «из коробки». Ручная же настройка всего этого сводится к балансированию между эмуляцией Windows и низкоуровневой структурой Linux.&lt;br /&gt;
&lt;br /&gt;
Инструменты и эффекты VST можно использовать двумя способами. Во-первых, на рабочем столе имеется директория «VST Plugins». Открыв ее, вы сможете увидеть набор VST-инструментов&lt;br /&gt;
Windows в их родном формате. К моему удивлению, после щелчка на одном из них, подключаемый модуль автоматически загрузился и установил соединение с аудиоподсистемой. Это впечатляет.&lt;br /&gt;
&lt;br /&gt;
STG автоматически создает ссылки на все найденные Windows-разделы прямо на рабочем столе. Это значит, что вы можете найти любые VST-плагины, которые находятся на разделе Microsoft Windows. По умолчанию запись в эти разделы запрещена, однако достаточно правого клика на нужной папке, чтобы ее включить. Конечно же, это зависит и от поддержки соответствующей файловой системы ядром Linux. Другой способ работы с VST - использование их прямо из RoseGarden.&lt;br /&gt;
&lt;br /&gt;
===Готовое рабочее место===&lt;br /&gt;
И на рабочем столе, и в меню KDE имеются ссылки на приложения для работы со звуком. Кроме того, на рабочем столе содержатся папки с документацией и примерами. В папке с документацией вы можете обнаружить пошаговое руководство по работе с STG, а также руководства по работе с редактором RoseGarden и наборщиком нот LilyPond, которые являются двумя центральными приложениями в STG.&lt;br /&gt;
&lt;br /&gt;
RoseGarden (обзор которого вы можете прочесть в 65 выпуске Linux Format) признан лучшим аудиосеквенсером для пользователей Linux. Это зрелый продукт для редактирования MIDI и записи звука, поддерживающий сторонние эффекты и синтезаторы. Если вы раньше использовали Cubase на другой платформе, в RoseGarden вы почувствуете себя как дома.&lt;br /&gt;
&lt;br /&gt;
LilyPond – отличный инструмент для работы с нотами, и RoseGarden может легко экспортировать файлы в нужный формат. Тот факт, что LilyPond не имеет графического интерфейса, немного разочаровывает, тем более, что Fervent Software позиционирует STG как решение для новичков в Linux.&lt;br /&gt;
&lt;br /&gt;
Для непосредственного редактирования аудиофайлов STG предоставляет три наиболее распространенных приложения: Audacity, ReZound и Sweep. Каждый из них предназначен для разных видов редактирования. Audacity – полнофункциональный «комбайн», ReZound хорошо подходит для мониторинга, а Sweep быстр и эффективен. Все они настроены на использование Jack, так что вы можете не беспокоиться о конфликтах звукового оборудования. Это особенно радует, т.к. у Audacity и RoseGarden всегда были проблемы с распределением аудиоканалов. Для более сложных задач, связанных со звукозаписью, в дистрибутиве присутствует Ardour.&lt;br /&gt;
&lt;br /&gt;
Лучшие эффекты и синтезаторы, имеющиеся в Linux, уже установлены. Из них можно выделить Creox и FreqTweak. Creox - это набор различных эффектов, таких как distortion, phase, flange и tremelo направленных на обработку электрогитары. FreqTweak является отличным спектральным замедлителем, в котором можно менять фазу и задержку. Таким образом, можно добиться совершенно разного звучания, от эффекта «глубокой пещеры» до «атома гелия, вылетающего из солнечного ядра» (хотелось бы это послушать - прим.ред.).&lt;br /&gt;
&lt;br /&gt;
Среди синтезаторов хочется выделить Aeolus, потрясающе имитирующий звучащий орган. Смотреть там почти не на что, это просто окошко с множеством кнопок, но звучит очень величественно. Каждая кнопка представляет различные клавиши органа, предназначенные для изменения тембра звука. Звучит он очень реалистично, во многом благодаря встроенному эффекту эха. Другие синтезаторы, достойные упоминания - Alsa Modular Synth, Hexter для DX7 и FearKiller - действительно богатый VST-инструмент.&lt;br /&gt;
&lt;br /&gt;
===Всеобъемлющий пакет===&lt;br /&gt;
Мониторинг обеспечивается утилитой meterbridge. Это довольно недружественное приложение, запускающиеся из командной строки, но в STG вам всего лишь нужно выбрать нужный пункт в меню KDE, и программа автоматически соединится с выводом RoseGarden. После работы с аудиоприложениями, вам пригодится K3b, который поможет записать ваш шедевр на компакт-диск. Кроме того, в STG содержится множество программ, не связанных с обработкой звука, так что для пользователя он ничем не хуже других дистрибутивов. а вот для чего STG определенно не годится, так это для офисной работы.&lt;br /&gt;
&lt;br /&gt;
STG отлично подходит для компьютера, постоянно используемого для звукозаписи. Это хороший способ поэкспериментировать со звуком в Linux, тем более что эффекты и синтезаторы работают прямо «из коробки». На вопрос: «а стоящая ли это покупка, если большинство компонентов можно получить бесплатно?», однозначным ответом будет: «Да». В Fervent Software потратили много времени на разработку STG, и не так давно за те же деньги вы могли бы купить гораздо более примитивное программное обеспечение. С STG вам нет нужды тратить много времени на настройку, это время вы можете использовать на работу со звуком.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Самое главное===&lt;br /&gt;
Подходит даже для новичков и содержит обескураживающее количество программ не только для работы со звуком. В качестве альтернатив можно рассматривать два свободных дистрибутива: Apodio и AGNuLA.&lt;br /&gt;
* Разработчик: Fervent Software&lt;br /&gt;
* Сайт: [http://www.ferventsoftware.com www.ferventsoftware.com]&lt;br /&gt;
* Цена: примерно $90&lt;br /&gt;
&lt;br /&gt;
===Программное обеспечение STG===&lt;br /&gt;
* Редакторы:&lt;br /&gt;
** Rosegarden&lt;br /&gt;
** Audacity&lt;br /&gt;
** ReZound&lt;br /&gt;
** Sweep&lt;br /&gt;
** Ardour&lt;br /&gt;
* Эффекты:&lt;br /&gt;
** Creox&lt;br /&gt;
** Jamin&lt;br /&gt;
** Time Machine&lt;br /&gt;
** Jack-Rack&lt;br /&gt;
** Freqtweak&lt;br /&gt;
** QMidiArp&lt;br /&gt;
** DestroyFX (VST)&lt;br /&gt;
* Синтезаторы:&lt;br /&gt;
** FluidSynth&lt;br /&gt;
** QSynth&lt;br /&gt;
** Timidity&lt;br /&gt;
** Hydrogen&lt;br /&gt;
** Hexter&lt;br /&gt;
** Aeolus&lt;br /&gt;
** AMS&lt;br /&gt;
** ZynAddSubFX&lt;br /&gt;
** Cosmogirl2k (VST)&lt;br /&gt;
** FearKiller (VST)&lt;br /&gt;
&lt;br /&gt;
===Вердикт Linux Format===&lt;br /&gt;
* Возможности - 8/10&lt;br /&gt;
* Производительность - 7/10&lt;br /&gt;
* Простота использования - 8/10&lt;br /&gt;
* «Цена/качество» - 7/10&lt;br /&gt;
Несмотря на то, что все ПО, входящее в STG, доступно бесплатно, его настройка займет очень много времени. В то же время сам STG не нуждается ни в какой настройке.&lt;br /&gt;
* '''Рейтинг - 8/10'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Обзоры]]&lt;/div&gt;</summary>
		<author><name>Ged</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF70:OpenLaszlo</id>
		<title>LXF70:OpenLaszlo</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF70:OpenLaszlo"/>
				<updated>2008-03-10T10:23:23Z</updated>
		
		<summary type="html">&lt;p&gt;Ged: форматирование&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenLaszlo 3.0 ==&lt;br /&gt;
''Flash был любимым всеми патентованным форматом – теперь это любимый всеми открытый формат. '''Пол Хадсон''' взвешивает все за и против...''&lt;br /&gt;
&lt;br /&gt;
Формат Macromedia Flash очень удобен – он позволяет управлять точным расположением элементов на странице и работает на всех мыслимых платформах. Более того, он использует векторную графику, а значит, ваши анимационные ролики будут выглядеть привлекательно, не занимая при этом всю ширину канала.&lt;br /&gt;
&lt;br /&gt;
Многие проекты занимались инженерным анализом Flash, но до сего момента в мире Open Source не было достойного аналога среды Flash MX 2004 Studio для Windows или Mac OS X. Не спешите радоваться: OpenLaszlo – это не студия для редактирования Flash. Это библиотека компонентов, позволяющих создавать Flash-интерфейсы, не подписывая набивших оскомину лицензионных соглашений.&lt;br /&gt;
&lt;br /&gt;
На самом деле, Laszlo – это нечто большее. Для проектирования интерфейсов используется обычный XML, который затем превращается в полноценный Flash-ролик.&lt;br /&gt;
&lt;br /&gt;
=== Полуфабрикаты Web ===&lt;br /&gt;
Каждый web-разработчик знает, что Flash легко использовать в случае, когда вам необходимо оживить несколько несложных фигур, однако, создание развитых интерфейсов превращается в кошмар. OpenLaszlo, напротив, предоставляет в ваше распоряжение целый ряд полнофункциональных компонентов GUI. Если вам&lt;br /&gt;
нужно текстовое поле ввода, используйте XML-элемент &amp;amp;lt;text&amp;amp;gt;, самостоятельный диалог создается при помощи &amp;amp;lt;window&amp;amp;gt;, кнопка соответствует тэгу &amp;lt;button&amp;gt; и так далее – вы уже можете представить себе, как выглядит программирование в OpenLaszlo.&lt;br /&gt;
&lt;br /&gt;
Каждый компонент обладает некоторым набором встроенных функций. Кнопки можно нажимать, в текстовые поля – вводить текст (при этом пароли появляются на экране в виде звездочек), а окна – перетаскивать. Вы можете изменять атрибуты тех или иных компонентов: ширину и высоту, OpenLaszlo 3.0 цвета, местоположение и даже действия. Код для действий пишется на языке JavaScript, а используемые при этом события знакомы каждому HTML-программисту: onClick(), onFocus(), onMouseOver() и так далее. Внутри XML-кода допускается использование простых переменных, например, конструкция width=”${immediateparent.width}” будет правильно транслирована и обработана во Flash-ролике.&lt;br /&gt;
&lt;br /&gt;
=== От XML – к Flash ===&lt;br /&gt;
Этому магическому превращению мы обязаны Java. Когда пользователь запрашивает вашу страницу, XML-код анализируется и компилируется «движком» OpenLaszlo, который и превращает его во Flash-ролик. Стандартной реализацией этой идеи является сервлет-контейнер Apache Tomcat, но вы с тем же успехом можете сгенерировать Flash-ролики заранее и разместить их на статичном web-сервере Apache. Впрочем, в этом не так уж много смысла: с помощью компилятора Java можно создать оптимизированные статичные файлы, которые будут обслуживаться Tomcat как есть, без предварительно- го анализа соответствующего XML-кода. При этом скорость работы будет столь же высокой, однако, необходимость перемещать файлы на сторонний сервер отпадет.&lt;br /&gt;
&lt;br /&gt;
Если вы все еще недостаточно впечатлены, сообщаем вам, что OpenLaszlo умеет работать с XML-RPC и SOAP. Первый из них позволяет делать удаленные вызовы процедур с других компьютеров по протоколу HTTP. Звучит запутанно, но на практике это не более чем способ передать функции параметры и получить от нее возвращаемое значение. SOAP – Simple Object Access Protocol (Простой протокол доступа к объектам) – предназначен для передачи сложных типов данных, то есть для связи ваших Flash-роликов с внешним миром. На самом деле, поддержка XML имеет более глубокие корни: OpenLaszlo может загрузить и проанализировать XML-документ из локального или удаленного источника, а также выполнить запрос XPath. Все эти операции доступны и в стандартном Flash-ролике, но, тем не менее, встречаются они нечасто и по очень простой причине – это не так-то легко сделать, если вы не используете OpenLaszlo.&lt;br /&gt;
&lt;br /&gt;
Выбор компонентов, предоставляемых OpenLaszlo, весьма обширен. Наряду с привычными текстовыми полями, кнопками, флажками и списками, здесь встречаются составные объекты, такие как диалоги выбора даты, деревья, группы вкладок, меню и таблицы данных. Все они могут обмениваться данными с остальной частью Flash-ролика, а также, подобно HTML-форме, отсылать их по HTTP для удаленной обработки на сервере.&lt;br /&gt;
Flash известен своими мультимедиа-возможностями, и здесь OpenLaszlo не отстает: вы можете включать в свой XML-код картинки, фильмы, MP3-композиции и даже другие Flash-ролики. Все они контролируются с помощью сценариев, написанных на языке JavaScript.&lt;br /&gt;
&lt;br /&gt;
=== Задачи двойного назначения ===&lt;br /&gt;
Вы можете создавать собственные классы, добавляющие новую функциональность или особое поведение. OpenLaszlo позволяет использовать компонент как класс, а затем применить его в качестве шаблона в&lt;br /&gt;
нескольких местах на одной и той же странице. Вы можете наследовать от данного класса (а также наследовать от наследника класса и так далее), создавая свои собственные библиотеки сложных объектов. В это трудно поверить – у бывалых программистов XML отнюдь не пользуется репутацией средства, подходящего для этих целей. Но OpenLaszlo добивается своего, несмотря на трудности, и результат выглядит впечатляюще.&lt;br /&gt;
&lt;br /&gt;
Конечно, весь этот потенциал подразумевает, что овладеть синтаксисом OpenLaszlo будет не так-то просто. Здесь на помощь приходит обширная документация, освещающая всевозможные аспекты конфигурации системы и процесса разработки. Да, вы не ослышались: это хорошо задокументированный открытый проект, который будет содействовать вам в ходе инсталляции и обучения, предоставит в ваше распоряжение многочисленные примеры, справочники, руководство администратора и так далее. Секрет кроется в том, что OpenLaszlo был выпущен как Open Source не так давно – компания продолжает развивать продукт, но берет деньги за поддержку и услуги. Это было смелым решением и мы очень рады, что они на него пошли.&lt;br /&gt;
&lt;br /&gt;
Сложность OpenLaszlo могла бы показаться сокрушительной, если бы не одно «но»: IBM создала расширение для Eclipse, упрощающее разработку с OpenLaszlo. Оно не только помогает следить за корректностью и форматированием XML-документа, но и включает визуальный дизайнер интерфейсов, позволяющий просто расположить элементы при помощи мыши, вместо того чтобы писать XML-код вручную. Если вы не знакомы с Eclipse, потребуется некоторое время, чтобы привыкнуть к этой среде, зато все, кто уже видел ее, будут чувствовать себя, как дома.&lt;br /&gt;
&lt;br /&gt;
=== Добро пожаловать в Монго! ===&lt;br /&gt;
Попробовав OpenLaszlo, трудно остановиться. Вы можете потратить недели на создание сложного интерфейса к вашему web-сайту на Java, но зачем? OpenLaszlo предоставляет все возможности для реализации мощных кросс-платформенных GUI, выглядящих безупречно. Потребуется немало усилий и еще больше опыта, чтобы заставить Java выглядеть так же хорошо. Документация, предоставляемая проектом, находится выше всяких похвал. OpenLaszlo побеждает Java на ее собственном поле (по крайней мере, до тех пор, пока речь идет о web-браузерах). Это по-настоящему свободный продукт, лицензированный по IBM Common Public License (CPL: по сути, GPL c учетом патентов). OpenLaszlo – лакомый кусок для сообщества Open Source. Комбинируя его с Apache Tomcat и Eclipse, вы получите сногсшибательное трио. Если вы экспериментируете с web-интерфейсами (уже прочитали [[LXF70:BBC|материал на странице 60]]?), мы настоятельно рекомендуем начать с OpenLaszlo. Обещаем, вы не будете разочарованы.&lt;/div&gt;</summary>
		<author><name>Ged</name></author>	</entry>

	</feed>