我正在尝试使用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;
而不是移动“文件”,程序失败。
答案 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