gpt4 book ai didi

regex - 如何使用 Perl 从路径中提取文件名?

转载 作者:行者123 更新时间:2023-12-02 01:09:33 24 4
gpt4 key购买 nike

我有一个从数据库填充的 Perl 变量。它的名称是$path。我需要获取另一个变量 $file ,它只包含路径名中的文件名。

我尝试过:

$file = $path =~ s/.*\///;

我对 Perl 很陌生。

最佳答案

为什么要重新发明轮子?使用File::Basename模块:

use File::Basename;
...
$file = basename($path);
<小时/>

为什么$file=$path=~s/.*\///;不起作用?

=~ 具有更高的 precedence=

所以

$file = $path =~s/.*\///;

被视为:

$file = ($path =~s/.*\///);

它在$path中进行替换,并分配1(如果发生替换)或''(如果没有发生替换)。

你想要的是:

($file = $path) =~s/.*\///;

它将$path的值分配给$file,然后在$path中进行替换。

但是这个解决方案同样存在很多问题:

  1. 这是不正确的。基于 Unix 的系统(不确定 Windows)中的文件名可以包含换行符。但 . 默认情况下不匹配换行符。因此,您必须使用 s 修饰符,以便 . 也匹配换行符:

    ($file = $path) =~s/.*\///s;
  2. 最重要的是,它不可移植,因为它假设 / 是路径分隔符,而 Windows 等某些平台的情况并非如此(使用 \) 、Mac(使用 :)。因此,请使用该模块并让它为您处理所有这些问题。

关于regex - 如何使用 Perl 从路径中提取文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4767523/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com