2009年11月17日星期二

[PerlChina] Re: 关于在rename的使用

rename 可以覆盖已经存在的文件名啊, 没有问题

就和mv一样的


2009/11/17 Troy <magicxiaowei@gmail.com>

 rename OLDNAME,NEWNAME
              Changes the name of a file; an existing file NEWNAME
will be
              clobbered.  Returns true for success, false otherwise.
好像是newname不能是已经存在的文件名

btw,既然用了File::Copy,为啥还要用rename

NAME
      File::Copy - Copy files or filehandles

SYNOPSIS
              use File::Copy;

              copy("file1","file2") or die "Copy failed: $!";
              copy("Copy.pm",\*STDOUT);
              move("/dev1/fileA","/dev2/fileB");

              use File::Copy "cp";

              $n = FileHandle->new("/a/file","r");
              cp($n,"x");



On 11月16日, 下午3时17分, earthminator <naz...@163.com> wrote:
> 在Linux中编写一个程序,目的是从mol文件夹中调取文件到operation文件夹中运行,再把结果传到result文件中。因为
> dssmol.exe只能运行input.mol的文件,所以要把它改名。比且运行结果是一个output文件,然后要把它在给名放到result文件
> 夹中。于是我编写如下程序:
> #!/usr/bin/perl
>
> use Cwd;
> use File::Path;
> use Shell;
> use File::Copy;
>
> $home_dir = cwd;
> $mol_dir = $home_dir .'/mols';
> $operation_dir = $home_dir .'/operation';
> $result_dir = $home_dir.'/result';
> chair ($mol_dir);  #change to molecules directory
> @mol = glob ('*.mol');  #get all molecules files
> $mol_num = @mol;
> print "Total @mol_num molecules.\n";
> $i=0;
> while ($i<$mol_num) {
>    print "mol_num[$i]";
>      rename ("mol_num[$i] , input.mol")||die   $!;
>        move "input.mol , /home_dir/operation";
>        system "rm -rf $input.mol";
>        chair($operation_dir); #begin to run MODEL under this directory
>        system " ./dssmol.exe";
>           move "output , /home_dir/result/";
>              system "rm -rf $input.mol";
>              system "rm -rf $output";
>                 chair($result_dir); #change to result directory
>              rename ("output , $i")||die   $!;
>              system "rm -rf $output";
>
>    i++};
> 在运行后出现的问题是
> Not enough arguments for rename at mol1.pl line 22, near ""mol_num
> [$i] , input.mol")"
> Not enough arguments for rename at mol1.pl line 31, near ""output ,
> $i")"
> Execution of mol1.pl aborted due to compilation errors.
>
> 由于刚学perl,我不知道怎么处理这个问题。。。




--
           Yours Sincerely
                   Zeng Hong

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

没有评论: