
No.2ベストアンサー
- 回答日時:
ファイルサイズはファイルテスト演算子の -s で得られます。
-s の用法は次の3通りです。-s ファイル名
-s ファイルハンドル
-s
3番目の用法では、$_ が指定されたものとして動作します。
これを grep の条件に追加すればよいのですが、No.1 の方法では and が , より優先度が低いため、
grep(/^$head$year$mon$mday.*\.csv$/) and (-s, readdir(DIR));
として解釈されて文法エラーとなります。
ですので、and ではなく && を使うか、
grep /^$head$year$mon$mday.*\.csv$/ && -s, readdir DIR;
次のようなブロック構文を使います。
grep { /^$head$year$mon$mday.*\.csv$/ and -s } readdir DIR;
※ブロック構文では、, をつけてはいけません。
もちろんカッコを使って優先度を変更してもできますが、見にくいのでおすすめしません。
grep((/^$head$year$mon$mday.*\.csv$/ and -s), readdir DIR);
※カッコは全て必要です。
この回答への補足
回答ありがとうございます。
0バイトのファイルと正常ファイルを混在させてテストしているのですが、文法エラーは出ないのですが、これでいくと1ファイルも出力されませんでした。
3通りすべて実行しましたが同様でした。grepの後に下記記述がありますが、「該当なし」にとんでしまうようです。
if (@FTPlist){
foreach (@FTPlist) {
print ;
print "\n";
}
else { print "該当なし"; }
}
No.3
- 回答日時:
先ほどはミスコードを提示してしまい失礼しました。
# 言い訳ですが・・普段はブロック構文を使った書き方ばかりしてるので優先度とかすっかり忘れてました。
本題。
-s で $_ のファイルサイズを得ようとしているのですが、$_にはパス情報がありません。
DIR でオープンしたディレクトリがカレントディレクトリでない場合は違うディレクトリを見てしまっているわけです。
なので
-s "パス/$_" と略さず、パス情報も付ける必要があります。
No.1
- 回答日時:
まんま、その条件をgrepの第1引数に加えてやればいいかと思います。
# あと、間違いではないけどカッコが一組冗長ですね。
@FTPlist = grep /^$head$year$mon$mday.*\.csv$/ and -s, readdir(DIR);
参考URL:http://www.rfs.jp/sitebuilder/perl/05/func/x.html
ご回答ありがとうございます。上記記述をコピーして実行してみたのですが、下記エラーが出て動作しませんでした。
Not enough arguments for grep
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba dir の相対パス
-
batファイルでrenameができませ...
-
C言語でファイル名を取得
-
ANSI Cでファイル名、ディレク...
-
ファイル名と更新日付の取得に...
-
下のディレクトリ(3つ)に含ま...
-
MATLAB グローバル変数の宣言
-
エディットボックスの表示方法...
-
ExcelをCSV書き出す場合のシー...
-
window.open でのファイル指定方法
-
read() on unopened filehandle...
-
Javaで同一のファイルを読み込...
-
フォルダが開かなくなりました。
-
CSVが可変長の場合の検索方法
-
全角と半角文字が混在している...
-
VB6で"r"みたいな文字が返って...
-
[awk]uniq -cで複数ファイルの...
-
ファイル名に日付を入れてアッ...
-
バッチファイルで、記号を含む...
-
エクセルVBA コードが同じでも...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
batファイルでrenameができませ...
-
Windowsで複数のファイルを同じ...
-
FindFirstFileとFindNextFileで...
-
readdir()で得られるファイル・...
-
ディレクトリ名を取得したい
-
ディレクトリの判別
-
vba dir の相対パス
-
C言語でファイル名を取得
-
パスから最後のディレクトリだ...
-
複数ファイルの読み込みについて
-
chdirがうまくできない
-
dos変数の%~dp0は powershellで...
-
CGI::Sessionの使い方
-
コマンド「dir」の結果を、テキ...
-
エラー 'dir.h' : No such fi...
-
LinuxのC言語で、ファイル名の...
-
正規表現で、特定のファイル名...
-
フォルダの中身を知りたい
-
シンボリックリンクを検出でき...
-
makefileでファイルをコピー(...
おすすめ情報