<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><o:SmartTagType
 namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="PersonName"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
_filtered {font-family:Tahoma;panose-1:2 11 6 4 3 5 4 4 2 4;}
_filtered {margin:1.0in 1.25in 1.0in 1.25in;}

 /* Font Definitions */
 @font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
code
        {font-family:"Courier New";}
span.emailstyle17
        {font-family:Arial;
        color:navy;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=blue>

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Brian &#8211; yep, I jumped in without any
context.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Tiger &#8211; the code below illustrates
the problem, and a solution.&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Firstly, note that the situation you are
encountering seems to match with the documentation, as correct and expected
behavior.&nbsp; Here is the URL to &#8220;perldoc.org&#8221;:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
href="http://perldoc.perl.org/functions/open.html">http://perldoc.perl.org/functions/open.html</a><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>And here is an excerpt from the first
paragraph:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in'><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy'>. . .</span></font><font
size=2 color=navy><span style='font-size:11.0pt;color:navy'> </span></font><font
size=2><span style='font-size:11.0pt'>otherwise if FILEHANDLE is an expression,
its value is used as the name of the real filehandle wanted. (This is
considered a symbolic reference, so </span></font><u><font size=2
face="Courier New"><span style='font-size:11.0pt;font-family:"Courier New"'>use
<span class=w>strict</span><code><font face="Courier New"> </font></code><span
class=q>'refs'</span></span></font></u><font size=2><span style='font-size:
11.0pt'> should <i><span style='font-style:italic'>not</span></i> be in effect.)<font
color=navy><span style='color:navy'> </span></font></span></font><font size=2
color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Secondly, based on my tests just now, it
seems &#8220;strict&#8221; is making a special exception for file based
operations. &nbsp;That would explain why we routinely use a naked string in an
open, without getting it flagged.&nbsp; So, &#8220;strict&#8221; seems to make
an exception for:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font><font
size=2 color=navy face="Courier New"><span style='font-size:10.0pt;font-family:
"Courier New";color:navy'>open FH, &#8216;someFile.txt&#8221;;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>In the sample code, the following is not
allowed by &#8220;strict&#8221;; I assume this illustrates the problem you are
having.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font><font
size=2 color=navy face="Courier New"><span style='font-size:10.0pt;font-family:
"Courier New";color:navy'>myLog::open(FH2,&#8217;someFile.txt&#8217;);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>However, in the sample code, I was able to
alias the original symbol &#8220;open()&#8221; in &#8220;main&#8221;; in other
words, I aliased &#8220;main::open()&#8221;. &nbsp;In that case, &#8220;strict&#8221;
applies the (apparent) special handling.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='text-indent:.5in'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'># Alias<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-indent:.5in'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'>*open = \&amp;myLog::open;<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-indent:.5in'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'>open(FH3,&#8217;someFile.txt&#8217;);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>So, that is your solution.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Note &#8211; in the sample code you will
also see an attempt to use the &#8220;Exporter&#8221; module.&nbsp; That didn&#8217;t
work; it seems that &#8220;Exporter&#8221; also makes a special case of &#8220;open()&#8221;
&#8211; it refused to export it.&nbsp; (That code is commented out, the &#8220;__DATA__&#8221;
directive.)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Code appears below.&nbsp; Have fun.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Alexander Danel<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>#!/usr/bin/perl<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>my $fName =
&quot;t.pl&quot;;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>my $fMode =
&quot;&lt;&quot;;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>package myLog;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>sub open{<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;
use Cwd;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;
my ($package, $file, $line_number) = caller();<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;
my $fullpath&nbsp; = Cwd::abs_path($file);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;
if ($_[0]) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
no strict 'refs';<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CORE::open(&quot;::$_[0]&quot;, $_[1]) or die &quot;Cannot open $_[1]:
$!\n&quot;;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;
} else {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CORE::open($_[0], $_[1]) or die &quot;Cannot open $_[1]: $!\n&quot;;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>package main;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>use strict;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>open(FH1,&quot;$fMode
$fName&quot;);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>print &quot;Here
is first line of FH1: &quot;, scalar(&lt;FH1&gt;), &quot;\n&quot;;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>close(FH1);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'># Uncomment the
following code to see the problem -- &quot;strict&quot; will flag it.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>#myLog::open(FH2,&quot;$fMode
$fName&quot;);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>#print &quot;Here
is first line of FH2: &quot;, scalar(&lt;FH2&gt;), &quot;\n&quot;;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>#close(FH2);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'># Alias<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>*open =
\&amp;myLog::open;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>open(FH3,&quot;$fMode
$fName&quot;);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>print &quot;Here
is first line of FH3: &quot;, scalar(&lt;FH3&gt;), &quot;\n&quot;;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>close(FH3);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>__DATA__<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>package
myLogExported;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>use Exporter
'open()' ;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>sub open{<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;
use Cwd;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;
my ($package, $file, $line_number) = caller();<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;
my $fullpath&nbsp; = Cwd::abs_path($file);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;
if ($_[0]) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
#no strict 'refs';<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CORE::open(&quot;::$_[0]&quot;, $_[1]) or die &quot;Cannot open $_[1]:
$!\n&quot;;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;
} else {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CORE::open($_[0], $_[1]) or die &quot;Cannot open $_[1]: $!\n&quot;;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>package main;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>use strict;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>open(FH4,&quot;$fMode
$fName&quot;);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>print &quot;Here
is first line of FH4: &quot;, scalar(&lt;FH4&gt;), &quot;\n&quot;;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>close(FH4);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
chicago-talk-bounces+danel=speakeasy.net@pm.org
[mailto:chicago-talk-bounces+danel=speakeasy.net@pm.org] <b><span
style='font-weight:bold'>On Behalf Of </span></b>tiger peng<br>
<b><span style='font-weight:bold'>Sent:</span></b> Monday, October 25, 2010
2:30 PM<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">Chicago.pm
 chatter</st1:PersonName><br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [Chicago-talk]
logging in and out files</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<div>

<div>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Alex,<br>
<br>
I am trying create a module, say myLog.pm, to override the built-in open
function, adding auxiliary abilities (logging the file access information). <br>
I am looking for minor modification, adding one line &quot;</span></font><font
size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>use
myLog 'open';'</span></font><font size=2 face=Arial><span style='font-size:
10.0pt;font-family:Arial'> in a hundreds of scripts. The developing module
works for the scripts without using typeglob filehandle (open FH, $filename);
if no using &quot;use stricts&quot;, it also works for the typeglob filehandle.<br>
<br>
It seems after overriding, the compiler take the 'FH' in the open function as
calling a subroutine. <br>
<br>
<br>
Tiger,<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>

<hr size=1 width="100%" align=center>

</span></font></div>

<p class=MsoNormal style='margin-bottom:12.0pt'><b><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma;font-weight:bold'>From:</span></font></b><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> Alexander
Danel &lt;danel@speakeasy.net&gt;<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">Chicago.pm
 chatter</st1:PersonName> &lt;chicago-talk@pm.org&gt;<br>
<b><span style='font-weight:bold'>Sent:</span></b> Mon, October 25, 2010
3:10:10 PM<br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [Chicago-talk]
logging in and out files</span></font><o:p></o:p></p>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Tiger,</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Firstly, I noticed you named your function
&#8220;open()&#8221; &#8211; I wouldn&#8217;t use that name, it is the name of
a Perl operator; In fact, you use Perl &#8220;open()&#8221; within your
&#8220;open()&#8221;.</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Secondly, the error message might be
indicating a simple syntax error in preceding code.&nbsp; Look for a missing
semi-colon, etc., in the code just before the error.</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Alexander Danel</span></font><o:p></o:p></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
chicago-talk-bounces+danel=speakeasy.net@pm.org
[mailto:chicago-talk-bounces+danel=speakeasy.net@pm.org] <b><span
style='font-weight:bold'>On Behalf Of </span></b>tiger peng<br>
<b><span style='font-weight:bold'>Sent:</span></b> Monday, October 25, 2010
12:24 PM<br>
<b><span style='font-weight:bold'>To:</span></b> <a href="http://Chicago.pm"
target="_blank">Chicago.pm</a> chatter<br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [Chicago-talk]
logging in and out files</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<div>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Weird, when I tested the module, with </span></font><font
size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>open
FH, $filename; </span></font><font size=2 face=Arial><span style='font-size:
10.0pt;font-family:Arial'>with </span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>use strict; It complain with
message: Bareword &quot;FH&quot; not allowed while &quot;<span
style='background-attachment:scroll;background-position-x:0%;background-position-y:
0%'><span style='background:yellow'>strict subs</span></span>&quot; in
use...&nbsp; </span></font><o:p></o:p></p>

<div>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;</span></font><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;</span></font><o:p></o:p></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>

<hr size=1 width="100%" align=center>

</span></font></div>

<p class=MsoNormal style='margin-bottom:12.0pt'><b><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma;font-weight:bold'>From:</span></font></b><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> tiger
peng &lt;tigerpeng2001@yahoo.com&gt;<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">Chicago.pm
 chatter</st1:PersonName> &lt;chicago-talk@pm.org&gt;<br>
<b><span style='font-weight:bold'>Sent:</span></b> Fri, October 22, 2010
2:11:07 PM<br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [Chicago-talk]
logging in and out files</span></font><o:p></o:p></p>

<div>

<div>

<p class=MsoNormal style='margin-bottom:12.0pt'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'>I tried out a working version below.
It works for $FH and FH, but not clear why.<br>
<br>
</span></font><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'>sub open{<br>
&nbsp;&nbsp;&nbsp; my ($package, $file, $line_number) = caller();<br>
&nbsp;&nbsp;&nbsp; my $fullpath&nbsp; = Cwd::abs_path($file);<br>
&nbsp;&nbsp;&nbsp; my $host = hostname();<br>
&nbsp;&nbsp;&nbsp; _open_log({host=&gt;hostname(),<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
script=&gt;Cwd::abs_path($file),<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
file=&gt;$_[1],<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
);<br>
&nbsp;&nbsp;&nbsp; if ($_[0]) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; no strict 'refs';<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORE::open(&quot;::$_[0]&quot;, $_[1]) or die
&quot;Cannot open $_[1]: $!\n&quot;;<br>
&nbsp;&nbsp;&nbsp; } else {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORE::open($_[0], $_[1]) or die &quot;Cannot
open $_[1]: $!\n&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
}</span></font><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;</span></font><o:p></o:p></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>

<hr size=1 width="100%" align=center>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> imran javaid
&lt;imranjj@gmail.com&gt;<br>
<b><span style='font-weight:bold'>To:</span></b> <a href="http://Chicago.pm"
target="_blank">Chicago.pm</a> chatter &lt;chicago-talk@pm.org&gt;<br>
<b><span style='font-weight:bold'>Sent:</span></b> Thu, October 21, 2010
2:46:29 PM<br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [Chicago-talk]
logging in and out files<br>
</span></font><font size=2 face=Arial><span style='font-size:10.0pt;font-family:
Arial'><br>
This might get you somewhere:<br>
<br>
use strict;<br>
use Symbol;<br>
<br>
sub myopen {<br>
&nbsp; if (ref(\$_[0]) eq 'SCALAR') {<br>
&nbsp; &nbsp; open ($_[0], $_[1]);<br>
&nbsp; } else {<br>
&nbsp; &nbsp; my $in = qualify_to_ref($_[0]);<br>
&nbsp; &nbsp; open($in, $_[1]);<br>
&nbsp; }<br>
}<br>
<br>
myopen(*FILE, &quot;&gt;file.txt&quot;) or die $!;<br>
print FILE &quot;testing\n&quot;;<br>
myopen(my $FILE2, &quot;&gt;file2.txt&quot;) or die $!;<br>
print $FILE2 &quot;testing2\n&quot;;<br>
<br>
If you remove &quot;use strict;&quot; then you can replace &quot;*FILE&quot;
with &quot;FILE&quot;,<br>
but can and should are not the same thing.<br>
<br>
-imran<br>
<br>
On Thu, Oct 21, 2010 at 12:34 PM, tiger peng &lt;<a
href="mailto:tigerpeng2001@yahoo.com" target="_blank"
ymailto="mailto:tigerpeng2001@yahoo.com">tigerpeng2001@yahoo.com</a>&gt; wrote:<br>
&gt; Thanks, it looks a good tool and I will try it later.<br>
&gt;<br>
&gt; But my problem now is how to pass in and back the FH.<br>
&gt;<br>
&gt; It complains with error message:<br>
&gt; Can't use string (&quot;FH&quot;) as a symbol ref while &quot;strict
refs&quot; in use at<br>
&gt; /my/lib/myLogger.pm ...<br>
&gt;<br>
&gt; When I let it do not complain with &quot;no strict 'refs';&quot;, it does
not complain<br>
&gt; but FH seems not opened or not passed back, as the caller read nothing
out.<br>
&gt;<br>
&gt; ________________________________<br>
&gt; From: Joshua &lt;<a href="mailto:joshua.mcadams@gmail.com" target="_blank"
ymailto="mailto:joshua.mcadams@gmail.com">joshua.mcadams@gmail.com</a>&gt;<br>
&gt; To: <a href="http://Chicago.pm" target="_blank">Chicago.pm</a> chatter &lt;<a
href="mailto:chicago-talk@pm.org" target="_blank"
ymailto="mailto:chicago-talk@pm.org">chicago-talk@pm.org</a>&gt;<br>
&gt; Sent: Wed, October 20, 2010 3:29:53 PM<br>
&gt; Subject: Re: [Chicago-talk] logging in and out files<br>
&gt;<br>
&gt; I haven't done this myself before, but it looks like some folks have<br>
&gt; and have put their work on CPAN:<br>
&gt; <a href="http://search.cpan.org/%7Ecwest/ex-override-1.1/override.pm"
target="_blank">http://search.cpan.org/%7Ecwest/ex-override-1.1/override.pm</a><br>
&gt;<br>
&gt; On Wed, Oct 20, 2010 at 9:55 AM, tiger peng &lt;<a
href="mailto:tigerpeng2001@yahoo.com" target="_blank"
ymailto="mailto:tigerpeng2001@yahoo.com">tigerpeng2001@yahoo.com</a>&gt; wrote:<br>
&gt;&gt; I wrapped the open as below, and it works for the open $fh, $file but
not<br>
&gt;&gt; open FH, $file.<br>
&gt;&gt;<br>
&gt;&gt; As I need to apply the wrapping open function to lots of old script, I<br>
&gt;&gt; prefer only add one line: use myLoger 'open'; into the scripts<br>
&gt;&gt;<br>
&gt;&gt; Is there any suggestion?<br>
&gt;&gt;<br>
&gt;&gt; sub open{<br>
&gt;&gt; &nbsp;&nbsp;&nbsp; my ($package, $file, $line_number) = caller();<br>
&gt;&gt; &nbsp;&nbsp;&nbsp; my $fullpath&nbsp; = Cwd::abs_path($file);<br>
&gt;&gt; &nbsp;&nbsp;&nbsp; my $host = hostname();<br>
&gt;&gt; &nbsp;&nbsp;&nbsp; _open_log({host=&gt;hostname(),<br>
&gt;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
script=&gt;Cwd::abs_path($file),<br>
&gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
file=&gt;$_[1],<br>
&gt;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<br>
&gt;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
);<br>
&gt;&gt; &nbsp;&nbsp;&nbsp; CORE::open(shift, shift) or die &quot;Cannot open :
$!\n&quot;;<br>
&gt;&gt; }<br>
&gt;&gt;<br>
&gt;&gt; sub _open_log {<br>
&gt;&gt; ...<br>
&gt;&gt; }<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; ________________________________<br>
&gt;&gt; From: tiger peng &lt;<a href="mailto:tigerpeng2001@yahoo.com"
target="_blank" ymailto="mailto:tigerpeng2001@yahoo.com">tigerpeng2001@yahoo.com</a>&gt;<br>
&gt;&gt; To: <st1:PersonName w:st="on">Chicago.pm chatter</st1:PersonName> &lt;<a
href="mailto:chicago-talk@pm.org" target="_blank"
ymailto="mailto:chicago-talk@pm.org">chicago-talk@pm.org</a>&gt;<br>
&gt;&gt; Sent: Tue, October 19, 2010 11:41:10 AM<br>
&gt;&gt; Subject: [Chicago-talk] logging in and out files<br>
&gt;&gt;<br>
&gt;&gt; Hello all,<br>
&gt;&gt;<br>
&gt;&gt; Does anyone have the experience on tracing input/output files used by
Perl<br>
&gt;&gt; script?<br>
&gt;&gt;<br>
&gt;&gt; I am think if there is anyway to over write the build-in open
function, so<br>
&gt;&gt; the new open function can log the file name, IO type (R, W, or RW), as<br>
&gt;&gt; well<br>
&gt;&gt; as the open/close timestamp. Any suggestion is highly appreciated.<br>
&gt;&gt;<br>
&gt;&gt; Thanks,<br>
&gt;&gt; Tiger<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Chicago-talk mailing list<br>
&gt;&gt; <a href="mailto:Chicago-talk@pm.org" target="_blank"
ymailto="mailto:Chicago-talk@pm.org">Chicago-talk@pm.org</a><br>
&gt;&gt; <a href="http://mail.pm.org/mailman/listinfo/chicago-talk"
target="_blank">http://mail.pm.org/mailman/listinfo/chicago-talk</a><br>
&gt;&gt;<br>
&gt; _______________________________________________<br>
&gt; Chicago-talk mailing list<br>
&gt; <a href="mailto:Chicago-talk@pm.org" target="_blank"
ymailto="mailto:Chicago-talk@pm.org">Chicago-talk@pm.org</a><br>
&gt; <a href="http://mail.pm.org/mailman/listinfo/chicago-talk" target="_blank">http://mail.pm.org/mailman/listinfo/chicago-talk</a><br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Chicago-talk mailing list<br>
&gt; <a href="mailto:Chicago-talk@pm.org" target="_blank"
ymailto="mailto:Chicago-talk@pm.org">Chicago-talk@pm.org</a><br>
&gt; <a href="http://mail.pm.org/mailman/listinfo/chicago-talk" target="_blank">http://mail.pm.org/mailman/listinfo/chicago-talk</a><br>
&gt;<br>
_______________________________________________<br>
Chicago-talk mailing list<br>
<a href="mailto:Chicago-talk@pm.org" target="_blank"
ymailto="mailto:Chicago-talk@pm.org">Chicago-talk@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/chicago-talk" target="_blank">http://mail.pm.org/mailman/listinfo/chicago-talk</a></span></font><o:p></o:p></p>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</body>

</html>