我有一系列数字:
@numbers = 1,2,3,6,8,9,11,12,13,14,15,20
Run Code Online (Sandbox Code Playgroud)
我想以这种方式打印它:
1-3,6,8-9,11-15,20
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?当然我尝试使用最常见的"循环",但仍然没有得到它.
我有一个变量,我需要传递给子程序.子程序很可能不需要这个变量,并且为变量提供值很昂贵.是否可以创建一个"延迟加载"对象,只有在实际使用时才会对其进行评估?我无法更改子程序本身,因此它仍然看起来像调用者的普通Perl标量.
我正在使用文档中概述的循环结构的修改版本运行HTTP :: Daemon的本地实例.我已经可以根据用户的请求退出循环,但后续执行我的Perl脚本会给我错误:
HTTP ::守护程序:已在使用的地址...在/ path /到/脚本行NNN,第3行传播.
在守护进程之后,我还必须做些什么来成为一个好公民并清理干净?
perl daemon memory-management resource-management http-daemon
我在Windows上运行Strawberry Perl,我想在命令提示符下打印"Default Value",以便用户可以编辑它,然后按Enter键,Perl会将其视为新的STDIN行.我被告知使用IO :: Prompt,但已经确定这在Windows中不起作用.
如果没有使用Tk或其他东西制作GUI,我该怎么做?
假设我有一个像这样的HTML树:
div
`- ul
`- li (*)
`- li (*)
`- li (*)
`- li (*)
`- ul
`- li
`- li
`- li
Run Code Online (Sandbox Code Playgroud)
如何选择<li>标有的元素(*)?它们是第一个<ul>元素的直接后代.
以下是我找到第一个<ul>元素的方法:
my $ul = $div->look_down(_tag => 'ul');
Run Code Online (Sandbox Code Playgroud)
现在我有了$ul,但是当我做的事情如下:
my @li_elements = $ul->look_down(_tag => 'li');
Run Code Online (Sandbox Code Playgroud)
它还会找到<li>隐藏在HTML树中更深层的元素.
我如何找到<li>第一个<ul>元素的直接后代的元素?我的数量不详.(我不能只选择前4个例子).
我有一个看起来像的时间戳25-OCT-10 04.11.00.000000 AM.我正在尝试将其转换为时间格式
Time::Piece->strptime("25-OCT-10 04.11.00.000000 AM","%d-%b-%y %I.%M.%S.%6N %p")
Run Code Online (Sandbox Code Playgroud)
但它一直在抛出错误.我试过%OS,%SZ.他们似乎没有工作.有人能告诉我我做错了什么吗?
我刚刚编写了我的第一个Perl模块,并且无法使用我生成的脚本.以下是我尝试运行使用新创建的模块的脚本时Perl解释器显示的错误.
错误信息:
scraper_tools_v1.pm did not return a true value at getYid.pl line 5.
BEGIN failed--compilation aborted at getYid.pl line 5.
Run Code Online (Sandbox Code Playgroud)
scraper_tools_v1.pm是我编写的Perl模块,getYid.pl是试图利用scraper_tools_v1.pm模块的Perl脚本.
以下是scraper_tools_v1.pm文件的代码:
#!/usr/bin/perl
package scraper_tools_v1;
use strict;
use warnings;
use WWW::Curl::Easy;
# Note this function expects a single parameter which should be in the form of a URL
sub getWebPage($)
{
# Setting up the Curl parameters
my $curl = WWW::Curl::Easy->new; # create a variable to store the curl object
# A parameter set to 1 tells the library to …Run Code Online (Sandbox Code Playgroud) 我在Perl中编写一个需要每晚同时运行的脚本,除非有时需要更改.我在CPAN上找到了Schedule :: Cron,它完成了我想要它做的事情.根据run方法的文档,
nofork => 1
启动调度程序时不要分叉.相反,作业在当前进程中执行.在执行的作业中,您可以完全访问脚本的全局变量,因此可能会影响在不同时间运行的其他作业.
这是我想做的,但它没有做.每当我检查全局变量的内存位置时,它们都是相同的,但是当任务开始时,该值不会更改.
我在Windows和Linux上都运行了这个,我让其他人查看代码,看看我的逻辑是否正确.我需要做些什么来保持对全局变量的更改.
use warnings;
use strict;
use Schedule::Cron;
use Time::localtime;
use constant {
EVERY_DAY_10PM => '* * * * * 4,16,28,40,52',
EVERY_DAY_NOON => '* * * * * 0,12,24,36,48',
EVERY_DAY_2AM => '* * * * * 7,19,31,43,55'
};
############GLOBAL VARIABLES############
our $cron = new Schedule::Cron(\&runUpdate);
our $cronId;
our $updateTimeDirty = 0;
############END GLOBAL VARIABLES############
############MAIN PROGRAM BODY############
$cronId = $cron->add_entry(EVERY_DAY_10PM);#defaults to \&runUpdate
$cron->add_entry(EVERY_DAY_NOON, \&changeTime);
$cron->run(no_fork => 1);
############END MAIN PROGRAM BODY############ …Run Code Online (Sandbox Code Playgroud) 刚刚开始学习Perl,即学习程序流程 - 评估字符串和数字以及使用适当的运算符之间的主要差异.简单的脚本,我在这里让我发疯,因为它是一个超级简单的if if语句,应该在"mike"进入运行并且不起作用.它输出else语句.请帮忙
#!C:\strawberry\perl\bin\perl.exe
use strict;
#use warnings;
#use diagnostics;
print("What is your name please?");
$userName = <STDIN>;
if($userName eq "mike"){
print("correct answer");
}
else{
print("Wrong answer");
}
Run Code Online (Sandbox Code Playgroud) 我有两个服务器在redhat和debian上运行.我使用perl脚本进行mysql备份,在redhat中它工作正常.当我在debian上运行它时,我收到以下错误:
Can't locate Mysql.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at ./dbbackup.pl line 15.
Run Code Online (Sandbox Code Playgroud)
我google了这个错误,发现我需要为perl安装mysql驱动程序.我使用这个命令安装它:
sudo apt-get install libdbd-mysql-perl
Run Code Online (Sandbox Code Playgroud)
答复如下:
Reading package lists... Done
Building dependency tree
Reading state information... Done
libdbd-mysql-perl is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 189 not upgraded.
Run Code Online (Sandbox Code Playgroud)
我仍然得到同样的错误.有人可以帮我吗?我是否需要重新启动任何其他服务?
perl ×10
perl-module ×2
arrays ×1
command-line ×1
daemon ×1
debian ×1
flow ×1
html ×1
html-tree ×1
http-daemon ×1
if-statement ×1
mysql ×1
parsing ×1
stdin ×1
stdout ×1
windows ×1