我正在尝试将CGI脚本迁移到mod_perl使用ModPerl::Registry.
脚本使用与脚本位于同一目录中的模块,但由于mod_perl当前目录位于其他位置,因此不起作用.
我尝试使用FindBin添加到@INC,但这是FindBin看起来像:
$FindBin::Bin: /usr/sbin
$FindBin::Script: httpd
Run Code Online (Sandbox Code Playgroud)
这完全没用.
那么,有没有办法让脚本找出它的位置,并将该目录添加到@INC?理想情况下,使用相同Apache服务器的所有其他脚本都不会将该目录添加到其中@INC.
我在使用之前编写了一些测试代码Proc::Daemon,我的测试代码如下:
#! /usr/bin/perl
use strict;
use warnings;
use Proc::Daemon;
Proc::Daemon::Init();
my $continue = 1;
$SIG{TERM} = sub { $continue = 0 ; }
while ( $continue ) {
sleep(5) ;
&greeting ;
}
sub greeting {
open ( FH, ">>/home/daogu/foo" ) or die "can't open it" ;
print FH "hello word\n" ;
close FH ;
}
Run Code Online (Sandbox Code Playgroud)
在我启动玩具守护进程后,我发现实际上没有写入" foo".任何人都可以解释为什么会这样?谢谢.
我正在尝试为Web索引程序解析HTML文档.为此,我使用HTML :: TokeParser.
我在第一个if语句的最后一行收到错误:
if ( $token->[1] eq 'a' ) {
#href attribute of tag A
my $suffix = $token->[2]{href};
Run Code Online (Sandbox Code Playgroud)
说的是 Can't use string ("<./a>") as a HASH ref while "strict refs" in use at ./indexer.pl line 270, <PAGE_DIR> line 1.
我的问题是(后缀?或<./a>?)是一个字符串,需要变成一个哈希引用?我查看了其他有类似错误的帖子..但我仍然不能确定这一点.谢谢你的帮助.
sub parse_document {
#passed from input
my $html_filename = $_[0];
#base url for links
my $base_url = $_[1];
#created to hold tokens
my @tokens = ();
#created for doc links
my @links = (); …Run Code Online (Sandbox Code Playgroud) 任何人都可以指导我正确的方向......
我有一些文件夹敲击,我想检查尾随/斜杠,一些文件夹没有尾随/如果它没有尾随/我需要添加一个
如果我使用这个正则表达式它可以工作但它替换文件夹名称的最后一个字符
Folder/name/test
folder/name/test1/
folder/name/test2/
replace(/.$/ig,"/");
Run Code Online (Sandbox Code Playgroud)
这个正则表达式取代Folder/name/tes[t]/ 但将取出t并替换它/
希望这有道理......
目前我正在使用s3cmd ls s3://location/ > file.txt获取我的 s3 存储桶的内容列表并保存在 txt 中。但是,上述返回日期、文件大小路径和文件名。
例如:
2011-10-18 08:52 6148 s3://location//picture_1.jpg
Run Code Online (Sandbox Code Playgroud)
我只需要 s3 存储桶的文件名 - 所以在上面的例子中我只需要picture_1.jpg.
有什么建议?
这可以在初始导出后使用 Perl one liner 完成吗?
说,我有一个像这样的shell脚本:
function getDir
{
echo "DirName"
}
Run Code Online (Sandbox Code Playgroud)
我想在Perl脚本中使用该函数:
`source utils.sh`;
my $dir_name = `getDir`;
print $dir_name;
Run Code Online (Sandbox Code Playgroud)
但这不起作用.任何人都可以建议我如何完成这项工作?基本上我需要从shell函数获取返回值到Perl脚本.
我想翻译两个字符的所有字符实例.通常的做法是:
$text =~ s/a/aa/g;
Run Code Online (Sandbox Code Playgroud)
我只想要一个角色的单个实例加倍.所以aa会留下aa而不会变成aaaa.
我想我必须在s///声明中使用变量,但我在这里或网上找不到任何合适的模式.
我正在尝试编写一个调用另一个脚本的Perl脚本,该脚本读取整个目录.我没有得到任何错误,但我也没有得到预期的结果.屏幕上没有任何内容.
我不需要在屏幕上输出任何内容.我在exec()语句中调用的脚本应该将每个图像文件读入DIR目录,并创建一个文件,用于存储从该图像中提取的一些数据.exec()然后循环语句中的脚本,直到读取到目录中的所有图像.
#!/usr/bin/perl -w
use strict;
use warnings;
use diagnostics;
use CGI qw/:standard/;
use CGI::Carp 'fatalsToBrowser';
my $dir = '/FilesToRead/';
my $fichier;
my $ligne;
my $mimetype;
my @listeFichiers;
my $cgi = CGI -> new();
opendir (DIR, $dir) or die "Impossible d'ouvrir $dir: $!";
@listeFichiers = grep {/\.mem$/ && -f "$dir/$_"} readdir (DIR);
while (my $ouvRep = readdir(DIR))
{
foreach $fichier (@listeFichiers)
{
exec "v-file ./param.par ./Picture/$fichier -PM_overflow 3000000" or die "Script perl ne s'est …Run Code Online (Sandbox Code Playgroud) 我已经考虑CGI::Application和CGI::Session.在这两者中,CGI::Session似乎更有希望.CGI::Application然而,模型看起来并不适用于使用Template Toolkit.(这样做我错了吗?)
我想在评估之前评估更多的会话管理库.有什么建议?我正在寻找一个与Web服务器无关的库,并且可以在多个服务器上运行.由于将现有代码改造为Catalyst处理方式所需的时间,Catalyst现在不是一个选项.
我正在尝试使用perl从网络服务/ API获取数据,例如Delicious API.有谁知道如何使用本机API(不是来自CPAN的模块)从网络服务/ API获取此类XML格式数据?