检索列表perl中的元素

时间:2017-09-25 21:28:46

标签: list perl elements

我正在尝试使用perl使用另一个分配了整数的变量从列表中检索元素。

    use File::Copy qw(move)
    my @List;
    my $newDir = "foo/bar";
    my $file = "foo/bar.txt";
    push @List, $file;
    my $file2 = "foo/bar2.txt";
    my $var = 1;
    push @List, $file2;
    move $List[$var-1], $newDir;

而不是移动“文件”,程序失败。

2 个答案:

答案 0 :(得分:0)

my $newDir = foo/bar;

字符串周围缺少引号:

my $newDir = 'foo/bar';

和其他路径类似。

另外,您确定要在move命令的末尾使用带换行符的文件名吗?

此外,像

use File::Copy;

也不见了。

此外,请检查move的返回值:

move $List[$var-1], $newDir or die $!;

答案 1 :(得分:0)

首先,您的代码中没有列表。你有一个名为@List数组,但误导变量不会改变它的含义。 Arrays are not lists

其次,您的代码完全按照我的预期运行。我在move电话上添加了错误报告。这可能有助于追踪您的问题,但我怀疑它是由文件或目录不在您认为的位置引起的。

$ cat move 
#!/usr/bin/perl

use strict;
use warnings;

use File::Copy qw(move);
my @List;
my $newDir = "foo/bar";
my $file = "foo/bar.txt";
push @List, $file;
my $file2 = "foo/bar2.txt";
my $var = 1;
push @List, $file2;
move $List[$var-1], $newDir or warn $!;

$ find foo
foo
foo/bar
foo/bar.txt

$ perl move

$ find foo
foo
foo/bar
foo/bar/bar.txt