[求助]脚本选择性失效!!help!!

[求助]脚本选择性失效!!help!!

脚本选择性失效!!help!![求助]
  请大家帮帮忙看一个脚本!!这是一个放在ubuntu下nautilus-scripts文件夹的脚本,功能是把你想要文件复制到u盘(不支持文件夹)
问题:对于文件名有空格和文件名是中文的文件都复制不了,不知道怎样解决,望高手们赐教!
还有一个小菜的技术问题,我的脚本复制是调用系统的cp,我本来是想用FILE::COPY的copy函数的,但我试了一下,copy的第一个参数是不能用变量来代替的,而第二个就可以,不知道为什么;而我用文件句柄也不行,不过我不确定我调用的是否正确,请高手解答!!如果大伙们有什么好的意见,还请多多赐教!不胜感激,谢谢1!

#!/usr/bin/perl -w
use strict;
#use File::Copy;
my @file;
foreach(split /\n/,$ENV{NAUTILUS_SCRIPT_SELECTED_URIS}) #这是把选择的文件名付给数组,请看下边!
{
if($_=~s#^file://(/.*)$ # $1 #sx)#把fille///home这样的文件路径转为/home这样的可识别的路径
{
push @file,$_;
}
}
my $path="/media";
my @dir;
foreach(<$path/*>#挂载目录
{
if($_!~/everything.*|winxp|soft.*|cdrom0?/i)#排除我的硬盘,只留下u盘
{
push @dir,$_;
}
}
my $command;
foreach(@file)
{
$command="cp $_ $dir[0]";
system $command;          #调用cp复制文件
}
open AS,">","ddd"||die "can!\n";  #测试阶段:记录要复制的文件名,用作结果的对比!
foreach(@file)
{
print AS "$_\n";
}

nautilus-scripts文件夹
文件夹中的所有执行文件将显示在脚本菜单中。从该菜单中选择某脚本将会执行那个脚本。

当从本地文件夹中执行时,选中的文件名将会被传递给脚本;当从远程文件夹中执行时(如显示 Web 或 FTP 内容的文件夹),脚本将不会使用任何参数。

在各种情况下,下列脚本可以使用的环境变量会被 Nautilus 设置:

NAUTILUS_SCRIPT_SELECTED_FILE_PATHS:用新行分开的所选文件的路径(除非是本地文件)

NAUTILUS_SCRIPT_SELECTED_URIS:用新行分开的所选文件的 URI

NAUTILUS_SCRIPT_CURRENT_URI:当前位置的 URI

NAUTILUS_SCRIPT_WINDOW_GEOMETRY:当前窗口的位置和大小
对于系统cp 用引号将文件引起来


QUOTE:
原帖由 hfahe 于 2008-9-26 09:33 发表
对于系统cp 用引号将文件引起来

同意。特殊文件名(含括号,中文,甚至特殊编码)文件的复制命令要特殊处理
这代码风格,看到我这菜鸟头都晕了。
大伙有没有不用system的方法解决啊?