最近,我问了一个关于调试seg错误的问题:在Perl中调试seg错误有哪些好的方法或步骤?.有人提到Symbol有一些深刻的XS魔法.
我想知道我是否可以找到Perl核心模块的错误历史记录.我尝试查看CPAN,但更改文档保留在项目级别而不是模块级别.
看,我们运行Perl 5.8.2和Symbol v1.05,我只是想知道我们的一个问题是否与该版本和当前版本之间发生的错误修正有关.
我需要在哈希中获取某个键的所有值.哈希看起来像这样:
$bean = {
Key1 => {
Key4 => 4,
Key5 => 9,
Key6 => 10,
},
Key2 => {
Key7 => 5,
Key8 => 9,
},
};
Run Code Online (Sandbox Code Playgroud)
我只需要值Key4,Key5并Key6为例子.其余的不是兴趣点.我怎么能得到价值观?
更新:所以我没有%bean我只是添加这样的值$bean:
$bean->{'Key1'}->{'Key4'} = $value;
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
我知道我想做的这种事情曾经用于5.8.难道我做错了什么?在Perl 5.10中有没有办法回到那里?
这是模块:
package TableMod;
use base qw<Exporter>;
our @EXPORT_OK = qw<mod_table>;
use Data::Dumper;
sub mod_table (\%@) { print Dumper( @_ ); }
1;
Run Code Online (Sandbox Code Playgroud)
以下是脚本:
use strict;
use warnings;
use Data::Dumper;
use Test::More tests => 4;
sub mod_table_here (\%@) {
print Dumper( @_ );
}
use_ok( 'TableMod', 'mod_table' );
can_ok( __PACKAGE__, 'mod_table' );
is( prototype( \&mod_table_here ), '\\%@'
, q/prototype( \&mod_table_here ) = '\%@'/
);
is( prototype( \&mod_table ), prototype( \&mod_table_here )
, 'prototypes ARE the SAME!'
); …Run Code Online (Sandbox Code Playgroud) 这是我正在使用的代码片段:
my %photo_details = (
'black_cat' => (
('size' => '1600x1200', 'position' => -25),
('size' => '1280x1024', 'position' => 25),
('size' => '800x600', 'position' => 0),
),
'race_car' => (
('size' => '1600x1200', 'position' => 10),
('size' => '800x600', 'position' => 5),
),
);
my $photo = 'black_cat';
foreach my $photo_detail ($photo_details{$photo})
{
my $size = $photo_detail{'size'};
my $position = $photo_detail{'position'};
print ("size = $size, position = $position\n");
}
Run Code Online (Sandbox Code Playgroud)
我期待得到的是:
size = 1600x1200,position = -25
size = 1280x1024,position = 25 …
我正在做一个小型数据挖掘项目,其中perl脚本从SQL数据库中获取信息并对其进行解析.数据由几个时间戳组成.我想知道在任何特定日期存在多少特定类型的时间戳.不幸的是,这是我的第一个perl脚本,而且当涉及到哈希和数组时,perl的性质令我感到困惑.
代码段:
my %values=();#A hash of the total values of each type of data of each day.
#The key is the day, and each key stores an array of each of the values I need.
my @proposal;
#[drafted timestamp(0), submitted timestamp(1), attny approved timestamp(2),Organiziation approved timestamp(3), Other approval timestamp(4), Approved Timestamp(5)]
while(@proposal=$sqlresults->fetchrow_array()){
#TODO: check to make sure proposal is valid
#Increment the number of timestamps of each type on each particular date
my $i;
for($i=0;$i<=5;$i++)
$values{$proposal[$i]}[$i]++;
#Update rolling average of …Run Code Online (Sandbox Code Playgroud) #!/usr/bin/perl
use strict;
use warnings;
my $s = "sad day
Good day
May be Bad Day
";
$s =~ s/\w+ \w+/_/gm;
print $s;
Run Code Online (Sandbox Code Playgroud)
我试图用_替换单词之间的所有空格,但它不起作用.这有什么问题?
我正在构建一个模块,它连接到相机,拍照,并将数据读入一个小提琴.所有这些都发生在Inline :: C命令中.使用PDL文档中的过程,我可以创建pdl *并返回它.然而,相机可能无法拍照,在这种情况下,我希望0按照通常的协议返回my $pic_pdl = $Camera->TakePicture or die "Failed to take image".这似乎意味着我将需要使用该Inline_Stack_Push机制,但我不知道如何正确地将其pdl *转换为SV*.如果可能的话,我也想设置$!错误代码.可以在Inline中完成吗?
我是perl的新手,有一点问题:
perl代码的一部分:
print "${data_dir}\n";
#converting directory path to unix format (replacing all backslashes with slashes)
$data_dir = ~s/\\/\//g;
print "${data_dir}\n";
Run Code Online (Sandbox Code Playgroud)
输出:
C:/dev/../data
4294967295
Run Code Online (Sandbox Code Playgroud)
为什么结果不同?我猜这个$data_dir变量中的问题,因为这适用于其他字符串,但可能是什么问题?
PS $data_dir我从其他模块中获取,并且不知道它是如何构建的.
是否可以创建到终端设备上的开放端口的套接字连接.
如果连接丢失打印的东西?
我看过一些例子,但它们需要服务器类型脚本和客户端,只需要查找客户端.
谢谢
我正在使用Perl CGI.我在后台通过Perl CGI运行SCP命令.喜欢
system("scp -r machinename:/PathOfFile/ /Path/WhereToCopyIt/ &")
Run Code Online (Sandbox Code Playgroud)
这个复制过程需要一些时间,比方说15分钟.现在我希望在此复制过程完成后再发送电子邮件给我.但我的问题是这个命令在后台运行.那我怎么发邮件呢?我知道如何发送邮件但我不知道当进程在后台运行时如何发送邮件.