2013-09-27 45 views
-2

我有這個文件的Perl:文件無法識別

lrwxrwxrwx. 1 user user  32 Sep 20 15:43 SingletonLock -> user.hostname.com-22222 

我需要perl的識別該文件,並得到它的大小,我可以使用什麼命令呢?

我曾嘗試:

my $size = (lstat("/home/user/.config/google-chrome/SingletonLock -> user.hostname.com-22222"))[7]; 
print $size; 

但是變量是空的,$!No such file or directory

回答

3

stat功能?或者您可能需要lstat以獲取鏈接信息,或者需要readlink來讀取符號鏈接指向的名稱。

stat實例和lstat工作:

$ echo "Petunia" > user.hostname.com-22222 
$ ln -s user.hostname.com-22222 SingletonLock 
$ ls -l user.* Singl* 
lrwxr-xr-x 1 jleffler staff 23 Sep 26 20:24 SingletonLock -> user.hostname.com-22222 
-rw-r--r-- 1 jleffler staff 8 Sep 26 20:24 user.hostname.com-22222 
$ cat stat.pl 
#!/usr/bin/env perl 
use strict; 
use warnings; 

my @names = ("user.hostname.com-22222", "SingletonLock"); 

foreach my $file (@names) 
{ 
    my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, 
      $atime,$mtime,$ctime,$blksize,$blocks) 
     = lstat $file; 
    printf "lstat: %2d (%.5o) - %s\n", $size, $mode, $file; 
    ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, 
      $atime,$mtime,$ctime,$blksize,$blocks) 
     = stat $file; 
    printf "stat: %2d (%.5o) - %s\n", $size, $mode, $file; 
} 
$ perl stat.pl 
lstat: 8 (100644) - user.hostname.com-22222 
stat: 8 (100644) - user.hostname.com-22222 
lstat: 23 (120755) - SingletonLock 
stat: 8 (100644) - SingletonLock 
$ 
+0

我已經嘗試過'stat'和'lstat',但沒有得到任何結果。 – Davico

+0

Waddya是什麼意思?你是怎麼試試的?你怎麼知道你沒有得到結果?你嘗試了哪個? –

+0

錯誤時,'stat'和'lstat'返回一個空列表併爲'$!'分配一個錯誤信息。那是你得到的嗎? '$!'包含什麼? – ikegami

0

只給文件名LSTAT

my $size = (lstat("/home/user/.config/google-chrome/SingletonLock"))[7]; 

如果你想獲得的文件只有大小,你可以使用perl的

-s選項
print -s "/home/user/.config/google-chrome/SingletonLock"; 

$filesize = -s $filename;