标签: slurp

Perl的Slurp模块如何工作?

我看了一下Slurp的来源,我很想知道它是如何slurp()工作的:

sub slurp { 
    local( $/, @ARGV ) = ( wantarray ? $/ : undef, @_ ); 
    return <ARGV>;
}
Run Code Online (Sandbox Code Playgroud)

文件在哪里打开?

perl slurp

2
推荐指数
2
解决办法
315
查看次数

'没有这样的文件或目录',即使我拥有该文件,并且它拥有对每个人的读取权限

我在CentOS上有一个perl脚本,我正在尝试使用File :: Slurp读取文件:

my $local_filelist = '~/filelist.log';
use File::Slurp;
my @files = read_file($local_filelist);
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

Carp::croak('read_file \'~/filelist.log\' - sysopen: No such file or directory') called at /usr/local/share/perl5/File/Slurp.pm line 802
Run Code Online (Sandbox Code Playgroud)

尽管事实上我正在以myuser身份运行脚本,并且:

(2013-07-26 06:55:16 [myuser@mybox ~]$ ls -l ~/filelist.log
-rw-r--r--. 1 myuser myuser 63629044 Jul 24 22:18 /home/myuser/filelist.log
Run Code Online (Sandbox Code Playgroud)

这是在CentOS 6.4上的perl 5.10.1 x86_64.

可能是什么导致了这个?

permissions perl slurp centos file

1
推荐指数
1
解决办法
151
查看次数

如何将文件内容读入Perl标量?

我想要做的是从另一台服务器获取文件的内容.既然我不和perl一致,也不知道它的mods和函数iv'e就是这样:

 my $fileContents;
 if( $md5Con =~ m/\.php$/g ) {
     my $ftp = Net::FTP->new($DB_ftpserver, Debug => 0) or die "Cannot connect to some.host.name: $@";
     $ftp->login($DB_ftpuser, $DB_ftppass) or die "Cannot login ", $ftp->message;
     $ftp->get("/" . $root . $webpage, "c:/perlscripts/" . md5_hex($md5Con) . "-code.php") or die $ftp->message;
     open FILE, ">>c:/perlscripts/" . md5_hex($md5Con) . "-code.php" or die $!;
     $fileContents = <FILE>;
     close(FILE);
     unlink("c:/perlscripts/" . md5_hex($md5Con) . "-code.php");
     $ftp->quit;
 }
Run Code Online (Sandbox Code Playgroud)

我认为id做的是从服务器获取文件,放在我的本地机器上,编辑内容,上传到任何地方然后删除临时文件.

但我似乎无法弄清楚如何获取文件的内容;

open FILE, ">>c:/perlscripts/" . md5_hex($md5Con) . "-code.php" or die $!;
$fileContents = <FILE>; …
Run Code Online (Sandbox Code Playgroud)

html perl slurp file

0
推荐指数
2
解决办法
2122
查看次数

奇怪的perl行为.Slurp与作业

我在perl中遇到了一些奇怪的东西,我以为我会分享.我有一个名为"testfile.txt"的文本文件.

这里是....

BLAH BLAH BLAH BLAH BLAH
The dollar amount is $2.30 today
BLAH BLAH BLAH BLAH BLAH
Run Code Online (Sandbox Code Playgroud)

现在我想提取2.30.在我下面的例子中,我正在啜饮文件,它工作正常.第二种方式根本不起作用.啜饮中有一些神奇的东西吗?

#!/usr/local/bin/perl

## THIS WORKS
my $content;
my $filename = "testfile.txt";
my $fh="FILEIN";
open(my $fh, '<', $filename) or die "cannot open file $filename";
{
   local $/;
   $content = <$fh>;
}
close($fh);
my $price;
($price)=$content=~m{is\s\$([0-9]{1,2}\.[0-9]{2})\stoday};
print "Result is $price\n"; #Correctly produces 2.30

## DOESN'T WORK

$content2="BLAH BLAH BLAH BLAH BLAH The dollar amount is $2.30 today BLAH BLAH BLAH BLAH BLAH";
my $price2; …
Run Code Online (Sandbox Code Playgroud)

regex perl scalar slurp

0
推荐指数
1
解决办法
85
查看次数

标签 统计

perl ×4

slurp ×4

file ×2

centos ×1

html ×1

permissions ×1

regex ×1

scalar ×1