Perl:文件无法识别

时间:2013-09-27 02:52:45

标签: 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

2 个答案:

答案 0 :(得分:3)

stat功能?或者您可能需要lstat来获取链接信息,或者readlink来读取符号链接指向的名称。

statlstat工作的示例:

$ 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
$

答案 1 :(得分: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;