簡體   English   中英

如何從Perl中的其他目錄打開文件?

[英]How to open a file from different directory in perl?

我是perl的新手,所以我想知道是否有辦法

  1. 從其他目錄(例如,與perl script.pl不同的目錄)中打開文件

  2. 在同一父目錄下打開多個具有相同名稱(例如sameName.txt)但具有不同子目錄(例如)的文件

     directory: - /alias/a/1/sameName.txt - /alias/b/1/sameName.txt - /alias/c/1/sameName.txt 

    例如上面的例子,但是同時,我不想在其他目錄中也有相同的文件sameName.txt,例如

     directory: - /alias/a/2/sameName.txt - /alias/b/2/sameName.txt - /alias/c/2/sameName.txt 

    如何使用用戶輸入<STDIN>自動搜索用戶想要的目錄,例如,未將其硬編碼到腳本perl.pl中,用戶想要目錄/ 1 / sameName中具有的所有sameName.txt文件.txt,但具有不同的父文件夾,即ab和c文件夾。 我想讓它自動讀取位於不同文件夾中的那些文件sameName.txt,以便用戶不必每次創建新路徑(例如d / 1 / sameName.txt)時都對腳本進行調整。

  3. 如果我希望這些文件中的數據具有相同的名稱,但位於不同的目錄中,我應該將其循環,例如保存到數組中,還是應該復制所有內容並將其附加到單個文件中? 因為我需要匹配完成腳本的文件之間的數據。

  1. 您可以從任意位置打開文件。

filename參數是一個路徑,您可以將其與文件句柄關聯以訪問其數據:

  my $path = '/alias/a/1/sameName.txt';
  open my $fh, '<', $path or die "Could not open $path: $!";
  1. Perl不在乎其他目錄中的另一個文件是否具有相同的名稱。

您使用不同的文件句柄來區分它們:

  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 );
  1. 不太確定您要做什么。

您可能對Learning Perllearning.perl.org上的其他資源感興趣

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM