【问题标题】:assign a folder path, part of which changes between environments, to a variable将文件夹路径(其中一部分在环境之间更改)分配给变量
【发布时间】:2015-02-04 14:57:57
【问题描述】:

在为变量分配动态文件夹路径方面需要帮助。路径的最后一部分是环境的名称(例如 dev、test 或 prod 环境)。

my $logdir=/home/ssr/GC/dpg_CR_CTM

这里 dpg 是环境名称。如果我必须在不同的环境中运行此脚本,则文件夹以该环境名称开头。

有没有办法让它更通用,如下所示?

my $logdir=/home/ssr/GC/*_CR_CTM

【问题讨论】:

  • 脚本是否知道它在哪个环境中运行?
  • 完全不清楚你想做什么。请你能解释得更好吗?您的“环境”是否对应不同的计算机系统?是否只有一个目录与/home/ssr/GC/*_CR_CTM 匹配?
  • 是的,它知道自己在运行哪个环境

标签: perl dynamic path directory


【解决方案1】:

是的。如果* 通配符工作可靠(例如,您没有多个匹配的位置),那么您可以使用glob

my $logdir = glob ( "/home/ssr/GC/*_CR_CTM" );

但请记住,如果有多个匹配项,则只会返回列表中的第一个。

否则,您将需要以某种方式检测您的环境 - 然后用它来决定。 (glob 在这里也可能有帮助)。

【讨论】:

  • 感谢您的回复,但是当我尝试此操作并打印时,我将空字符串输入 logdir。我已经包含了 use File::Glob;除了上述之外,还有什么可以做的吗?谢谢。
  • 你不需要 File::Glob。 glob 是 perl 内置
  • 如果你在一个 shell 中echo /home/ssr/GC/*_CR_CTM,它会给你什么?因为 glob 应该扩展该路径,并在标量上下文中返回第一个“匹配”。 (因此您可以分别使用带有标量/列表上下文的whilefor 循环)
猜你喜欢
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 2020-10-24
  • 2012-05-27
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多