我有一个我运行的脚本,在它运行之后,我需要将一些信息传递给下一个要运行的脚本
Unix/DOS命令如下所示:
perl -x -s param_send.pl
perl -x -s param_receive.pl
param_send.pl是:
# Send param
my $send_var = "This is a variable in param_send.pl...\n";
$ARGV[0] = $send_var;
print "Argument
我正在尝试将JSON字符串解析为数组引用:
my $str = '[[2],[1]]';
my $data = map { $_->[0] } @{decode_json( $str )};
但这使它成为一个标量。我可以做到:
my $str = '[[2],[1]]';
my @data = map { $_->[0] } @{decode_json( $str )};
my $data = \@data;
但它没有我喜欢的那么短。有什么帮助吗?使用中间变量:
my $str
有办法得到一个子散列吗?我需要使用散列切片吗
例如:
%hash = ( a => 1, b => 2, c => 3 );
我只要
%hash = ( a => 1, b => 2 );
散列是一个无序的容器,但术语slice仅在有序容器中才有意义。也许可以考虑使用数组。否则,您可能只需删除所有不希望生成“子哈希”的元素。您可能需要组合所需密钥的列表:
my @keys = qw(a b);
然后使用循环生成哈希:
my %hash_slice;
for(@
我有这样的程序输出(tab delim):
我只想在第一列上做:用A替换0,用C替换1,用G替换2,用T替换3。
是否有一种方法可以将直接从“mycode”导出的输出进行音译。
因此:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 238671
...
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT 937.306
应该可以使用sed来完成,将其放在一个文件中(您可以使用命令行to,使用-e,只是不要忘记那些分号,或者对
我想用Perl表示一个集合。我通常会使用一个带有伪值的散列,例如:
my %hash=();
$hash{"element1"}=1;
$hash{"element5"}=1;
然后使用if(defined$hash{$element\u name})确定元素是否在集合中
这是惯例吗?有什么改进的建议吗
另外,我应该使用定义的还是存在的
谢谢使用CPAN上的众多集合模块之一。从你的例子来看,或者看起来很合适
我可以用支持CPAN的常用论据来为这一建议辩护(忽略可能的协同效应)
我们怎么知道现
我想知道CPAN中统计模块的当前状态,是否有人知道最近的任何评论,或者可以对这些模块的好恶进行评论
我使用了clasical:Statistics::Descriptive、Statistics::Distributions以及包含在
有些模块已经很长时间没有更新了。我不知道这是因为他们坚如磐石还是被更好的模块超越了
是否有人知道与此类似的最新评论:
注意(对于建议使用R;-)的人):
我所有的代码主要是用perl编写的,但我经常使用R进行统计和绘图。我通常使用perl准备数据帧,并将R脚本作
我有一个非加权的DAG图。我想做的是找到
所有路径都是贪婪的,且该路径至少包含K个节点,
和给定的起始节点
是否有任何现有的算法/实现可以做到这一点
例如,我有以下图表:
my %graph =(36=>[31],31=>[30,22],30=>[20],22=>[20,8],20=>[1],8=>[5],5=>[2],2=>[1,20]);
因此,如果我定义K=5和起始节点36,我希望得到:
{1,20,22,31,36}
{1,20,2,5
给定一个种子字符串,我想使用前缀哈希和读取列表扩展它,
我想以这种方式扩展该字符串:
输入种子字符串$seed
提取该种子的最后一个k基
检查读取列表中读取的前缀\u哈希(读取第一个k基的位置)
种子也是如此
读取到$seed结尾的合并
对合并的读取重复步骤2,直到无法扩展结束
我的代码如下:
use strict;
use Data::Dumper;
use Carp;
my $k = 2;
my %readlist = (
"read1" => "ACTGA",
是否有一个内置函数来修剪前导和尾随空格,以便修剪(“hello-world”)eq“hello-world”?根据以下内容:
下面是一种使用正则表达式的方法:
$string =~ s/^\s+|\s+$//g ; # remove both leading and trailing whitespace
Perl 6将包括一个trim函数:
$string .= trim;
来源:没有内置的trim功能,但您可以通过简单的替换轻松实现自己的功能:
sub trim {
(m
标签: Perl
multidimensional-array
我有一个程序,可以打印出表单中文本段落中逗号的位置
例如,如果段落是
one,two,three
three and a half
four,five
six
seven,eight
程序将打印
0:4
0:8
2:5
4:6
我想使用此输出创建一个数组,其中冒号后面的数字跨冒号前面的索引指定的行中的列列出。由上述坐标构成的数组将是
4 8
<blank or character '.'>
5
<blank or character '.'>
6
48
5.
6.
Perl是否有用于退出函数的运算符,或者是否有用于函数的last
sub f {
# some code here
if ($v == 10) {
# goto end of function/exit function/last
}
# some code here
}
一个goto可以做到这一点,但不知何故它错了?使用return
要从某个网站获得响应,我必须给出一个确切的请求字符串,HTTP/1.1。我用telnet尝试了那个,它给了我想要的响应(重定向,但我需要它)
但是当我尝试将相同的请求字符串赋予HTTP::request->parse()时,我只得到消息400 URL必须是绝对的
我不确定是网站还是LWP给了我这个信息,因为正如我所说的,回复是通过telnet进行的
代码如下:
my $req = "GET / HTTP/1.1\n".
"Host: www.example-site.de\n".
"Us
显示如何查找数组中最长的字符串
这个功能在CPAN模块中是否可以像“最长的字符串”这样使用?要复制这段代码似乎很奇怪。也似乎是一个普遍有用的潜艇
为了进行比较,这里讨论了如何在Python中实现这一点。我想您会发现CPAN更适合于大量代码(即,多个行程序)
一、 例如,我更愿意让CPAN解决我的大问题,比如数据库访问或各种数值方法和数据结构。我不同意。查找最长的字符串是很容易实现的,也不是经常需要的。如果有什么区别的话,一个更通用的函数可能会进入(我想)List::MoreUtils。像这样:
我正在浏览某人的旧代码,发现了以下语句:
$tmpStr = "/some/file/location/";
if(-d $tmpStr){
printf("1");
}else{
printf("2");
}
我对-d的作用感到困惑。。。有任何帮助吗?-d如果以下字符串是目录,则返回true
请参阅。测试该路径是否为目录。这不是字符串比较
"Hello" ne "world"
这是一个字符串比较
"Hello" ne "world"
它检查目录是否存在。还有更多可用的,例如
基本问题在标题中:我有一个unix时间戳和一个时区,例如“America/Caracas”,我想将其转换为时区的本地时间
在stackoverflow中搜索时,我找到了其他人,但是,提供的答案代码
$t = new DateTime();
$t->setTimestamp( $time=time() );
$t->setTimeZone(new DateTimeZone("America/Denver"));
print $t->format(DateTime::RFC850)
我正在尝试编写一个Perl脚本,它执行预排序目录遍历。我需要它来获取给定目录的所有子目录,包括隐藏的子目录。不幸的是,当我尝试以这种方式全球化时:
。。。“*”会导致“.”和“.”也被返回,这会弄乱我的函数,因为它会导致无限循环。如何仅获取$dir的子文件夹(常规和隐藏),而不获取当前或更高级别的目录
例如,如果我的文件夹为“dir”,并且包含以下子目录:
grep { !/^\.{1,2}$/ } <$dir/* $dir/.*>
你好
.hiddendir
“名称中有空格的目
我有一段代码,使用了60K次之后,它在数据上失败,这与所有其他调用类似。我收到一条“不是散列引用”的消息。代码如下所示:
sub getRowKey
{
my ($self,$row) = @_;
my @keys = split(/,/,$self->{_key});
my $rowkey = "";
confess "Not a non-reference" if ( ! defined( ref( $row ) ) );
confess "n
我有一些代码,我已经设法缩小到以下最小的代码样本
首先,我有一个模块plugh.pm,负责读取配置文件。基本上可以用以下内容替换此内容,其中设置了一个配置项:
use strict;
use warnings;
sub cfgRead () { $main::cfg{"abc"} = "/usr"; }
1;
然后我有一个使用该模块的主程序,如下所示,只需调用函数设置配置项,然后在子例程中使用这些项之一:
#!/usr/bin/env perl
use strict;
use warning
我正在为我编写的库编写一个测试脚本,作为测试的一部分,我正在清除$ENV{PATH}变量,以确保我在路径中放置的东西不会导致成功。库将所需的路径附加到PATH变量
在后台,我在32位WindowsXP上运行草莓PerlV5.12.0。IPC::Cmd的版本为0.76,IPC::Open3的版本为1.05
我看到的错误是,如果我清除PATH变量,然后设置它,使用IPC::Open3的IPC::Cmd找不到应用程序。如果我不这样做,它就会运行良好。下面是说明此错误的示例脚本:
use strict;
我很好奇在Perl中交换数组中两个元素的最有效方法是什么
假设我想切换索引分别为3和5的元素,那么最快的方法是什么
我的想法是:
@array[3,5] = @array[5,3];
这很有效吗?我的希望是,如果这两个数组值包含大量数据,则不会有任何区别。我希望后端在不进行任何实际复制的情况下更改指针。对吗?你说的“大量数据”是什么意思?如果你指的是对大型数据结构的引用,那么你怎么做并不重要;这将是疯狂的快。(每次交换少于一纳秒)所以我假设你指的是“大字符串”
在5.20之前,您发布的代码会
如何为Perl系统调用指定超时限制
eval {
local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
alarm $timeout;
$nread = sysread SOCKET, $buffer, $size;
alarm 0;
};
if ($@) {
die unless $@ eq "alarm\n"; # propagate unexpected errors
我正在尝试基于将OOXML Excel文件发送到浏览器
该文件还包含像šèđ这样的字符,这些字符显示为ÄÄÅľÄ。我想这是编码的问题
有人知道什么地方可能出错以及如何修复吗?您有一个编码问题。在源代码中使用Unicode文本时,必须使用utf8pragma并将程序源代码编码为UTF-8。这项工作:
use utf8;
⋮
$worksheet->write( 0, 0, "Hi Excel! č š ž ć đ", $format );
尝试将字符集添加到内容类型标题。它可能是utf-
我有个奇怪的问题
在命令行中,cgi bash脚本和cgi perl脚本正在工作,但在浏览器中,只有cgi bash脚本在工作,而cgi perl脚本不工作
and apache error log says
[Thu Oct 25 01:58:59 2012] [error] [client x.x.x.x] (13)Permission denied: exec of '/home/x/x/x/x/public_html/cgi-bin/test.cgi' failed
[Thu Oct
我正在做一个作业,我需要解析一个日志文件,并根据所述日志文件创建一个网站。其中一个要求是,我要计算昨天发生的点击次数,当涉及到这件事时,我迷失了方向。我附上了我的代码和我正在处理的日志文件,希望有人能提供一些建议,谢谢
#!/usr/bin/perl
use strict;
use warnings;
use Time::Piece;
use Time::Seconds qw(ONE_DAY);
my $yesterday = localtime() - ONE_DAY();
print $
说到数学聪明,我很笨,我需要一些帮助,我需要实施一个轮训制度,让一组人“随时待命”一周,他说,这组人全年都会出现。
这将是Perl中的CGI脚本,后端有一个db
举个简单的例子,假设3个小组,第一组从本周三到下周三在午夜时待命,第二组将在本周的周三待命,之后最后一组将以同样的方式待命。在最后一组之后,第一批人再次待命,他们结婚了,整个事情不断重复
它还必须适应每个小组中个人的临时变化,这些变化只会在当前会话中保持,而不会在整个系列中保持
想象一下谷歌日历,基本上是这样的,但是我买了一个人,一周之
我是perl的新手,我想编写一个perl脚本来读取多个文本文件,查找字符串并将包含字符串的行复制到电子表格中
我想打开csv.txt文件,在每一行中查找字符串“Color”,并将该行复制到电子表格中
颜色:命名任何颜色
从这一行我想复制任何颜色的名称到电子表格
感谢初学者:阅读CSV文件,您可以使用Text:CSV
不错的教程:
您可以使用简单的regexp查找每一行:
if ($line =~ m!Color!){
#do things if $line contain this wo
错误消息“在null操作中使用未初始化值”在Perl中是什么意思
我在谷歌上搜索了很多信息,发现很多页面上都有人讨论过这个表单的错误。然而,尽管我进行了搜索,我仍然无法理解这表明了什么错误情况。请注意:我没有可以共享的源代码来演示此错误,因为它仅在“test::More”下运行时出现在测试脚本中,并且涉及大量XS代码。我只是想了解一下此错误消息的含义。查找“未初始化值的使用”
使用未初始化的值%s
(W未初始化)使用未定义的值,就像已定义一样。它被解释为“”或0,但可能是个错误。若要抑制此警告
标签: Perl
multidimensional-array
我需要得到2D数组中第二层的大小。我正在尝试这个:
my @txt;
$txt[0][0]="text1";
$txt[0][1]="text2";
$txt[0][2]="text3";
$txt[1][0]="text4";
$txt[1][1]="text5";
$txt[1][2]="text6";
print scalar(@txt[1]);
但它不起作用,我看到了“数组(0x804daf0)”。如何获得第二维度的大小?print scalar@{$txt[1]}应该这样做…这给
我有一个脚本,它可以将CSV中的输入数据重新格式化为一个可供出售的系统读取的格式。我可能会发疯,但我敢肯定它在一两周前的生产环境中起了作用。然而,在过去一两周的某个时候,它停止了工作。我将问题归结为Text::CSV模块没有填充$CSV->fields()属性
my $csv = Text::CSV->new({sep_char => '|', allow_loose_quotes => 1});
$csv->column_names($csv->getline(*
我一直在开发一个定制的SNMP Mib,在试图让代理返回正确的数据时遇到了困难
MIB(通过运行smilint-l 6验证):
代理文件:
#!/usr/bin/perl
use NetSNMP::OID(':all');
use NetSNMP::agent(':all');
use NetSNMP::ASN(':all');
sub myhandler {
my ($handler, $registration_info, $request_info, $requests) =
我正在尝试一个示例程序来获取文件的用户模式
#! /usr/bin/perl
use strict;
use warnings;
use File::stat;
my $file_name = 0;
my $info = 0;
my $ret_mode = 0;
foreach(@ARGV){
$file_name = $_;
$info = stat($file_name);
$ret_mode = $info->mode;
print "Before : $ret_mode\n"
我正在创建一个字符串,需要用空格填充到每个字段的最大长度,如下所示:
my $string;
$string .= sprintf("%*s", $fieldlength->{FOO}, uc( $foo ) );
$string .= sprintf("%*s", $fieldlength->{BAR}, uc( $bar ) );
这是一系列记录的循环。
当我将$string写入一个文件时,它看起来正是我所期望的,一切都在正确的位置。当我打印$string的长度时,它是错误的
鉴于我有以下错误代码:
my $this_is_easier = caller(0)[0];
为什么我需要执行以下操作才能编译
my $this_is_easier = (caller(0))[0];
这只是Perl解析器的细微差别吗?在其他语言中,如Python和C++,假设函数将返回可索引的东西。< P>当代码> []/COD>跟随另一个索引时,它意味着引用引用。
$foo[...][...] means $foo[...]->[...]
$foo[...](...)
我有一组bucket和一组“removals”,其中可能包含比我感兴趣的bucket多/少的bucket-我正在尝试使用哈希切片从bucket中减去删除值,如下所示:
@buckets{keys %buckets} -= @remove{keys %buckets};
然而,似乎只有哈希的最后一个元素被修改过——这显然是不一致的,这取决于哈希键返回的运行时顺序
这不是使用哈希片的有效方法吗
完整代码:
use strict;
use warnings;
use Data::Dumper;
m
我是perl新手,边学习边学习。我得到一个以管道分隔的csv文件,其中每一行都有一个状态字段。我需要perl删除任何状态代码为MA的行,并创建一个报告,显示它删除的整行
下面是文件中具有状态MA的示例行。州代码是第9个字段。这些文件包含200到90000条记录,因此每个报告都应该包含包含MA的行的完整列表
多谢各位
48975564|37274022|64645215|49740554|New|6649|2790|20140812165625|MA|20140812195525|Y||18|20
我希望将应用程序合并并部署到实时环境中。可以访问,因此可以将应用程序打包为rpm或通过git pull更新代码库
真正寻找使过程尽可能简单的部署策略
有人有一起使用这些工具的经验吗
我们正在通过hypnotoad运行mojo,可能会将其置于ApiAxix代理之后。我们有一个系统在工作,可以自动执行此操作;我不能分享代码,但我可以总结
我们在git中维护我们的项目,并在单独的git repo中维护我们的部署(每个jenkins作业一个,例如项目开发,项目qa,等等)
我们在cpanfile中维护依
我有一个文件的格式如下:
string:string1
string2:string3
....
我想扫描每一行并按:
#!/usr/bin/perl
open(FILE,$ARGV[0]) or die "can't find file";
foreach (<FILE>){
@array = split(":");
}
foreach $string (@array){
print "$string";
}
exit 0;
#/usr/bin/
我有一个如下的系统脚本来显示堆栈细节
-r-xr-xr-x. 1 bin bin 6560 Feb 17 21:01 displayPD
[sufuser@101 bin]$ ./displayPD
Usage: ./displayPD -n node
注意(此脚本不能以root用户身份运行)
我想在一个脚本中自动化并调用它,这个脚本也是用相同的用户登录名编写的
但当我使用下面的system命令从脚本调用它时,它被称为根,脚本无法执行。如何保留用户会话以执行
system("/opt
我正在尝试对Instagram API进行身份验证,但我的请求在第3步失败:
请注意,响应内容中没有消息。错误很简单,错误请求
为什么我的请求不能通过
注意:我的请求是使用perl库创建和发送的
要求
响应
你已经解决了吗
无论如何,我最近也遇到了同样的问题(使用C#但是问题原理看起来是一样的),所以这个答案将适用于那些需要指导的人。Instagram开发人员文档中有很多重要的事情要考虑,
在步骤3中,您不会通过URL传递auth参数,您需要将其作为正文内容(字面意思)传递
其他常见问题是标题参
我想创建一个网络仪表板,在那里我可以从facebook和twitter上按姓名搜索任何用户,然后在仪表板上显示所有详细信息(如关于、喜欢的公众教育)
如何使用perl实现这一点
我不能使用graph API,因为它只允许用户使用我的应用程序(基于权限)
请引导我。这个问题涉及面很广。看看下面的CPAN模块,在上面写下您的逻辑。如果你遇到任何问题,请给我们举一个简单的例子
更多信息请访问:
更多信息请访问:
我不能使用graph API,因为它只允许用户使用我的应用程序
这是有原
我有一个混合的文件与各种方式使用尾随新行。没有回车,只是\n。有些文件有多个换行符,有些文件没有尾随的换行符。我想就地编辑文件
如何编辑文件使其正好有一个尾随新行?要将文本文件更改为只有一个尾随新行,请执行以下操作:
sed -zi 's/\n*$/\n/'
这需要GNU-sed
-z告诉sed使用NUL字符作为分隔符读取文件。由于文本文件没有NUL字符,因此具有一次读取整个文件的效果
-i告诉GNU sed将文件更改到位
s/\n*$/\n/告诉sed用一个换行符替换文件末尾的多个换行符。
我是Perl新手。
我想在包含多个子文件夹、子子文件夹和大量文件的大型目录树中递归搜索pdf文件。
我正在使用File::Find::Rule来实现这一点。但是,性能影响是巨大的。
该脚本需要花费大量时间进行搜索
我的Perl脚本中的代码片段:
@folders = File::Find::Rule -> file -> name('*.[pP][dD][fF]') -> in($folderPath);
有没有其他方法可以在不影响性能的情况下实现这一点
我们将非常感谢您的帮
文件大小为52MB。它与程序位于同一目录中
$big = 'VIXhx.csv';
# tie @optLine, 'Tie::File', $big or die "Cant Tie to $big $!" ;
open $big or die "Cant open $big, $!," ;
Tie::File未给出错误消息
普通open发出错误消息:
无法在C:\Python34\hsf\ETFs\VIX\qad打开VIXhx.csv,没有此类文件或目录。
pl第47行
(是的,它
我有许多指向内存中不同(或相同)位置的指针。我想实现一种机制,允许我们“融合”给定指针子集指向的位置
我现在正在使用perl 5.6.1,但我对其他语言的实现持开放态度。我在perl中提出了以下愚蠢的实现:
my $ref1 = \1;
my $ref2 = \2;
print "${$ref1} : ${$ref2}\n"; # <-- prints 1 : 2
fuse(\$ref1, \$ref2); # <-- Make $ref2 point to sa
aridottle是:,可以在运行prove执行Perl测试时使用。prove的文档说明:
可以为测试提供参数。要做到这一点,就要将它们与
用arisdottle“::”证明自己的论点。例如
prove-vt/mytest.t:--urlhttp://example.com
将使用选项“--url”运行t/mytest.thttp://example.com'. 什么时候
运行多个测试时,每个测试将接收相同的参数。
我对这个术语的起源很感兴趣。很难用谷歌搜索。我在irc.perl.org上的#
我有一个Perl脚本,它将Word文档保存为HTML文档。
以下代码起作用:
use strict;
use Win32::OLE::Const 'Microsoft Word';
[...]
$go_word_doc->SaveAs2({
FileName => $gs_html_name,
FileFormat => wdFormatFilteredHTML
});
为了用UTF-8编码输出文件,我编写了以下代码:
use strict;
use
我正在使用Catalyst和插件Catalyst::Plugin::I18N设置一个新项目,并使用HTML::FormFu创建表单。我的问题是,使用HTML::FormFu配置文件进行本地化不起作用
我创建的语言文件如下所示:
我尝试过像本地化类或从对象添加本地化类这样的解决方案,但没有一个不起作用
我的表单配置文件如下所示:
action:
indicator: submit
auto_fieldset: 1
elements:
- type: Text
name: email
我试图使用perl在文件中grep[0](包括方括号),我尝试了以下代码
my @output = `grep \"\[0\]\" log `;
但它不是返回[0],而是在与0匹配的地方给出输出。问题是,您需要两次转义[和],因为[…]在正则表达式中有特殊的含义(它定义了一个字符类)
但是您确实不需要使用外部grep命令。Perl非常擅长文本处理
#!/usr/bin/perl
use strict;
use warnings;
while (<>) {
print if
标签: Perl
worksheetintrospectionexcel-writer-xlsx
一段时间以来,我一直想知道这个模块是否/何时能够获得一些内省能力,而不仅仅是对对象进行黑客攻击
例如:
一旦一个工作表被写入,我如何知道查询工作表对象以知道它有多少行和列
我想做的是写一些工作表,然后返回到每个工作表,并为它们写更多的行。我可以自己跟踪最后一行/列,但在此之前,我想知道是否可以在最后一个工作簿->关闭之前从已经编写的对象中获取数据
我想我可以在sheet对象的_表散列中计算键的数量,但这可能太接近金属而不是“正式的”。我记得John在CPAN文档中说过不要这样做
我可以自己跟踪最
在perldoc perlwarn的内部有一个特殊的类别,用于实验性的私人用途。private\u如何使用此警告?目前,这仅在
我想是的,似乎有。它是由添加的,这解释了以下内容:
我开始编写一个Unicode::Private_使用模块,它将允许
一种是指定专用代码点的Unicode属性,因此
使它们真正有用。此提交将向regcomp.c添加一个钩子以
容纳此模块。变化非常小。这样我们
不必等待另一个发布周期就可以发布
我不想记录这个接口,直到它被证明
目前,在解析\p{}和\p{}内部的函数中
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 982 页