如何在Perl中合并目录路径

user1188611:

我有一个Perl脚本,在其中我给出了目录的路径作为输入。目录中包含xml文件。

在我的代码中,我遍历所有xml文件并为所有xml文件创建绝对路径。代码运行正常。

#!/usr/bin/perl

use File::Spec;

$num_args = $#ARGV + 1;
if ($num_args != 1) {
   print "\nUsage: $0 <input directory>\n";
   exit;
}

my $dirPath = $ARGV[0];

opendir(DIR, $dirPath);
my @docs = grep(/\.xml$/,readdir(DIR));

foreach my $file (@docs) 
{
   my $abs_path = join("",$dir,$file);

   print "absolute path is $abs_path";
}

我在这里的问题是,在没有分隔符的情况下连接$ dirPath和$ file意味着$ dirPath必须以“ /”结尾。因此,在perl中是否有任何方法或内置函数可以照顾这种情况并替换join方法。

我想要的只是不要担心分隔符“ /”。即使使用“ / test / dir_to_process”或“ / test / dir_to_process /”路径调用脚本,我也应该能够为存在的所有xml文件生成正确的绝对路径,而不必担心分隔符。

让我知道是否有人有任何建议。

波罗丁:

注意您的建议。当对先前帖子的评论和答案被忽略时,不停地提出问题是荒谬的。

必须始终 use strictuse warnings在顶部每个你写Perl程序,并使用声明每个变量my这并不难,如果发布的代码没有采取这些措施,您将受到谴责。

useFile::Spec你的程序模块,但从来没有使用它。通常File::Spec::Functions,它更容易使用,因为它导出了提供的方法,File::Spec因此无需使用面向对象的调用样式。

catfile将正确将文件(或目录)名称连接到路径,如果路径分隔符不正确,则会做正确的事情。程序的这种重写工作正常。

#!/usr/bin/perl

use strict;
use warnings;

use File::Spec::Functions 'catfile';

if (@ARGV != 1) {
   print "\nUsage: $0 <input directory>\n";
   exit;
}

my ($dir_path) = @ARGV;
my $xml_pattern = catfile($dir_path, '*.xml');

while ( my $xml_file = glob($xml_pattern) ) {
   print "Absolute path is $xml_file\n";
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Perl中更改目录?

如何在Perl中归档目录

如何在Perl中循环浏览目录

如何在带有目录路径的目录中查找图片

如何在C ++中的不交集中合并路径压缩?

如何在Ubuntu 16.04中合并两个目录?

如何在Python中获取%APPDATA%目录的路径?

如何在JUnit中获取src / test / resources目录的路径?

如何在python中获取父目录的路径

如何在Java中获取执行目录路径

如何在Android中获取内部Downloads目录的路径?

如何在bash中获取给定路径的根目录?

如何在VSCode中隐藏目录/功能路径顶部栏

如何在bash脚本中包含包含文件的目录路径

如何在Ubuntu 18.04中复制当前目录的路径

如何在Mac中打开路径目录

如何在Perl 6中合并两个SetHashes?

如何在多个文件的Perl脚本中更新路径

如何在Perl Dancer中获得公共路径

如何在Perl的路径中将目录上移两个级别?

如果子目录中的文件表达了如何合并路由路径

如何在终端中打开文件或目录而不输入完整目录路径?

如何在目录及其子目录中列出某些文件类型的完整路径?

如何在指定路径下创建目录?

如何在Perl中提取Unix路径

PhpStorm 如何在“在路径中查找”对话框中选择在活动文件的目录中搜索?

如何在Azure DevOps中的发布管道中读取工件的目录路径?

如何在package.json中的项目目录中为gulp文件创建路径

在Perl中获取相对于主目录的路径