求教:如何打开一个文件,既可以读,又可以追加写

求教:如何打开一个文件,既可以读,又可以追加写

我发现如果一个文件如下打开:
open FILE, ">>", "file_name"

只可以追加写,不可以读?

如果要读,还需要再重新打开:
open FILE, "<", "file_name"

能不能同时读和追加写?谢谢!
perldoc perlopentut
我不知道你是从哪里学到 open 这个函数的,
不过我觉得只要你找到当初你学 open 的那个地方,肯定会有说明的。
谢谢flw,
我看的是小骆驼书,第4版。刚学perl


我有点糊涂了, 看看下面这两段代码有何不同?

(1)
open FD, ">>", "file_name";

while (<FD>) {
    if (/hello/i) {
        print "match hello\n";
    }
}

(2)
@ARGV = wq/file_name/;

while(<>) {
    if (/hello/i) {
        print "match hello\n";
    }
}


为什么这两段的代码行为不同? 前者不能读和匹配,后者可以读和匹配。

读的文件名指定不一样,肯定不同撒。。。你先了解什么是“@ARGV = wq/file_name/;”先
可能楼上的误解了我的意思,重新叙述一遍:
我当前目录有关文件,文件名为"test"
下面这两段代码行为不同:
(1)
open FD, ">>", "test";

while (<FD>) {
    if (/hello/i) {
        print "match hello\n";
    }
}

(2)
@ARGV = wq/test/;

while(<>) {
    if (/hello/i) {
        print "match hello\n";
    }
}

但是,稍微改动一下,下面这两段代码的行为就相同了:
(1)
open FD, "<", "test";

while (<FD>) {
    if (/hello/i) {
        print "match hello\n";
    }
}

(2)
@ARGV = wq/test/;

while(<>) {
    if (/hello/i) {
        print "match hello\n";
    }
}

所以, 我想弄清楚的是:
为什么用open FD, ">>", "test"; 打开的文件句柄没有读的功能呢?
    还是我的用法不正确?
open FILEHANDLE, MODE, EXPR
The available modes are the following:

QUOTE:
mode        operand        create        truncate
read        <               
write        >        ✓        ✓
append        >>        ✓       

Each of the above modes can also be prefixed with the + character to allow for simultaneous reading and writing.

QUOTE:
mode            operand              create        truncate
read/write                +<               
read/write                +>                        ✓        ✓
read/append    +>>                        ✓

With "+>>"  is READING and APPENDING mode But you must RESET the pointer position with seek()!
For example:
open F, '+>>', 'file.txt';
seek F, 0, 0;
while (<F>) {print $_;}
print F 'something new', "\n";
close F
谢谢umler,解释的相当清楚。

也就是说,如果用"+>>"打开进行文件读的时候,由于读写文件指针指向文件尾(这是由于append的缘故),所以读出的肯定是eof。
如果想读取,首先得要seek到文件开始;
接着要追加的话,首先也得要seek到文件尾。