use strict;
use warnings;
sub XX { 30 };
my $rnd = 3;
my $z = -XX * $rnd;
Run Code Online (Sandbox Code Playgroud)
给出错误: Can't use string ("3") as a symbol ref while "strict refs" in use
这无济于事:
my $z = -XX * ($rnd);
Run Code Online (Sandbox Code Playgroud)
我收到下一个错误:
Scalar found where operator expected at game4.pl line 7, near "* ($rnd"
(Missing operator before $rnd?)
syntax error at game4.pl line 7, near "* ($rnd"
Execution of game4.pl aborted due to compilation errors.
Run Code Online (Sandbox Code Playgroud)
如何强制EXPR而不是GLOB取消引用?
我正在使用现有的 perl 模块,我们称之为 Obj。我向 Obj 添加了一些新功能(子例程/方法),但将它们存储在另一个 .pm 中,称为 Foo。但是我不希望 Obj 继承 Foo 的每个子项。
现在我已经阅读了几个小时的 perl 文档并且很困惑。 https://perldoc.perl.org/Exporter#Selecting-What-to-Export 只是说“不要导出方法名称!”
这是一些示例代码,我不想看到 Obj.pm 中的 sub _not_exported:
#!/usr/bin/env perl
use strict;
use warnings;
use diagnostics;
package Foo;# Foo is a new PM file used to extend Obj with collections of subroutine's.
# I want to use hello() from Obj
#use Exporter 'import';
use Exporter qw(import);
our @EXPORT_OK = qw/hello/;
sub hello {
my $self = shift;
$self->{test} = 'Hello world';
}
# I'd rather …Run Code Online (Sandbox Code Playgroud) #!/usr/bin/perl
@month = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
@week = ("Sunday", "Monday","Tuesday", "Wednesday","Thursday", "Friday",
"Saturday");
print "date:\n";
$date=<STDIN>;
print "mon:\n";
$mon=<STDIN>;
print "year:\n";
$year=<STDIN>;
if ( ($year % 400 == 0) || ($year % 4 == 0) && ($year % 100 != 0) )
{
$month[1] = 29 ;
for($i = 0 ; $i < $mon - 1 ; $i++)
{
$s = $s + $month[$i] ;
$s = $s + ($date + …Run Code Online (Sandbox Code Playgroud) 我正在Windows 10上使用Strawberry Perl5。看来我的正则表达式已损坏,或者regex101不会告诉我真相。我想赶上'num km'。即使我的数组似乎是正确的长度,也经常会说“使用未初始化的值”。
my $string = "^?~ --_ 12 km aéeklwa 32 km | \|Ä?^ 0 km 23-24 km";
if (@szelmatches = $string =~ /\d+(\-\d+)?\s+km/gm) {
my $number_of_elements = scalar(@szelmatches);
print "Elements in the array : $number_of_elements \n";
}
foreach (@szelmatches) {
print "$_\n";
}
Run Code Online (Sandbox Code Playgroud)
输出:
数组中的元素:4
在C:\ misc \ perlek \ wttr \ szel.pl第16行的串联(。)或字符串中使用未初始化的值$ _。
我已经运行define()检查,但似乎我的数组元素都已定义。将\-更改为。{1}有时是可行的,但是这样写很烦人。regex101.com和regexr.com告诉我一切都很好。
我知道您可以将它写得更简单/更短/更好/更快/更精细,但老实说,这应该可行。你们知道我在做什么错吗?
我正在尝试对现有的 Perl 脚本进行更改。我正在尝试添加一个在不同位置多次调用的子程序,并根据调用位置打印不同的输出。
基本上,它创建一个文件并为业务团队编写一些业务消息(我是其中的一员,因此是我第一次用 Perl 编码)。
我想要/正在尝试的是
Sub filemessage ($arg1) {
open(fh, '>', $message_file);
print fh "$arg1/n";
close fh;
}
Run Code Online (Sandbox Code Playgroud)
现在我想在很多地方(在其他子例程内)像这样调用这个子例程(已经有一个失败条件基于它被调用):
filemessage ("failed due to reason1")
filemessage ("failed due to reason2")
Run Code Online (Sandbox Code Playgroud) 我有一个网站列出了英国王冠的继承线.由于继承线是一个有序列表,该网站的主要部分是在<ol>.
然而,有一个皱纹.人们偶尔会退出继承(最常见的是与天主教徒结婚).例如,看到肯特王子迈克尔在1978-06-29被排在第16位,但第二天他已经从名单中消失,因为他在那天与天主教徒结婚.
目前,正如您所看到的,当他们被排除在继承之外时,我只会将人员从列表中删除.但实际上,我想要包含它们,但在列表中使用"暗淡"字体作为其条目.但这给了我另一个问题.然后,我可以不再使用有序列表,因为被排除的人在继承中没有位置.所以我需要省略有序列表中某些项目的编号.
所以我正在寻找模拟有序列表的最佳方法,但能够省略某些列表项上的数字.我有一些想法:
<ul>并添加我自己的号码.我可以设计它以取出子弹并使数字突出吗?但我想知道是否存在我缺少的CSS和/或HTML技巧.有没有更简单的方法来实现我正在寻找的东西?
更新:当前的HTML如下所示:
<ol>
<li itemscope itemtype="http://schema.org/Person"><span itemprop="name">The Prince Charles, Prince of Wales</span>
<br><span class="small">Age 69
(born <a title="Line of Succession on 14 November 1948" href="/1948-11-14">14 November 1948</a>),
<br>Son of the sovereign</span></li>
<li itemscope itemtype="http://schema.org/Person"><span itemprop="name">Prince William, Duke of Cambridge</span>
<br><span class="small">Age 35
(born <a title="Line of Succession on 21 June 1982" href="/1982-06-21">21 June 1982</a>),
<br>Grandson of the sovereign</span></li>
<li itemscope itemtype="http://schema.org/Person"><span itemprop="name">Prince George …Run Code Online (Sandbox Code Playgroud) 我想发送一个命令,例如,执行ping:
ping google.es -n 500
Run Code Online (Sandbox Code Playgroud)
我可以用以下命令执行命令:
my $command = "ping google.es -n 500";
system($command);
Run Code Online (Sandbox Code Playgroud)
我会在运行时打印输出.
我可以将它存储到变量中:
my $command = "ping google.es -n 500";
my $output = `$command`;
Run Code Online (Sandbox Code Playgroud)
但是如何获取命令的输出WHILE它正在运行,然后在变量中使用输出?
我看到这样的解决方案,但它不起作用.它运行脚本,完成后将打印结果:
my $variable = '';
open my $command_pipe, "-|", $command or die "Pipe from $command failed: $!";
while (<$command_pipe>) {
print $_;
$variable . = $_;
}
Run Code Online (Sandbox Code Playgroud)
更新:显示问题的示例.我有2个perl脚本,一个调用另一个:
test.pl:
use strict;
use warnings;
my $command = 'perl test2.pl';
print "Localtime: " . localtime() . "\n";
my $variable …Run Code Online (Sandbox Code Playgroud) 如何在Perl最新版本的列表中间添加项目。如果有任何方法,请帮助我,例如:
@array=qw(apple mango waterlemon pineapple lemon);
print("@array\n");
Run Code Online (Sandbox Code Playgroud)
这是代码,现在我需要在列表中添加带有index [3]的“ sapota”项。我该如何添加
我在文本文件中有一个netflow信息报告,我想将它们导出为csv格式,如何在Perl中做到这一点?我是Perl的新手,只是开始学习它。
这是文本文件:
Duration Flags
10.10.10.1 10.10.11.11 51251 445 2019-03-05 11:59:29.008 29.156 ......
10.10.10.2 10.10.11.22 51234 123 2019-03-05 11:40:29.008 30.156 .A..SF
Run Code Online (Sandbox Code Playgroud)
我想将其导出为excel格式,如下所示。
10.10.10.1,10.10.11.11,51251,445,2019-03-05 11:59:29.008,29.156,......
10.10.10.2,10.10.11.22,51234,123,2019-03-05 11:59:29.008,30.156,.A..SF
Run Code Online (Sandbox Code Playgroud)
我试图做如下
use strict;
use warnings;
open my $fh, '<', 'file.txt';
open my $fo, '>', 'file.csv';
while (<$fh>) {
next if ($. == 1);
s/\b \b/,/g;
my $text = (join ',', (split /\s+/, $_))."\n";
print $fo $text;
}
Run Code Online (Sandbox Code Playgroud)
但结果是开始的每一行都会再加上一个',',如下所示,
,10.10.10.1,10.10.11.11,51251,445,2019-03-05 11:59:29.008,29.156,......
,10.10.10.2,10.10.11.22,51234,123,2019-03-05 11:59:29.008,30.156,.A..SF
Run Code Online (Sandbox Code Playgroud)
这就是我想要的,我的代码有什么问题?
10.10.10.1,10.10.11.11,51251,445,2019-03-05 11:59:29.008,29.156,......
10.10.10.2,10.10.11.22,51234,123,2019-03-05 11:59:29.008,30.156,.A..SF
Run Code Online (Sandbox Code Playgroud)
无论如何这样做?谢谢。
我们使用的是Perl 5,版本18,版本1(v5.18.1)。
之前我们将Outlook 2007连接到使用用户和密码通过Mail :: IMAPClient模块进行连接,因为不需要使用SSL或TLS。现在,我们已将Outlook迁移到2016年,在此版本中,必须引入SSL或TLS。
我试图在Perl脚本中添加SSL代码,但失败如下:
无法通过包“ IO :: Socket :: SSL”找到对象方法“新”(也许您忘记加载“ IO :: Socket :: SSL”了吗?)
我的代码:
$client = Mail::IMAPClient->new(
server => $Eserver,
User => $Euser,
Password => $Epassword,
ssl => 1,
port => 993,
Socket => IO::Socket::SSL->new
( Proto => 'tcp',
PeerAddr => $Eserver,
PeerPort => 993, # IMAP over SSL standard port
),
Run Code Online (Sandbox Code Playgroud)
如果有人以正确的方式在IMAP客户端中添加ssl模块,是否可以提供帮助。是否需要将Perl 5升级到最新版本以使用SSL或TLS(使用starttls方法?)。
另外,我们如何知道我们正在使用哪个IMAPclient模块?
我确定有些东西丢失了。不确定,因为我在Perl工作时很幼稚。