在工作中我在Windows上使用Perl 5.8.0.
当我第一次打开Perl时,我去了CPAN,下载了所有的源代码,做了一些更改(在.MAK文件中?支持线程,或类似的东西),并做了nmake/nmake test/nmake install.然后,我一点一点地从CPAN下载了各个模块并完成了nmake舞蹈.
所以,我想升级到更新版本,但新版本不能破坏任何现有脚本.值得注意的是,我安装的一堆"使用"模块必须安装在新版本中.
什么是最可靠(最简单)的方式来更新我当前的版本,确保我所做的与nmake共舞的所有内容在更新后仍然存在?
我有一个非常复杂的程序失败了,我已经将它简化为带有批处理文件和C程序的测试集.
我的C程序使用ExitProcess将errorlevel传递回批处理文件.有时在Windows 7(Microsoft Windows [Version 6.1.7600])上,错误级别未正确解释.
我认为这应该永远运行.在Windows XP上,它似乎永远运行.在两台不同的双核Windows 7机器(一台64位,一台32位)上,它会在几分钟内失败.
我无法想象我做错了什么,但是如果在Windows 7上有一些关于ExitProcess的搞笑,我想我会问.这里有什么我非法做过的吗?
cmd.exe的批处理文件test.bat:
@ECHO OFF
SET I=0
:pass
SET /A I=I+1
Title %I%
start/wait level250
if errorlevel 251 goto fail
if errorlevel 250 goto pass
:fail
Run Code Online (Sandbox Code Playgroud)
程序级别250.c:
#include "windows.h"
static volatile int Terminate = 0;
static unsigned __stdcall TestThread(void * unused)
{
Terminate = 1;
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
CreateThread(NULL, 0, TestThread, NULL, 0, NULL);
while (Terminate == 0) Sleep(1);
ExitProcess(250); …
Run Code Online (Sandbox Code Playgroud) 似乎使用perldoc perl给出了例如perlre,perlvar等的列表.
这是查找概述或教程或参考手册部分可用列表的最佳位置吗?还有另一个更好的清单吗?
我从阅读perldoc perlvar中发现,大约有一千行是对%ENV的帮助.有没有办法从命令行直接找到它?
在我的Windows机器上,我尝试了以下内容
perldoc ENV
perldoc %ENV
perldoc %%ENV
perldoc -r ENV (returns info about Use Env)
perldoc -r %ENV
perldoc -r %%%ENV
perldoc -r %%%%ENV (says No documentation found for "%ENV")
Run Code Online (Sandbox Code Playgroud)
实际上没有返回有关%ENV变量的信息.
我如何使用perldoc来了解%ENV,如果我不想通过成千上万的线进行眼睛grep?
我尝试了建议的"perldoc perlvar",然后键入/%ENV,但没有任何反应.
perl -v: This is perl, v5.8.0 built for MSWin32-x86-multi-thread
Run Code Online (Sandbox Code Playgroud)
虽然我已经询问了%ENV,但这也适用于任何一般术语,因此在下一次我不知道哪个部分时,知道%ENV在perlvar中这个例子将无法帮助我.
有没有办法让perldoc转储所有东西(呃)我可以grep输出?
在这个最大限幅剪辑的源示例中,正在重新定义清单常量FOOBAR.这是故意的,并且在实时案例中有额外的代码来使用每个定义.
添加了pragma以消除警告消息,但随后出现了一个注释,我似乎没有找到摆脱注释的方法.
我已经能够将这个特定的源修改为#undef
之间#define
,但是我想知道是否有一种方法可以在不需要的情况下禁止注释#undef
,因为有多个常量以相同的方式处理.
#pragma warning( disable : 4005 ) // 'identifier' : macro redefinition
#define FOOBAR FOO
#define FOOBAR BAR
Run Code Online (Sandbox Code Playgroud)
编译器横幅和输出如下
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
message.c
message.c(3) : note C6311: message.c(2) : see previous definition of 'FOOBAR'
Run Code Online (Sandbox Code Playgroud) perl ×3
perldoc ×2
batch-file ×1
c ×1
perl-module ×1
upgrade ×1
visual-c++ ×1
windows ×1
windows-7 ×1