我试图弄清楚正确的PBP批准的方法,一次处理一行多行字符串.许多Perl程序员建议将多行字符串视为文件句柄,除非你的脚本中有"use strict",否则它可以正常工作.然后,您会收到编译器的警告,指出在使用严格的refs时无法使用字符串作为符号.
这是一个简单的问题工作示例:
#use strict;
use warnings;
my $return = `dir`;
my $ResultsHandle = "";
my $matchLines = "";
my $resultLine = "";
open $ResultsHandle, '<', \$return;
while (defined ($resultLine = <$ResultsHandle>)) {
if ($resultLine =~ m/joe/) {
$matchLines = $matchLines . "\t" . $resultLine;
}
}
close($ResultsHandle);
print "Original string: \n$return\n";
print "Found these matching lines: \n$matchLines\n";
Run Code Online (Sandbox Code Playgroud)
请注意,"use strict"行已注释掉.当我在没有使用严格的情况下运行此脚本时,我得到了我想要的和期望的:
Original string:
Volume in drive D has no label.
Volume Serial Number is 50D3-54A6
Directory of D:\Documents and Settings\username\My Documents\Eclipse\myTestProject …Run Code Online (Sandbox Code Playgroud) 免责声明:这实际上不是一个编程问题,但我觉得stackoverflow上的观众比大多数问答网站更有可能得到答案.
请原谅我,乔尔,因为偷了你的问题.一段时间后,Joel在一个播客上问过这个问题,但我认为它没有得到解决.我处于相同的情况,所以我也在寻找答案.
我有多个设备都与MS-Outlook同步.PC,笔记本电脑,智能手机,PDA等都能够将其数据(日历,电子邮件,联系人等)与Exchange服务器同步.我喜欢使用Outlook会议通知或约会提醒来提醒我即将举行的会议或医生预约或其他任何事情.问题在于所有设备弹出相同的提醒,我必须单独去每个设备,以便暂停或关闭所有相同的提醒弹出窗口.
由于这是一种同步技术,为什么我在一台设备上暂停或关闭的事实不能自动同步其他设备.我甚至试图在解除提醒后强制同步,并且在强制同步后它仍显示在我的其他设备上.这对我来说完全是烦人的.
是否有我忽视的设置或是否有我应该使用的第三方提醒实用程序而不是内置的东西?
谢谢,库尔特
我正在使用hudson CI来管理一个直接的java web项目,使用ant来构建.
我想要求单元测试覆盖率永远不会比以前的构建更差,从而确保始终测试任何新代码,或者至少覆盖范围不断改进.
是否有一个以这种方式工作的哈德森插件?
编辑:我目前正在使用艾玛,但愿意切换到另一个覆盖应用程序.
另外,作为一个澄清,我已经看到了一些Hudson插件的阈值,但这并不是我所追求的.例如,我想要的是,如果Build#12的覆盖率总体上是46%,并且有人在Build#13中检查了45%的覆盖率,则构建将会中断.
我想这样做的原因是我有一个测试覆盖率低的代码库.我们没有时间回去并追溯写单元测试,但我想确保覆盖率不断提高.
更新:Dan用我的计划指出了一个边缘案例肯定会成为一个问题.我想我需要重新考虑这是否是一个好主意.
我知道这是一个全新的问题,但对许多新程序员来说,答案可能并不明显.这对我来说最初并不明显,所以我在互联网上搜索Perl模块来完成这个简单的任务.
如何在Vista 64中通过文件关联传递命令行参数?
我最近建立了一台运行Vista Ultimate 64位的PC.我注意到由于没有传递命令行参数,我传输的几个Perl脚本失败了.作为一个简单的测试,我写了以下(foo.pl):
#!/usr/bin/perl -w
use strict;
my $num_args = $#ARGV + 1;
print "${num_args} arguments read\n";
print "$^X\n" # to see what was being used
Run Code Online (Sandbox Code Playgroud)
运行"foo.pl 1 2 3"会产生不良影响:
0 arguments read
C:\strawberry\perl\bin\perl.exe
Run Code Online (Sandbox Code Playgroud)
运行"perl foo.pl 1 2 3"预计会产生:
3 arguments read
C:\strawberry\perl\bin\perl.exe
Run Code Online (Sandbox Code Playgroud)
在我的旧Windows XP PC上,两个调用都返回了3个参数.我在这里记录了更多我的侦探(win32.perl.org wiki talk),但我还没有找到一个有效的解决方案.
我也试过ActivePerl-5.10.0.1004-MSWin32-x64-287188.msi无济于事.
任何帮助,将不胜感激.这让我很沮丧.
这是一个非常奇怪的问题.我几乎整天都把它简化为一个小的可执行脚本,完全展示了这个问题.
问题摘要:我正在使用XML :: Twig从XML文件中提取数据片段,然后我将该数据片段放在另一段数据的中间,让我们将其称为父数据.当我开始时,父数据在其开头具有这种奇怪的不可打印字符.它是供应商提供的数据,所以我无法控制它.我的问题是,在我将数据片段粘贴到父数据的中间之后,最终产品除了最初开始的字符之外还有一个新的非可打印字符.这个新的不可打印字符不在父数据中,也不在子数据片段中.我不知道它来自何处,也不知道它是如何进入我的数据的.
我怀疑它是一个XML :: Twig错误,因为在while循环中从文件句柄读取一行时发生字符串损坏,但是当我删除XML :: Twig代码时,我一直没有成功地重新创建我的问题我的脚本所以我不得不留下它.
这是我第一次体验我正在尝试处理的字符串中的不可打印字符.我需要做一些特别的事情而不是像普通的字符串那样对待它们吗?
我在Windows XP上使用ActiveState Perl 5.10.1和XML :: Twig 3.32(最新)和Eclipse 3.5.1 IDE.
这是一个演示问题的脚本:
use strict;
use warnings;
use XML::Twig;
my $FALSE = 0;
my $TRUE = 1;
my $name = 'KurtsProgram';
my $task = 'MainTask';
my $hidden_char = "\xBF";
my $data = $hidden_char .
'(*********************************************
Data-File-Header-Junk
**********************************************)
PROGRAM MainProgram ()
END_PROGRAM
TASK SecondaryTask ()
END_TASK
TASK MainTask ()
MainProgram;
END_TASK
';
my $new_data = insertProgram( $name, $task, $data …Run Code Online (Sandbox Code Playgroud) 如果我能够成功启动 Devel::Cover 并且它开始在 cover_db 目录中收集数据,那么我是否可以终止该进程,然后在事后获取 Devel::Cover 或其他一些实用程序来处理这些二进制 Devel::将运行文件和结构文件覆盖到 HTML 覆盖率报告中?
以另一种方式提出问题......我可以使用 Devel::Cover 来获取我无法停止的进程的覆盖率报告,除了终止进程吗?
我正在使用Selenium对我的Perl cgi脚本进行单元测试,除了在一个特殊的测试用例中我的cgi脚本将XML内容返回到Web浏览器而不是返回HTML内容之外,一切正常.
我是Selenium的新手,只是粘贴在他们的示例脚本中才开始使用,但我似乎无法在任何能够识别我的XML响应已被返回的文档中找到Selenium命令.Selenium命令似乎假设始终返回HTML页面.
从C#中读取excel文件在32位版本服务器中运行良好.它不适用于64位版本(Windows 2003服务器),因为64位版本不支持Excel数据连接DLL .还有其他选择吗?
有没有人能够解决一次处理多行字符串的任务,除了下面显示的字符串作为文件句柄解决方案?
my $multiline_string = "line one\nline two\nline three\nline four";
my $filehandle;
open( $filehandle, '<', \$multiline_string )
or croak("Can't open multi-line string as a filehandle: $!");
while ( defined (my $single_line = <$filehandle>) ) {
# do some processing of $single_line here ...
}
close( $filehandle );
Run Code Online (Sandbox Code Playgroud)
我不想使用文件句柄的原因相当薄弱.Test :: Perl ::当我在任何文件句柄上打开命令和关闭命令之间有超过10个源代码行时,批评者会发牢骚.我正在对$ single_line进行相当多的处理,所以在我的公开通话和近距离通话之间我实际上有大约40行代码,我没有看到任何方法将其降低到10.
而且我真的不想忽略我的构建中的Perl :: Critic测试,因为这实际上是一个不错的测试,我想在我的代码中打开一个实际的磁盘文件时通过它.