2013-09-27 44 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;