<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; [Perl] писать -> программа -> файл]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=6833</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=6833&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «[Perl] писать -> программа -> файл».]]></description>
		<lastBuildDate>Sun, 17 Oct 2010 17:23:55 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: [Perl] писать -> программа -> файл]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=102126#p102126</link>
			<description><![CDATA[<p>there is more than one way to do it...<br />1. Самое простое: использовать модуль IPC::Open2<br />2. Самое эффективное, как утверждает perldoc: использовать socketpair + fork + exec<br />3. И еще вариантик: создать 2 pipe для чтения и записи, затем fork, в дочернем процессе переоткрыть STDOUT в канал открытый pipe и сделать exec. Так собственно и работает модуль IPC::Open2, только делает всю грязную работу за вас</p><p>А вообще читайте perldoc perlipc, там всё это есть.</p>]]></description>
			<author><![CDATA[null@example.com (verdrehung)]]></author>
			<pubDate>Sun, 17 Oct 2010 17:23:55 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=102126#p102126</guid>
		</item>
		<item>
			<title><![CDATA[Re: [Perl] писать -> программа -> файл]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=96750#p96750</link>
			<description><![CDATA[<p>Она просто запускает дочерний процесс. Мне же надо передать данные на вход stdin.<br />Хотя, возможно, получится создать pipe, а потом создать дочерний процесс, может он эти pipe наследует.</p>]]></description>
			<author><![CDATA[null@example.com (AndreyMust19)]]></author>
			<pubDate>Thu, 30 Sep 2010 16:07:51 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=96750#p96750</guid>
		</item>
		<item>
			<title><![CDATA[Re: [Perl] писать -> программа -> файл]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=96720#p96720</link>
			<description><![CDATA[<p>не знаю перла, но точно знаю, там есть функция system, которая вызывает внешние системные функции. не оно?</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Thu, 30 Sep 2010 14:27:16 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=96720#p96720</guid>
		</item>
		<item>
			<title><![CDATA[Re: [Perl] писать -> программа -> файл]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=96684#p96684</link>
			<description><![CDATA[<p>Пока проблема не решена, обшелся созданием еще одного временного файла.<br />Нельзя ли создать временный файл в памяти, а не на диске?</p>]]></description>
			<author><![CDATA[null@example.com (AndreyMust19)]]></author>
			<pubDate>Thu, 30 Sep 2010 12:30:51 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=96684#p96684</guid>
		</item>
		<item>
			<title><![CDATA[[Perl] писать -> программа -> файл]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=94394#p94394</link>
			<description><![CDATA[<p>Надо отсортировать список файлов - вызвать внешнюю программу sort, на вход подать список файлов, а с выхода записать отсортированный список в файл.<br />Не хочу создавать кучу временных файлов:<br /></p><div class="codebox"><pre><code>print `sort file`;</code></pre></div><p>, а писать прямо на вход программы sort.</p><p>Пробовал:<br /></p><div class="codebox"><pre><code>open(SORT, &quot;|sort&quot;);</code></pre></div><p>Так вот, выходной файл либо оказывается пустым, потому что программа sort вызывается только после закрытия дескриптора и весь результат ее работы почему-то выводится на экран). Пробовал pipe и запись в переменную, все равно выходной файл остается пустой.</p><div class="codebox"><pre><code>#!/usr/bin/perl
$dir=&#039;/&#039;;
if ($ARGV[0]) {        # если есть первый аргумент
    $dir=`realpath $ARGV[0]`;
    chomp $dir;
};
$listfiles=`mktemp /tmp/file.XXX`; chomp $listfiles;
open(FILES,&quot;&gt; $listfiles&quot;);# || die;
# сортировка списка файлов

open(SORT, &quot;|sort|&quot;);# || die;
#open($f1, &#039;&gt;&#039;, \$variable);
until (eof `find $dir`) { print SORT `find $dir`};
until (eof SORT) { print FILES &lt;SORT&gt;; };

#pipe(`find $dir`,SORT);
#pipe(SORT,FILES);

#print SORT `cat /home/andrey/proba_files`;
#@s = `find $dir`;
#print SORT @s;
#print SORT `find $dir`;
#close SORT;
#until (eof SORT) { print FILES &lt;SORT&gt;; };
#close(FILES);

print &quot;dir = $dir, listfiles = $listfiles\n&quot;;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (AndreyMust19)]]></author>
			<pubDate>Wed, 22 Sep 2010 08:50:47 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=94394#p94394</guid>
		</item>
	</channel>
</rss>
