<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki2.linuxformat.ru/skins/common/feed.css?97"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>LXF72:Perl - История изменений</title>
		<link>http://wiki2.linuxformat.ru/index.php?title=LXF72:Perl&amp;action=history</link>
		<description>История изменений этой страницы в вики</description>
		<language>ru</language>
		<generator>MediaWiki 1.11.1</generator>
		<lastBuildDate>Wed, 13 May 2026 22:25:51 GMT</lastBuildDate>
		<item>
			<title>Yaleks: викификация</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF72:Perl&amp;diff=4656&amp;oldid=prev</link>
			<description>&lt;p&gt;викификация&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 15:57, 19 мая 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{цикл/Perl}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{цикл/Perl}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Perl Функции и модули ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Perl Функции и модули ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;''ЧАсТь 4 Не все сценарии надо писать самостоятельно с первой до последней строчки. '''Марко Фиоретти''' (Marco ‘Prefab’ Fioretti) показывает, как можно использовать код повторно.''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;''ЧАсТь 4 Не все сценарии надо писать самостоятельно с первой до последней строчки. '''Марко Фиоретти''' (Marco ‘Prefab’ Fioretti) показывает, как можно использовать код повторно.''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 30:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Давайте для начала посмотрим на самую простую часть. Как вы&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Давайте для начала посмотрим на самую простую часть. Как вы&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;видите, подпрограмма начинается с ключевого слова sub, имени (здесь&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;видите, подпрограмма начинается с ключевого слова sub, имени (здесь&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;– &lt;/del&gt;print_array), за которыми следует код (возможно достаточно сложный), заключённый в фигурные скобки. При вызове процедуры необходимо добавлять пред именем символ &amp;amp;, а сразу после него указывать&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;— &lt;/ins&gt;print_array), за которыми следует код (возможно достаточно сложный), заключённый в фигурные скобки. При вызове процедуры необходимо добавлять пред именем символ &amp;amp;, а сразу после него указывать&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;параметры в круглых скобках.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;параметры в круглых скобках.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 35:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 36:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;В данном выше коде есть два неочевидных момента. Это секрет переменной @_, а также тот факт, что я «присвоил» переменной $NUMBER&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;В данном выше коде есть два неочевидных момента. Это секрет переменной @_, а также тот факт, что я «присвоил» переменной $NUMBER&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;подпрограмму. на самом деле в @_ нет ничего особенного, это просто&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;подпрограмму. на самом деле в @_ нет ничего особенного, это просто&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;массив, в который Perl помещает все параметры, полученные при вызове. Присвоение переменной $NUMBER возможно потому, что все подпрограммы Perl возвращают значение последней выполненной инструкции. Возможно, вы скажете что $COUNTER &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;– &lt;/del&gt;это просто переменная, а&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;массив, в который Perl помещает все параметры, полученные при вызове. Присвоение переменной $NUMBER возможно потому, что все подпрограммы Perl возвращают значение последней выполненной инструкции. Возможно, вы скажете что $COUNTER &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;— &lt;/ins&gt;это просто переменная, а&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;не инструкция. Да, это странно, но в Perl это прекрасно работает.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;не инструкция. Да, это странно, но в Perl это прекрасно работает.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 58:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 59:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;amp;$rsub((‘All’, ‘the’, ‘arguments’, ‘for’, ‘this’, ‘subroutine’));&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;amp;$rsub((‘All’, ‘the’, ‘arguments’, ‘for’, ‘this’, ‘subroutine’));&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Это кусочек моего работающего скрипта, который предлагает пользователю выбрать действие, которое нужно выполнить. он кажется таинственным, но на самом деле это не так. %FUNZ &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;– &lt;/del&gt;это хэш, ключами которого являются буквы L, P и B, а значениями &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;– &lt;/del&gt;неименованные хэши,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Это кусочек моего работающего скрипта, который предлагает пользователю выбрать действие, которое нужно выполнить. он кажется таинственным, но на самом деле это не так. %FUNZ &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;— &lt;/ins&gt;это хэш, ключами которого являются буквы L, P и B, а значениями &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;— &lt;/ins&gt;неименованные хэши,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;указанные в виде списков в фигурных скобках. Каждый из этих хэшей&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;указанные в виде списков в фигурных скобках. Каждый из этих хэшей&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;имеет ключ D (от слова Description, описание) и F (Function, функция).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;имеет ключ D (от слова Description, описание) и F (Function, функция).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;значением ключа D является простая строка, а значением F &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;– &lt;/del&gt;указатель&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;значением ключа D является простая строка, а значением F &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;— &lt;/ins&gt;указатель&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;на функцию, именно его обозначает синтаксис «\&amp;amp;». Другими словами,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;на функцию, именно его обозначает синтаксис «\&amp;amp;». Другими словами,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;$FUNZ{‘B’}{‘F’} &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;- &lt;/del&gt;это указатель на функцию BACKUP_ALL.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;$FUNZ{‘B’}{‘F’} &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;— &lt;/ins&gt;это указатель на функцию BACKUP_ALL.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;При запуске скрипта он выводит на терминал примерно следующее:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;При запуске скрипта он выводит на терминал примерно следующее:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 104:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 105:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;полностью. Таким образом гарантируется, что код модуля не смешается&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;полностью. Таким образом гарантируется, что код модуля не смешается&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;с другими модулями и основным сценарием, хотя при этом вы можете&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;с другими модулями и основным сценарием, хотя при этом вы можете&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;сознательно обратиться к любому внешнему объекту. оператор 1 в конце &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;– &lt;/del&gt;это стандартный приём, использующийся для того, чтобы показать&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;сознательно обратиться к любому внешнему объекту. оператор 1 в конце &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;— &lt;/ins&gt;это стандартный приём, использующийся для того, чтобы показать&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;что модуль был загружен успешно, поскольку он вернул ненулевое&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;что модуль был загружен успешно, поскольку он вернул ненулевое&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;значение.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;значение.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 140:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 141:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;иногда (как правило, на офисном или школьном компьютере) у вас нет&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;иногда (как правило, на офисном или школьном компьютере) у вас нет&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;доступа к системным каталогам, перечисленным в переменной @INC, и&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;доступа к системным каталогам, перечисленным в переменной @INC, и&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;поэтому вам приходится устанавливать модули куда-нибудь ещё и указывать Perl, откуда их брать. один из самых простых способов &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;– &lt;/del&gt;это&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;поэтому вам приходится устанавливать модули куда-нибудь ещё и указывать Perl, откуда их брать. один из самых простых способов &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;— &lt;/ins&gt;это&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;использование конструкции use lib. Если вы поместили My_Mail_Filter.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;использование конструкции use lib. Если вы поместили My_Mail_Filter.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;pm в каталог /home/my_account/.perl_modules/, то вы можете&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;pm в каталог /home/my_account/.perl_modules/, то вы можете&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 157:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 158:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;помощи require можно подгружать или нет тот или иной модуль в зависимости от некоторых условий. но если нужный файл отсутствует или не&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;помощи require можно подгружать или нет тот или иной модуль в зависимости от некоторых условий. но если нужный файл отсутствует или не&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;загружается, то это приведёт к прекращению работы программы, а она&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;загружается, то это приведёт к прекращению работы программы, а она&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;уже возможно начала изменение ваших &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;данных...&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;уже возможно начала изменение ваших &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;данных…&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;С другой стороны, ключевое слово use всегда выполняет код модуля в самом начале, до того как начинается выполнение основного сценария (во время компиляции, как говорят программисты), поэтому модуль&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;С другой стороны, ключевое слово use всегда выполняет код модуля в самом начале, до того как начинается выполнение основного сценария (во время компиляции, как говорят программисты), поэтому модуль&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Mon, 19 May 2008 15:57:27 GMT</pubDate>			<dc:creator>Yaleks</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF72:Perl</comments>		</item>
		<item>
			<title>Yaleks: Новая: {{цикл/Perl}} == Perl Функции и модули == ''ЧАсТь 4 Не все сценарии надо писать самостоятельно с первой до после...</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF72:Perl&amp;diff=4655&amp;oldid=prev</link>
			<description>&lt;p&gt;Новая: {{цикл/Perl}} == Perl Функции и модули == ''ЧАсТь 4 Не все сценарии надо писать самостоятельно с первой до после...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая статья&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{цикл/Perl}}&lt;br /&gt;
== Perl Функции и модули ==&lt;br /&gt;
''ЧАсТь 4 Не все сценарии надо писать самостоятельно с первой до последней строчки. '''Марко Фиоретти''' (Marco ‘Prefab’ Fioretti) показывает, как можно использовать код повторно.''&lt;br /&gt;
&lt;br /&gt;
я надеюсь использовать последнюю статью из этой серии на&lt;br /&gt;
всю катушку, продемонстрировав вам некоторые мощные возможности Perl. Мы начнём с с функций, затем рассмотрим&lt;br /&gt;
модули, а в конце я покажу как использовать их для доступа к базам&lt;br /&gt;
данных. итак, поехали!&lt;br /&gt;
&lt;br /&gt;
Как в любом хорошем языке программирования, в Perl повторно&lt;br /&gt;
используемые кусочки кода можно оформить в виде функций (тут они&lt;br /&gt;
называются подпрограммами-subroutines). Вот пример простой&lt;br /&gt;
подпрограммы:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub print_array&lt;br /&gt;
{&lt;br /&gt;
my $COUNTER = 0; # вспомогательный счетчик&lt;br /&gt;
foreach $ITEM (@_) {&lt;br /&gt;
$COUNTER++;&lt;br /&gt;
print «# $COUNTER: $ITEM\n»;&lt;br /&gt;
}&lt;br /&gt;
$COUNTER;&lt;br /&gt;
}&lt;br /&gt;
# А теперь используем это:&lt;br /&gt;
@FRIENDS = (‘John’, ‘Jill’, ‘Kelly’, ‘Martin’);&lt;br /&gt;
$NUMBER = &amp;amp;print_array(@FRIENDS);&lt;br /&gt;
print «These are my $NUMBER friends\n»;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Давайте для начала посмотрим на самую простую часть. Как вы&lt;br /&gt;
видите, подпрограмма начинается с ключевого слова sub, имени (здесь&lt;br /&gt;
– print_array), за которыми следует код (возможно достаточно сложный), заключённый в фигурные скобки. При вызове процедуры необходимо добавлять пред именем символ &amp;amp;, а сразу после него указывать&lt;br /&gt;
параметры в круглых скобках.&lt;br /&gt;
&lt;br /&gt;
=== главный секрет ===&lt;br /&gt;
В данном выше коде есть два неочевидных момента. Это секрет переменной @_, а также тот факт, что я «присвоил» переменной $NUMBER&lt;br /&gt;
подпрограмму. на самом деле в @_ нет ничего особенного, это просто&lt;br /&gt;
массив, в который Perl помещает все параметры, полученные при вызове. Присвоение переменной $NUMBER возможно потому, что все подпрограммы Perl возвращают значение последней выполненной инструкции. Возможно, вы скажете что $COUNTER – это просто переменная, а&lt;br /&gt;
не инструкция. Да, это странно, но в Perl это прекрасно работает.&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;
%FUNZ = (&lt;br /&gt;
‘L’, {‘D’, ‘LIST’, ‘F’, \&amp;amp;MONTHLY_LIST}, #Список всех звонков этого месяца&lt;br /&gt;
‘P’, {‘D’, ‘PLOT_2D’, ‘F’, \&amp;amp;GEN_PLOT }, #нарисовать график всех звонков&lt;br /&gt;
‘B’, {‘D’, ‘BACKUP’, ‘F’, \&amp;amp;BACKUP_ALL } #Выполнить резервное копирование&lt;br /&gt;
#Еще много таких же элементов пропущено для краткости&lt;br /&gt;
);&lt;br /&gt;
#Покажем пользователю все варианты&lt;br /&gt;
foreach (sort keys %FUNZ) {&lt;br /&gt;
printf «%2.2s %-20.20s», $_, $FUNZ{$_}{‘D’}, «\n»;&lt;br /&gt;
}&lt;br /&gt;
#...и вызовем процедуру, которую он выбрал&lt;br /&gt;
if ($USER_INPUT eq ‘B’) { # резервное копирование&lt;br /&gt;
my $rsub = $FUNZ{‘B’}{‘F’};&lt;br /&gt;
&amp;amp;$rsub((‘All’, ‘the’, ‘arguments’, ‘for’, ‘this’, ‘subroutine’));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Это кусочек моего работающего скрипта, который предлагает пользователю выбрать действие, которое нужно выполнить. он кажется таинственным, но на самом деле это не так. %FUNZ – это хэш, ключами которого являются буквы L, P и B, а значениями – неименованные хэши,&lt;br /&gt;
указанные в виде списков в фигурных скобках. Каждый из этих хэшей&lt;br /&gt;
имеет ключ D (от слова Description, описание) и F (Function, функция).&lt;br /&gt;
значением ключа D является простая строка, а значением F – указатель&lt;br /&gt;
на функцию, именно его обозначает синтаксис «\&amp;amp;». Другими словами,&lt;br /&gt;
$FUNZ{‘B’}{‘F’} - это указатель на функцию BACKUP_ALL.&lt;br /&gt;
&lt;br /&gt;
При запуске скрипта он выводит на терминал примерно следующее:&lt;br /&gt;
 L LIST&lt;br /&gt;
 P PLOT_2D&lt;br /&gt;
 B BACKUP&lt;br /&gt;
Клавиша, которую нажал пользователь, сохраняется в переменной&lt;br /&gt;
$USER_INPUT. Если была выбрана буква B, последний кусочек кода&lt;br /&gt;
запишет указатель на BACKUP_ALL в переменную $rsub, и в последней строке вызовет эту процедуру, передав ей все нужные аргументы.&lt;br /&gt;
Так что код &amp;amp;$rsub обозначает «Выполнить код по адресу, который хранится в переменной $rsub». здорово, правда?&lt;br /&gt;
&lt;br /&gt;
Функции хороши для повторного использования кода, но они могут&lt;br /&gt;
не всё. обычно они работают только внутри небольшого набора сценариев, порой взаимодействуя (кто-то скажет «смешиваясь») с другим кодом&lt;br /&gt;
не очевидным образом. например, вы вероятно не сможете запустить&lt;br /&gt;
упомянутые выше функции в своей системе, не внося в них некоторых&lt;br /&gt;
изменений. я не стремился сделать их пригодными для использования в&lt;br /&gt;
любых условиях, так что в них используется много ссылок на глобальные&lt;br /&gt;
переменные (например $BACKUP_SUBFOLDER), которые могут у вас&lt;br /&gt;
отсутствовать или иметь другой смысл.&lt;br /&gt;
&lt;br /&gt;
=== Код, которым можно поделиться ===&lt;br /&gt;
Если вам нужен чёрный ящик, который правильно работает в любой программе без всяких неприятных побочных эффектов, значит вам нужны&lt;br /&gt;
модули Perl. Эти объекты содержат в заголовке объявление пакета, имя&lt;br /&gt;
которого должно совпадать с именем файла минус расширение .pm.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
package My_Mail_Filter; # объявление пакета&lt;br /&gt;
sub filter_incoming_messages {&lt;br /&gt;
#Код процедуры&lt;br /&gt;
}&lt;br /&gt;
sub remove_duplicate_messages {&lt;br /&gt;
# Код другой процедуры&lt;br /&gt;
}&lt;br /&gt;
1;&lt;br /&gt;
&amp;lt;/source&amp;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;
сознательно обратиться к любому внешнему объекту. оператор 1 в конце – это стандартный приём, использующийся для того, чтобы показать&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;
модуль Perl? Возможно, что кто-то&lt;br /&gt;
когда-то уже написал код на Perl,&lt;br /&gt;
который читает этот мудрёный&lt;br /&gt;
формат данных. чтобы найти его,&lt;br /&gt;
обратитесь к единственному&lt;br /&gt;
центральному онлайн-хранилищу&lt;br /&gt;
модулей и многих других&lt;br /&gt;
интересных Perl-штучек! Сеть&lt;br /&gt;
Comprehensive Perl Archive Network&lt;br /&gt;
(http://www.cpan.org) содержит почти&lt;br /&gt;
8000 модулей, относящихся почти&lt;br /&gt;
к любой мыслимой области, а его&lt;br /&gt;
администраторы постоянно ищут&lt;br /&gt;
пополнения.&lt;br /&gt;
|Ширина=250px}}&lt;br /&gt;
из своей программы вы можете загрузить модуль и использовать&lt;br /&gt;
его функции примерно так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
use My_Mail_Filter;&lt;br /&gt;
My_Mail_Filter::remove_duplicate_messages($CURRENT_MAILBOX);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Все модули из Comprehensive Perl Archive Network (или CPAN, смотри во врезке «Сетевой банк модулей Perl» справа) поставляются с документацией, достаточной для того, чтобы узнать, какая процедура ожидает каких параметров. интерпретатор Perl ищет модули в каталогах, определённых в системной переменной @INC и во всех их подкаталогах.&lt;br /&gt;
чтобы получить весь список, просто наберите в командной строке&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;perl -e ‘print join(«\n»,@INC).»\n»’&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== использование use. ===&lt;br /&gt;
иногда (как правило, на офисном или школьном компьютере) у вас нет&lt;br /&gt;
доступа к системным каталогам, перечисленным в переменной @INC, и&lt;br /&gt;
поэтому вам приходится устанавливать модули куда-нибудь ещё и указывать Perl, откуда их брать. один из самых простых способов – это&lt;br /&gt;
использование конструкции use lib. Если вы поместили My_Mail_Filter.&lt;br /&gt;
pm в каталог /home/my_account/.perl_modules/, то вы можете&lt;br /&gt;
начать сценарий со строк&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
use lib qw(/home/my_account/.perl_modules/);&lt;br /&gt;
use My_Mail_Filter;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Таким образом Perl обнаружит этот модуль.&lt;br /&gt;
&lt;br /&gt;
Многие сценарии добиваются того же результата при помощи&lt;br /&gt;
require:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;require «/home/my_account/.perl_modules/My_Mail_Filter.pm»;&amp;lt;/source&amp;gt;&lt;br /&gt;
Главное отличие между use и require состоит в том, что require&lt;br /&gt;
подгружает модуль в уже работающий сценарий, исполняя строку в которой указан этот оператор. Возможно, это то что вам нужно, так как при&lt;br /&gt;
помощи require можно подгружать или нет тот или иной модуль в зависимости от некоторых условий. но если нужный файл отсутствует или не&lt;br /&gt;
загружается, то это приведёт к прекращению работы программы, а она&lt;br /&gt;
уже возможно начала изменение ваших данных...&lt;br /&gt;
&lt;br /&gt;
С другой стороны, ключевое слово use всегда выполняет код модуля в самом начале, до того как начинается выполнение основного сценария (во время компиляции, как говорят программисты), поэтому модуль&lt;br /&gt;
оказывает влияние на работу всего сценария целиком.&lt;br /&gt;
&lt;br /&gt;
При помощи use мы можем получить доступ к базе данных.&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;
данных из Perl очень простым. Вот короткий пример, демонстрирующий работу с MySQL.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
use strict;&lt;br /&gt;
use Mysql;&lt;br /&gt;
###################################&lt;br /&gt;
###################################&lt;br /&gt;
my $DBHOST = «компьютер_на_котором_запущен_сервер_базы_данных»;&lt;br /&gt;
my $DBNAME = «имя_базы_данных_к_которой_мы_хотим_обратиться»;&lt;br /&gt;
my $DBUSER = «имя_учётной_записи_для_MySql»; # может отличаться от имени учётной записи в Linux&lt;br /&gt;
my $DBPASS = «пароль_учётной_записи_для_MySQK»;&lt;br /&gt;
my @RESULTS;&lt;br /&gt;
###################################&lt;br /&gt;
###################################&lt;br /&gt;
# Подключаемся к серверу баз данных MySQL&lt;br /&gt;
my $DB = Mysql-&amp;gt;connect($DBHOST, $DBNAME, $DBUSER, $DBPASS);&lt;br /&gt;
# запрашиваем базу данных&lt;br /&gt;
my $qry = «SELECT * FROM appdb WHERE P_ID &amp;lt; 100»;&lt;br /&gt;
my $res = $DB-&amp;gt;query($qry);&lt;br /&gt;
while( @RESULTS = $res-&amp;gt;fetchrow) {&lt;br /&gt;
print «$RESULTS[0], $RESULTS[1], $RESULTS[2]\n»;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Этот код работает при условии подключения к базе данных, которая&lt;br /&gt;
была уже создана и заполнена информацией. Первой интересной командой является та, при помощи которой мы присоединяемся к серверу баз&lt;br /&gt;
данных MySQL. Поскольку раньше мы потребовали от сценария загрузить модуль Mysql, то теперь нам достаточно написать только Mysql-&amp;gt;connect и указать требуемые параметры. Согласитесь, что это здорово! Вне зависимости от того, кто написал и поддерживает модуль MySQL,&lt;br /&gt;
вы загружаете его и он просто работает.&lt;br /&gt;
&lt;br /&gt;
В следующих двух строчках мы выполняем запрос к базе данных.&lt;br /&gt;
Сценарий строится на том предположении, что база данных, к которой&lt;br /&gt;
мы подключаемся, содержит таблицу appdb, в которой есть численное&lt;br /&gt;
поле P_ID. Первая команда создаёт запрос на языке SQL и сохраняет&lt;br /&gt;
его в переменной $qry. Это запрос является константной строкой и&lt;br /&gt;
просто запрашивает все поля (SELECT *) записей из таблицы appdb&lt;br /&gt;
при условии, что поле P_ID для них меньше 100. Вы можете генерировать запрос к базе на лету, например включая текущие значения переменных в строку $qry.&lt;br /&gt;
&lt;br /&gt;
В следующей строчке сценария запрос выполняется и результат связывается с переменной $res. через неё сценарий может получить&lt;br /&gt;
доступ ко всем строчкам полученного набора данных. Вставка новой&lt;br /&gt;
записи в таблицу базы делается точно таким же способом, только SQL-запрос потребуется другой.&lt;br /&gt;
&lt;br /&gt;
Вы уже обратили внимание на цикл while в самом конце? Код $res-&amp;gt;fetchrow применяет процедуру (или «метод») fetchrow модуля&lt;br /&gt;
MySQL к переменной $res. В результате при каждом таком вызове возвращается содержимое следующей строки из полученного набора данных, хранящегося в переменной $res. При этом каждое поле записи&lt;br /&gt;
записывается в правильном порядке в массив $RESULT. Вот почему&lt;br /&gt;
оператор print внутри цикла может просто выводить на терминал содержимое полученных полей.&lt;br /&gt;
&lt;br /&gt;
я надеюсь, что эта короткая серия статей дала вам достаточно, чтобы начать работать (и в удовольствие!) с огромными возможностями Perl.&lt;br /&gt;
настало время писать свои собственные программы. Удачи вам!&lt;/div&gt;</description>
			<pubDate>Mon, 19 May 2008 15:55:07 GMT</pubDate>			<dc:creator>Yaleks</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF72:Perl</comments>		</item>
	</channel>
</rss>