師匠の散歩

きままにPerlでも

ディレクトリ一覧

opendir と globの操作 対象ディレクトリ/ subGlob.cgi

opendir ./data/ 
  1.  .
  2.  ..
  3.  112034.jpg
  4.  112034_s.jpg
  5.  20200918.html
  6.  euc.txt
  7.  land.in
  8.  land_rgs2tky.in
  9.  land_tky2wgs.out
  10.  land_tky2wgs_hosei.out
  11.  land_wgs2tky.out
  12.  land_wgs2tky_hosei.out
  13.  rgb.csv
  14.  sea.in
  15.  sea_tky2wgs.txt
  16.  sea_tky2wgs_hosei.txt
  17.  sea_wgs2tky.txt
  18.  sea_wgs2tky_hosei.txt
  19.  shiftjis.txt
  20.  test_gml.xml
  21.  utf8.txt
glob ./data/ 
  1.  112034.jpg
  2.  112034_s.jpg
  3.  20200918.html
  4.  euc.txt
  5.  land.in
  6.  land_rgs2tky.in
  7.  land_tky2wgs.out
  8.  land_tky2wgs_hosei.out
  9.  land_wgs2tky.out
  10.  land_wgs2tky_hosei.out
  11.  rgb.csv
  12.  sea.in
  13.  sea_tky2wgs.txt
  14.  sea_tky2wgs_hosei.txt
  15.  sea_wgs2tky.txt
  16.  sea_wgs2tky_hosei.txt
  17.  shiftjis.txt
  18.  test_gml.xml
  19.  utf8.txt
# --------------------------------------------------------------
# opendir を使うと、「.」 と「 ..」 はファイルとして表示される
# --------------------------------------------------------------
opendir DH, $readDirectory or die $!;
while (my $dir = readdir DH) {
  print "$dir \n";
}

# --------------------------------------------------------------
# glob の場合は、「.」 と「 ..」で始まるものは表示されない
# 2010* とすれば「2010から始まるファイル」
# *.txt とすれば「拡張子 txtのファイル」
# chdir していないと、パスを含めたファイル名が戻るため、
# $_=~ s/$readDirectory//; とすることで、ファイルのみになる
# --------------------------------------------------------------
my @files = glob "$readDirectory"."track201*.gpx";  # 201x年のgpxファイルを抜き出す
foreach (@files) {
  $_=~ s/$readDirectory//;                          # パスの部分を削除
  print "$_ \n";
}
#print join( "\n", @files );

ファイル一覧ウインドーを開いてファイルをクリックして選択する方法は見つからなかった。 対応としては、ファイル一覧を取得し、FORMでファイル選択させるしかなさそうだ。

例:<input type=radio name=file value=$filename>$filename

subGlob.cgi // Topに戻る // indexに戻る
Copyright(C) 2009-2021 Grandmaster Last up : 2020/09/18