<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.scott5.org/index.php?action=history&amp;feed=atom&amp;title=Perl_I%2FO</id>
	<title>Perl I/O - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.scott5.org/index.php?action=history&amp;feed=atom&amp;title=Perl_I%2FO"/>
	<link rel="alternate" type="text/html" href="https://wiki.scott5.org/index.php?title=Perl_I/O&amp;action=history"/>
	<updated>2026-04-13T00:33:40Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.scott5.org/index.php?title=Perl_I/O&amp;diff=200&amp;oldid=prev</id>
		<title>Scott: /* Read a file line-by-line */</title>
		<link rel="alternate" type="text/html" href="https://wiki.scott5.org/index.php?title=Perl_I/O&amp;diff=200&amp;oldid=prev"/>
		<updated>2011-02-01T18:12:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Read a file line-by-line&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Opening files ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
open CONFIG, &amp;quot;dino.config&amp;quot;;       # open for reading&lt;br /&gt;
open CONFIG, &amp;quot;&amp;lt;&amp;quot;, &amp;quot;dino.config&amp;quot;;  # same thing&lt;br /&gt;
open BEDROCK, &amp;quot;&amp;gt;&amp;quot;, &amp;quot;fred.txt&amp;quot;;    # overwrite&lt;br /&gt;
open LOG, &amp;quot;&amp;gt;&amp;gt;&amp;quot;, &amp;quot;logfile.log&amp;quot;;    # append&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Read a file line-by-line ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
open(FH, $fileName) or die &amp;quot;open $fileName failed: $!&amp;quot;;&lt;br /&gt;
while (my $line = &amp;lt;FH&amp;gt;){&lt;br /&gt;
    chomp $line;   # get rid of end-of-line&lt;br /&gt;
    # do something with $line&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
A simpler alternative:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
open(FH, $fileName) or die &amp;quot;open $fileName failed: $!&amp;quot;;&lt;br /&gt;
while (&amp;lt;FH&amp;gt;){&lt;br /&gt;
    chomp;  # acts on the default variable $_&lt;br /&gt;
    # do something with $_&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Read a file all at once ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
open(FH, $fileName) or die &amp;quot;open $fileName failed: $!&amp;quot;;&lt;br /&gt;
chomp(@lines = &amp;lt;FH&amp;gt;);&lt;br /&gt;
# process @lines&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Write to a file that&amp;#039;s been opened for writing ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
print LOG &amp;quot;Captain&amp;#039;s log, stardate 3.14159\n&amp;quot;;  # output goes to LOG&lt;br /&gt;
printf STDERR &amp;quot;%d percent complete.\n&amp;quot;, $done/$total * 100;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Perl&amp;#039;s built-in filehandles ==&lt;br /&gt;
STDIN, STDOUT, STDERR allow your Perl program to act like a standard Unix command.&lt;br /&gt;
&lt;br /&gt;
Use select to choose an alternate default output filehandle: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
select LOG;&lt;br /&gt;
$| = 1;  # don&amp;#039;t keep LOG entries sitting in the buffer&lt;br /&gt;
select STDOUT;&lt;br /&gt;
...&lt;br /&gt;
print LOG &amp;quot;This gets written to the LOG at once!\n&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Closing files ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
close CONFIG;  # Perl automatically closes open files at program exit&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remapping STDERR to a log file ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
open STDERR, &amp;quot;&amp;gt;&amp;gt;&amp;quot;, &amp;quot;/var/log/system.log&amp;quot; or die &amp;quot;$!&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example: updating several files ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/perl -w&lt;br /&gt;
&lt;br /&gt;
chomp(my $date = `date`);&lt;br /&gt;
$^I = &amp;quot;.bak&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
while (&amp;lt;&amp;gt;) {&lt;br /&gt;
  s/^Author:.*/Author: Randal L. Schwartz/;&lt;br /&gt;
  s/^Phone:.*\n//;&lt;br /&gt;
  s/^Date:.*/Date: $date/;&lt;br /&gt;
  print;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Setting $^I causes the &amp;lt;&amp;gt; to print the updated lines to the original file name and save the original contents as a backup file.&lt;/div&gt;</summary>
		<author><name>Scott</name></author>
	</entry>
</feed>