我对perl很陌生,所以我想知道是否有办法
从其他目录(例如,与perl script.pl不同的目录)中打开文件
在同一父目录下打开多个具有相同名称(例如sameName.txt)但具有不同子目录(例如
)的文件import React from "react";
import ReactDOM from "react-dom";
import App from "../shared/App";
import { createStore, applyMiddleware } from "redux";
import { Provider } from "react-redux";
import rootReducer from "../shared/reducers/index";
import { BrowserRouter } from 'react-router-dom';
const preloadedState = window.__PRELOADED_STATE__;
delete window.__PRELOADED_STATE__
const store = createStore(rootReducer, preloadedState);
ReactDOM.hydrate(
<Provider store={store}>
<BrowserRouter>
<App />
</BrowserRouter>
</Provider>
, document.getElementById("app"));
例如上面的例子,但同时,我不想在其他目录中也有相同的文件sameName.txt,例如
directory:
- /alias/a/1/sameName.txt
- /alias/b/1/sameName.txt
- /alias/c/1/sameName.txt
如何使用用户输入directory:
- /alias/a/2/sameName.txt
- /alias/b/2/sameName.txt
- /alias/c/2/sameName.txt
自动搜索用户想要的目录,而不是将其硬编码到脚本perl.pl中,例如,用户希望使用与目录中所有相同的Name.txt文件。目录/1/sameName.txt,但具有不同的父目录,即ab和c文件夹。我要使其自动读取位于不同文件夹中的那些文件sameName.txt,以便用户不必每次创建新路径(例如d / 1 / sameName.txt)时都对脚本进行调整。
如果我希望这些文件中的数据具有相同的名称,但位于不同的目录中,是否应该将其循环播放,例如保存到数组中,还是应该复制所有内容并将其附加到单个文件中?因为我需要在完成脚本的文件之间匹配数据。
答案 0 :(得分:4)
filename参数是一个路径,您可以将其与文件句柄关联以访问其数据:
my $path = '/alias/a/1/sameName.txt';
open my $fh, '<', $path or die "Could not open $path: $!";
您使用不同的文件句柄来区分它们:
my $path2 = '/alias/a/2/sameName.txt';
open my $fh2, '<', $path or die "Could not open $path: $!";
您可以通过获取第一个路径的文件名部分并将其与另一个目录放在一起来构造第二个路径。这些是应该已经存在的核心Perl模块:
use File::Basename;
use File::Spec::Functions;
my $other_dir = '/alias/a/2';
my $basename = basename( $path ); # sameName.txt
my $path2 = catfile( $other_dir, $basename );
您可能对Learning Perl或learn.perl.org上的其他资源感兴趣。