我正在学习Perl语言。我认为编写聊天机器人是学习这种语言的一种有趣的方式
可以找到我感兴趣的网站
是否有人知道任何手册或网站特别关注用Perl语言编程聊天机器人
谢谢大家! 您可以使用和获得灵感。请参阅-此处介绍了简单机器人:
,它是POE::Component::IRC的包装器
,它当然使用POE::Component::IRC和Megahal库。Megahal库使用马尔可夫链来回复消息
不要使用Net::IRC-它不再受支持。github上的Openclassifier是一个开源软件,有A
我必须在我的Mongo中找到一种“_id”,我可以使用Mongo shell来完成,但我不能使用Perl API来完成
我正在尝试这样做(mongo shell):
它起作用了!(返回),但我无法使用Perl API实现
$mongo->my_db->my_collection(find({_id => "ObjectId(4d2a0fae9e0a3b4b32f70000"}));
不起作用,因为“ObjectId”不是字符串,但如果是
./mongo
use my_db
d
MacOSX有一个名为的应用程序,它允许设置和检索应用程序配置变量
是否有一个Perl模块允许我读/写这些配置变量,而不必使用qx/?有和模块,但都不支持写。现在请坚持使用默认值
嘿,聪明的头脑
我需要将文本文件加载到哈希中。一行是关键,下一行是值。这会重复几百万次。如何以最佳方式完成这项工作,有什么建议吗
如果密钥是15个字符,值是50个字符,哈希表需要多少内存
谢谢以下代码应将文本文件加载到哈希中:
my %hash;
while (chomp(my $key = <DATA>)) {
chomp(my $val = <DATA>);
$hash{$key} = $val;
}
my%hash;
while(chomp(my
我只是想学习一点Perl,遇到了以下问题:
foreach $element (@{$records})
{
do something;
}
在我的新手眼里,这是这样的:
对于名为@{$records}的数组中的每个元素,执行一些操作
但是,对于一个数组来说,这似乎是一个不太可能的名称(加上“@{$”),我想它不是那么简单吧
我还遇到了一起使用的“%$”。
我知道,%表示散列,$表示标量,但不知道它们一起意味着什么
有人能解释一下这些吗?如果有对数组或散列的引用,可以使用标量来保存引用
我正在查看Perl的File::Find模块,并以以下方式进行了尝试:
#!/usr/bin/perl
use warnings;
use strict;
use File::Find;
find({wanted => \&listfiles,
no_chdir => 1}, ".");
sub listfiles{
print $File::Find::name,"\n";
}
现在,当我运行它时,我得到以下输出:
Noob@Noob:~
考虑:
use URI::Escape;
print uri_unescape("%C3%B3");
产量:195立方米
用这个解码
产出:10
这是预期的结果
我应该使用什么Perl库来获得正确的输出?如果您知道字节序列是,请使用Encode::decode:
use Encode;
use URI::Escape;
my $in = "%C3%B3";
my $text = Encode::decode('utf8', uri_unescape($in));
print length(
我有以下输出数据:
10dvex1_miRNA_ce.out.data|3331
10dvex1_misc_RNA_ce.out.data|0
10dvex1_rRNA_ce.out.data|60
10dvex1_snoRNA_ce.out.data|895
10dvex1_snRNA_ce.out.data|2127
11dvex1_miRNA_ce.out.data|3367
11dvex1_misc_RNA_ce.out.data|0
11dvex1_rRNA_ce.out.data|5
我不知道如何以json格式解析LWP post请求的输出。
我正在使用以下代码:-
use LWP::UserAgent;
use JSON;
my $ua = LWP::UserAgent->new;
my $server_endpoint = URL; #URL contains actual URL
# set custom HTTP request header fields
my $req = HTTP::Request->new(
标签: Perl
perl-criticcpanm
当我在草莓5.20.2(64位PortableZIP版)上尝试cpanm Pod::Spell时,它将I18N::Langinfo标记为依赖项。当它试图下载I18N::Langinfo的发行版时,它会将其定位在R/RJ/RJBS/perl-520.0.tar.gz中,明智地认为最好继续
Pod::Spell仅作为Perl::Critic的依赖项才有意义
有没有关于如何解决这个依赖性问题的建议?很有意思。我在Windows上查找了我的自建Perl,但它也没有安装。我本来希望它能被安装好,这样它就能
我需要创建一个Perl CGI脚本,它将接受单个参数作为输入。该参数将是一个完全限定的URL,脚本将把浏览器重定向到作为参数传递的URL。方法是GET而不是POST
浏览器地址栏将接受带有URL参数的完整脚本,如下所示:
我是Perl新手,我可以通过POST而不是GET来解决这个问题。任何帮助都将不胜感激
我偷了这段代码,但它没有得到一个GET,我想我使用了一个不好的例子,或者一个不适用于我需要做的事情的例子:
更新:这是我的解决方案
#!/usr/local/bin/perl
use stri
我试图将表名传递给一个子集,该子集获取该表的所有字段名,将它们存储到一个数组中,然后将该数组与另一个sql查询的fetchrow结合使用,以显示这些字段中的数据。以下是我现在拥有的代码:
以表名作为参数的子调用示例:
shamoo("reqhead_rec");
shamoo("approv_rec");
shamoo("denial_rec");
沙穆分公司:
sub shamoo
{
my $table = shift;
print uc($table)."\n======
编辑:
这一次我会尝试更好的解释,这是我脚本中的确切代码(很抱歉,这些都是你建议的结果,下面的视频中有apear)
首先,有人说我应该试着在命令行中运行它,脚本在命令行中运行良好(没有警告,当时没有注释),但是当triyng通过apache在浏览器中加载失败时,,请看我在哪里捕获了脚本行为,我试图在视频中显示的内容:
我打开了两个选项卡,第一个选项卡没有定义变量$id\u client,第二个选项卡定义从GET读取的变量$id\u client:?id\u client=36124=>$id\u
我正在使用File::Copy::Recursive::dircopy($original\u dirname,$new\u dirname)或die$从Perl脚本中复制只读目录。我收到一个权限被拒绝的错误
我可以看到创建了$new\u dirname,但标记为只读(与原始目录类似)。可能这会阻止将内容复制到其中?。是的,这显然是File::Copy::Recursive中的一个bug。临时解决方法是将$File::Copy::Recursive::KeepMode设置为0,然后自己执行chm
蜘蛛应:
通过post登录表单登录
通过cookies维护登录状态
在主页中跟随随机链接
蜘蛛的目的是让一个新网站保持忙碌,模拟许多用户正在浏览它
我看过LWP和WWW::Mechanize。不确定应该使用哪个模块,或者其他更好的建议。如果你有代码的例子是非常好的
谢谢。WWW::Mechanize,在这两种选择之间。它的引擎盖下有LWP::UserAgent。我没有使用CPAN模块WWW::Spider的经验,并且知道它远没有WWW::Mechanize那么有名,但是您也可以看看它是否满足您的
给定一个可能失败并出现警告和/或错误的方法,我希望error方法显示在调用方。请执行此脚本:
foo(0); # line 1
sub foo {
1 / shift; # line 4
}
在foo.pl第4行生成错误非法零除,但我希望在foo.pl第1行非法零除。如果我将方法放在模块中或将方法体包装在eval中,应该有几种方法,但我没有找到像这样简单的方法:
sub foo {
attributeErrorsToCaller; # do some mag
如何使用arrayref进行哈希?如果我正确理解您的问题,我认为您正在寻找TMPL\u循环标记
构建一个哈希数组,并将其作为变量传递给param()call。然后使用TMPL\u LOOP构建您在foreach中所做的工作
print $hash{LEFT};
foreach $i ($hash{START}..$hash{END}){
if($pager == $i){
print "<span>$i<span>";
}
else
我想我有一个编码问题。我的perl知识不是很好。使用其他语言更好,但我已经尝试了我能想到的一切,并查看了许多其他帖子
我正在收集一个名字和地址。这可以包含非英语字符。在这种情况下,西班牙语
php进程使用curl来执行.pl脚本,并传递值URLEncoded
pl在.pm中执行一个函数,将数据写入文本文件。没有涉及数据库
pl和.pm都有
use Encode;
use utf8;
binmode (STDIN, 'utf8');
binmode (STDOUT, 'utf8');
定义。下
我需要关于perl的帮助。我是新手。
我想从父perl脚本执行perl脚本,并介绍以下场景:
if (my child script takes more time than my time limit)
{
I need to kill the child script with a return code
logged into my parent script log file
}
if (my child script failed to execute)
{
我是这样提取MAC地址的
my @tmp = split / /, "domain (123.123.123.123) at 00:11:22:33:44:55 [ether] on eth0";
my $vip = $tmp[3];
但是不使用临时变量是否可以执行此操作?是的,它可以:
my $vip = (split / /, "domain (123.123.123.123) at 00:11:22:33:44:55 [ether] on eth0")[3];
您可以使用grep。这
我现在在从CPAN安装依赖项时遇到了一些挫折(试图编写一个在local::lib下工作的安装脚本)。这可能有些过分,但我的Makefile代码是
#!/usr/bin/env perl
use inc::Module::Install;
name 'Statcounts';
all_from 'lib/Statcounts.pm';
requires 'Catalyst::Runtime' => '5.80007';
requires 'Catalyst::Plugin::Config
批处理文件的一个示例:
@echo off
echo starting
setlocal
cd c:\tmp
set A=B
perl -e "$ENV{X}='Y'; system('cmd')"
echo finished
我在Windows 7上运行此脚本,工作目录设置为c:\。
正如预期的那样,脚本打开一个新的命令shell,其工作目录设置为c:\tmp,环境设置如脚本中所定义
作为下一步,我在这个shell中进行了Control-C,在这里我被要求终止批处理作业(Y/N)?。
用Y回
考虑:
文件display.pl
文件temp.pl
当我执行temp.pl时,它给出了一个错误:
在display.pl第2行找不到没有包或对象引用的方法disp
您忘记在display.pl中disp{之前编写sub,因此Perl不知道您正在尝试定义函数
始终使用strict和warnings,这样可以避免此类问题。此外,正如@NEW所指出的,您需要以1结尾display.pl;因为require要求文件以真值结尾
更正后,您的代码将是:
use strict;
use warnings;
我手中有一个相当长的perltk代码,我希望以批处理模式运行模拟(不使用GUI)。e、 我想用“myprog.pl-b”这样的脚本来运行它,而不是在GUI中设置所有参数并单击按钮
我当前的方法是使用一个单独的XML文件进行配置,并使用函数“after”,这意味着GUI将弹出并启动模拟,然后在某个时间后退出。它现在起作用了,但我有一个问题:有没有更好的方法来解决这个问题?有没有可能在后台显示GUI(因此我们不会看到它)而不是弹出?
更改程序,使其可以从图形界面和命令行界面访问。将其真正的功能分解成
我有一个使用连接的Perl脚本。我使用一个子例程打开并读取SQL脚本文件。我只打印了一张记录,我应该还有两张(总共三张记录)。我怎样才能得到所有的记录
结果:
Alert:OUTBOUND_DATA:0
脚本:
my $dbh_oracle = DBI->connect(
$CFG{oracle_dbi_connect},
$CFG{db_user},
$CFG{db_cred},
{AutoCommit =
我正在尝试将Rapidshare上载脚本实现到我的项目中,但它似乎已经过时了。我总是在终端中收到以下错误:
File /home/googles/Downloads/weave_minimal.tgz has 10953 bytes. Calculating MD5HEX...
MD5HEX is 12c7dfef24eb0bb249a1f4723cd8daf6 (10953 bytes analyzed)
Trying to upload to your prem account.
Getti
我必须阅读一些大型Perl脚本,我想知道你们如何像GUI文本编辑器一样在Vim中添加“最小化”括号功能。由于这个原因,我很难理解代码,如果我能最小化那些巨大的If,函数等等。。。我会非常感激的。通过最小化,我想你指的是代码“折叠”
zC递归关闭光标下的所有折叠,zC关闭单个折叠。zo在光标下打开一个折叠,而zR递归打开所有折叠
另见
:help :foldmethod
对于Perl,您将需要:set foldmethod=syntax“folding”这个词,我敢打赌这是一个很难理解的词。
:
我使用的是perl grep,如下例所示。bfh是由open命令创建的用于读取的文件句柄
@searchResults = grep {/,\s*${searchRecId}\s*,\s*${searchSwId}\s*/} <$bfh>;
我不想给出文件句柄或数组。我只想像unix grep命令一样执行它
将覆盖1000个文件。当我读到一个100000行的文件时,当涉及到grep时,我希望直接得到文件名,而不是打开1000个文件句柄并在hashmap中维护 你可以做:
use
我在Perl中使用/创建了很多类,其中一个常见的事情是访问父对象的某些属性。例如,假设我有类A和类B,它们很简单:
A.pm级
package Class_A;
use strict;
use warnings;
sub new {
my $class = shift;
my $this = {
history_data => [],
};
bless $this, $class;
}
package Class_B;
use stric
我有一个Perl脚本,可以从web表单读取一些信息。为了进行适当的清洁,我想使用所描述的系统语法
他们建议您应该以以下形式形成系统命令:system cat,/usr/stats/$username;因此username变量只能被解释为cat的参数
如果我有一个命令的形式是systemexport REPLYTO=\$from\;回音\$body\\邮件-s\$subject\;它有多个系统命令,如何正确清理系统调用?在开始之前,请注意,您可以通过设置$ENV{REPLY_TO}在Perl中进行
标签: Perl
template-toolkit
我有一组电话号码。我想在表格中显示这些数字,每行5个数字。我可以在模板工具包中执行此操作而不修改数据结构吗?您可以使用该插件:
phone_numbers是对电话号码数组的引用,该数组应传递给模板工具包。例如:
...
$data->{phone_numbers} = \@phone_numbers;
$template->process('example.tmpl', $data)
|| die "Template processing failed: ", $templ
我有一个文件如下所示:
I,like
blah...
perl -i -pe 'if ($. == 1) { s/.*/i,am/; }' yourfile.txt
我只想将第一行替换为“I,am”,以获得:
i,am
blah...
这些是大文件,所以我就是这么做的():
我看起来像是来自like的“ke”还在那里。如何去除它?如果替换的长度与原始长度不同,则不能使用此技术。例如,您可以创建一个新文件,然后将其重命名为原始名称
open my $IN, '<', 'input.t
我有一个与postgresql数据库交互的非常简单的GUI。大型机分为4个象限,每个象限有4个条目小部件。下面是一个象限的示例代码
my $f_blue = $bottom_half->Frame(-bg=>'BLUE')-> pack(-side=>'left', -expand=>1, -fill=>'both');
$f_blue->Label(-text=>'BLUE', -bg=>'blue', -fg=>'white')-&
我希望打印的行没有。。在解决了它之后,类似于下面的内容
/local/mnt/LINUX/platform/../source/gnss/api/src/v02.c
/local/mnt/LINUX/project/../source/gnss/api/../../hexagon-infra/q6-00/include/internal.h
请您提供帮助,提前谢谢。您必须使用Cwd模块中的realpath函数:
您必须使用Cwd模块中的函数realpath:
工作
工作
不一定指
/local
我需要检查一个特定的值——一个没有空格的字符串——是否在文件中的特定位置。该文件包含多行数据,每行由*和空格分隔的数据组成。我们寻找的值总是每行的第六个值。例如,otherval1*otherval2*otherval3*otherval4*otherval5*值以获取*等。但在一行中的另一个位置可以找到相同的值。但我们不想得到那个值。此检查期间,其他用户可以打开该文件,因此需要将其删除。做这件事最好最快的方法是什么。我可以想出两种方法:
my $value = "qt7nxve";
my $c
我刚刚开始阅读Perl。我知道现在提出一个我应该继续阅读的问题还为时过早,但我无法控制自己
我是C++开发人员。我在Perl中注意到的是函数是全局的。要使用很多函数,不需要包含任何内容。例如,在C++中,如果要使用字符串,则必须从STL中包含字符串。在perl中,操作字符串或数字数学函数不需要包含任何内容。所以,我的问题是:
为什么要公开一切?如果我想操纵字符串,为什么需要访问数学函数? perl,不像C++,有大量的预定义函数,它们的名称实际上是几乎关键字。根据ikegami上面的评论,它们是
我需要定期(每3-5分钟)通过cron运行Perl脚本。我想确保一次只运行一个Perl脚本实例,所以在前一个周期完成之前,下一个周期不会开始。这可以/应该通过cron、Perl或我需要在脚本级别处理的一些内置功能来实现吗
我对Perl和cron非常陌生,因此非常感谢您的帮助和一般建议。AFAIK Perl没有这种内置功能。您可以在启动应用程序时轻松创建临时文件,并在脚本完成后将其删除。鉴于我通常会编写一个守护进程(服务器),在作业运行之间(即sleep())很好地等待,而不是尝试使用cron进行
所以在这件事上我的头撞到了墙上,老实说,我觉得我错过了一些简单的事情。我还认为我的问题要么是herdoc出了问题,要么是我如何使用STDIN出了问题
不管怎样,当我在命令行上运行下面的脚本是以root用户身份运行时,它不是打印到文件,而是打印到STDOUT,这让我非常困惑
sub do_stuff {
my $resp = <STDIN>;
my $service_file = <<END_FILE;
[Unit]
Description = tc ha
我想提示用户输入,在一段时间后,如果没有响应,脚本必须退出。我有这个密码
eval {
local $SIG{ALRM} = sub { die "timeout getting the input \n" };
alarm 5;
$answer = <STDIN>;
alarm 0;
chomp $answer;
};
if ($@) {
#die $@ if $@ ne
在将必需品加载到系统中时,apt get建议我安装。这似乎是一个愉快的想法,我服从了
在阅读中,我看到一位同行通过CPAN安装和,但随后使用apt get进行安装
在阅读回答之前的几分钟,我已经通过CPAN安装了Dancer。而且它起了作用。这真的很有效
当我通过非CPAN包管理器安装CPAN包时,会发生什么不同?因为我的libtemplate perl来自apt get,或者我的Dancer来自CPAN,所以我需要警惕哪些陷阱?在Debian或基于Debian的发行版(如Ubuntu)上,CP
我正在尝试使用包含umlauts的Email::Sender发送邮件
#!/usr/bin/perl
use strict;
use warnings;
use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTP::TLS;
use Email::Simple ();
use Email::Simple::Creator ();
open(my $mailbody, "<", "mail-con
我已经尝试使用perl-c来查看是否有语法错误。我想我在某种程度上有逻辑上的缺陷。提前感谢您的帮助。首先,open()用于文件。您需要的是opendir()。接下来,当您使用opendir()、readdir()时,它不会保留路径信息,因此您需要将其预先添加到要重命名的文件中。第三,使用词法句柄比使用裸名称更为常见。最后,始终严格使用和使用警告将直接指向问题所在
下面是您的代码的稍微更新版本:
#!/usr/bin/perl
my $dir = '/path/to/dir';
open( DI
我有一个.csv文件。
第二列是日期
日期的格式可能不同
我如何检查以确保它们的格式是否相同,或者我是否可以使用某种方法将所有日期更改为1种特定格式?如果您可以安装DateTime模块,这应该可以工作。你可以添加任何你想要的格式。
您可能会遇到一些问题。您需要特殊的逻辑来处理mmddyy和yymmdd
#!/usr/bin/perl
use strict;
use warnings;
use DateTime;
my $date1 = '2016-01-07';
my $date2 = '0
当我使用下面的代码时,它会给出输出,但我需要“宽度”、“文件\媒体\类型”、“文件\外部”值,但我无法在单个文件中获得该值。我是Perl新手,请帮帮我
代码
输出
$VAR1 = {
'width' => 45,
'file_media_type' => 'image/png',
'file_ext' => 'png',
'PNG_Chunks' => [
我试图从给定的行中正则化一个值并分配给name。我没有得到预期的结果。你能建议一下吗
my line = "manager: CN=rakhi\\, test,OU=Site-SIN,OU=Accounts_user,OU=main,OU=site,";
my $ln = qq{$line};
if ($ln =~ /\(([^)]*)/)
{
print $1;
}
预期结果=trakhi始终使用使用警告和使用严格在您的代码中
我猜您正在期待输出rakhi,如果是,请尝试以下方法:
我有一个简单的脚本来接受标准输入。我要求变量是一个数字。但很明显,标准输入可以采用类似“Hello World”的字符串。我试图通过使用“undef”使变量未定义来删除该变量,但未定义函数使变量为零。然后我对它做一些数学运算,看看未定义的函数是否真的使我的标量值为零,或者它是否正在从内存中删除变量,因为零的自然对数是未定义的
我认为,在完成重要计算(如管理预算)后,能够从脚本中完全删除临时变量的内容是非常重要的。但Perl似乎不同意。是否有任何方法可以使删除的变量不初始化为零
下面是一个Perl
我有一个发送彩色输出的邮件脚本,但是我不能在Unix机器上使用它,因为它没有安装MIME::Lite模块
有人能推荐一种替代方法来获得所需的彩色输出吗
use MIME::Lite;
my (@page_html, @sujet);
my $file = 'rpt.html';
open my $ifh, '<', $file
or die "Cannot open '$file' for reading: $!";
local $/ = "";
my $content
我有一个perl脚本,它使用管道执行另一个脚本:
$pid = open (OUTPUT, "my_script.pl 2>&1 |") || "";
if ($pid) {
while (<OUTPUT>) {
print;
}
close (OUTPUT);
}
$pid=open(输出,“my_script.pl 2>&1|”)||;
如果($pid){
而(){
印刷品;
}
关闭(输出);
}
my_script.pl派生另一个子进程。
使用“/home/andrew/bin/chroot32.sh/home/andrew/arscode.plx”运行代码时,我遇到了perl中的一个错误
我不确定这是perl错误还是其他错误。这是相关部分:
sub record {
(my $ctrl = ars_Login($server, $username,$password,undef,undef,$port )) || die "ars_Login:$ars_errstr";
if (!$ctrl) {prin
我试图通过WebDav协议访问远程服务器,更具体地说,是Perl的HTTP::DAV模块
根据其文档,与远程目录的耦合以以下方式进行:
use HTTP::DAV;
$d = HTTP::DAV->new();
$url = "http://host.org:8080/dav/";
$d->credentials(
-user => "pcollins",
-pass => "mypass"
上一页 1 2 3 4 5 6 7 8 9 ...
下一页 最后一页 共 982 页