If $i is some string, like: $i = 'abc/def', then,
open (my $myfile, "$i") or die... open (my $myfile, "<$i")or die... #no space after < open (my $myfile, '<', "$i") or die... open (my $myfile, '<', \$i) or die... take your pick...
A few points:-
Given this file ...
$ cat abc/abc.txt line 1 line 2 $
... and this script ...
use strict; use warnings; my $fn = q{abc/abc.txt}; print qq{\nTest 1:\n}; print do{ open my $fh, $fn or die qq{open: Test 1: \n}; <$fh>; }; print qq{\nTest 2:\n}; print do{ open my $fh, qq{<$fn} or die qq{open: Test 2: \n}; <$fh>; }; print qq{\nTest 3:\n}; print do{ open my $fh, qq{< $fn} or die qq{open: Test 3: \n}; <$fh>; }; print qq{\nTest 4:\n}; print do{ open my $fh, q{<}, $fn or die qq{open: Test 4: \n}; <$fh>; }; print qq{\nTest 5:\n}; print do{ open my $fh, q{<}, \$fn or die qq{open: Test 5: \n}; <$fh>; }; print qq{\n};
... the following output is produced.
Test 1: line 1 line 2 Test 2: line 1 line 2 Test 3: line 1 line 2 Test 4: line 1 line 2 Test 5: abc/abc.txt
Note that "Test 2" and "Test 3" work in exactly the same way. Note also that in "Test 5", which is analogous to your fourth code line, the filehandle actually reads the text contained in the scalar, as demonstrated in BrowserUk's response, rather than the file contents.
I hope this is of interest.
Cheers,
JohnGG
In reply to Re^4: Open Function Question
by johngg
in thread Open Function Question
by bichonfrise74
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |