Perl将文件从一个位置复制到另一个位置,但不复制内容

Perl将文件从一个位置复制到另一个位置,但不复制内容,perl,Perl,我正在用perl编写一个脚本,其中我正在创建一个文件,并从用户那里获取文件的输入,但当我将该文件复制到其他位置时,该文件正在复制,但它只是空的。我的代码是 # !/usr/bin/perl -w for($i = 1;$i<5;$i++) { open(file1,"</u/man/fr$i.txt"); print "Enter text for file $i"; $txt = <STDIN>; print file1 $txt; open(fil

我正在用perl编写一个脚本,其中我正在创建一个文件,并从用户那里获取文件的输入,但当我将该文件复制到其他位置时,该文件正在复制,但它只是空的。我的代码是

# !/usr/bin/perl -w
for($i = 1;$i<5;$i++)
{
  open(file1,"</u/man/fr$i.txt");
  print "Enter text for file $i";
  $txt = <STDIN>;
  print file1 $txt;
  open(file2,">/u/man/result/fr$i.txt");
  while(<file1>)
  {
     print file2 $_;
  }
  close(file1);
  close(file2);
}
#/usr/bin/perl-w

对于($i=1;$i,正如我在创建新文件时所想的那样,它可能需要这样做,但仍然不起作用

您需要关闭写入的文件句柄,以便能够从该文件中读取

use warnings;
use strict;
use feature 'say';

for my $i (1..4)
{
    my $file = "file_$i.txt";
    open my $fh, '>', $file or die "Can't open $file: $!";

    say $fh "Written to $file";

    # Opening the same filehandle first *closes* it if already open
    open $fh, '<', $file  or die "Can't open $file: $!";

    my $copy = "copy_$i.txt";
    open my $fh_cp, '>', $copy  or die "Can't open $copy: $!";

    while (<$fh>) {
        print $fh_cp $_;
    }
    close $fh_cp;  # in case of early errors in later iterations
    close $fh;
}
使用警告;
严格使用;
使用特征“说”;
我的$i(1..4)
{
my$file=“file_$i.txt”;
打开我的$fh,“>”,$文件或死亡“无法打开$文件:$!”;
说$fh“写入$file”;
#首先打开同一个文件句柄*关闭*它(如果已经打开)

打开$fh,“无法写入未打开的文件句柄。无法读取未打开的文件句柄。永远不要忽略的返回值

!/usr/bin/perl
使用警告;注意错误。
严格禁止愚蠢的事情。
对于我的$i(1..4){#词汇变量,范围
打开我的$FH1,“>”,“/u/man/fr$i.txt”#3参数打开,词法文件句柄,打开进行写入
或者死“$i:$!”#检查open的返回值
打印“输入文件$i的文本:”;
我的$txt=;
打印{$FH1}$txt;
打开我的$FH2,,“/u/man/result/fr$i.txt”或死“$i:$!”;
而(){
打印{$FH3}$\;
}
收盘价$FH3;
}

我使用filehandler1以写入模式打开文件,然后我再次使用相同的filehandler1以读取模式打开文件,然后我打开filehandler2以确定目标,因此它对我来说工作正常。

您打开
file1
进行读取(使用
我也将该文件更改为写入模式,但仍然不工作您想做什么:(1)打开现有文件进行读取,并将其复制到另一个文件--或--(2)打开一个新文件进行写入,写入,然后将其复制到另一个…?我想创建4个文件,然后将它们复制到其他位置。我尝试先打开文件进行写入,然后打开相同的文件进行读取,然后我移动,但结果仍然与我使用的建议相同,这非常有帮助,因为我的文件没有正确打开。感谢我尝试的帮助现在我的代码工作正常吗
system("cp myfile1.txt /somedir/myfile2.txt")
`cp myfile1.txt /somedir/myfile2.txt`
system("cp myfile1.txt /somedir/myfile2.txt")
`cp myfile1.txt /somedir/myfile2.txt`