在Win32 的Strawberry Perl发行版中,perl\lib和之间有什么区别perl\site\lib?
安装CPAN模块时perl\site\lib,默认情况下是否都存储了文件?被perl\lib保留用于配备标准的Perl分配模块?
我上周在WinXP上用Strawberry Perl替换了ActivePerl.
我发现我必须用命令运行我的Perl脚本perl myperl.pl; 否则我只需要myperl.pl在安装草莓之前运行.我怎么能myperl.pl像以前一样跑?
我检查了我的环境配置如下.
Run Code Online (Sandbox Code Playgroud)C:\> Path C:\Program Files\ActiveState Komodo Edit 5\;C:\Perl\site\bin;C:\Perl\bin;C:\Perl\bin\;C:\Program Files\CodeSynthesis XSD 3.2\bin\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem; C:\Program Files\ATI Technologies\ATI Control Panel;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Common Files\Thunder Network\KanKan \Codecs;C:\strawberry\c\bin;C:\strawberry\perl\bin`
安装成功后,Strawberry Perl路径已在Path值中列出.
我错过了什么?谢谢你的建议.
便携式草莓perl是天赐之物 - 我可以将它与实际脚本一起捆绑到NSIS安装程序中并让用户双击它.但是,我仍然需要在每个用户的计算机上手动安装脚本所需的CPAN模块.
是否有一种可移植的方式将cpan模块"注入"草莓perl的便携版本?
将便携式草莓放在开发机器上,通过CPAN安装模块并重新压缩以便分发是不是一个好主意?(我想我需要将安装位置修复为c:\ custom-perl或者如果我这样做的话).谁知道更直接的方式?我想我应该将cpan命令编写到安装程序中,但如果用户不必等待20分钟+安装程序(这是编译所有依赖项所需的时间),那就太好了.
我正在使用草莓perl来使用它来拖尾文件File::Tail.
我收到以下错误消息:
找不到@INC中的File/Tail.pm(@INC包含:c:\ strawberry\perl\lib C:/ strawberry/perl/site/lib C:/ strawberry/perl/vendor/lib C:/ strawberry/perl/lib.)在tailing.perl第5行.BEGIN失败 - 编译在tailing.perl第5行中止.
三个包包含lib:
c:\strawberry\perl\libC:\strawberry\perl\site\libC:\strawberry\perl\vendor\lib c:\strawberry\perlperl安装的根目录在哪里.
我检查了所有三个包,但找不到File/Tail.pm.
使用cpan install,但安装失败.
也许我遗漏了一些明显的东西,因为我在互联网上搜索了一段时间,但找不到解决以下问题的方法:
我正在使用Eclipse Kepler SP2(Build id:20140224-0627),CDT和MinGW作为编译器后端.用gdb调试C代码一直很好,直到今天(至少我注意到了今天的问题).现在,当我想在调试器中启动一个程序时,我收到以下错误消息:
Error in final launch sequence
Failed to execute MI command:
-file-exec-and-symbols C:/[...]/Debug/test.exe
Error message from debugger back end:
"C:\[...]\Debug\test.exe": not in executable format: File format not recognized
Run Code Online (Sandbox Code Playgroud)
该程序运行良好,所以我想我可能搞砸了一些设置.但是当我尝试调试旧程序时,一切正常,直到我重新编译旧程序 - >同样的问题.如果我要求C向导使用MinGW创建一个新的"Hello World"ANSI C应用程序,则会出现同样的问题.
使用的编译命令是
gcc -O0 -g3 -Wall -c -fmessage-length=0 -o "src\\test.o" "..\\src\\test.c"
gcc -o test.exe "src\\test.o"
Run Code Online (Sandbox Code Playgroud)
我之间并没有更新我的MinGW,而是更新了Eclipse.
你有什么指针在哪里寻找问题?
编辑:我刚检查了二进制类型:我的旧项目都是[x86/le],新编译的是[amd64/le].这应该是一个跟踪....将根据进度更新发布.
编辑2:我几天前安装了草莓perl,并且安装程序已将MINGW_HOME原始BUILD SYSTEM中的环境变量更改为c:\strawberry\c,这搞砸了我的构建.将其重置为我c:\MinGW解决了问题.我也会将此作为答案发布.标题和标签已更新,以更直接地指向此问题.
我对Perl很新,所以请原谅我这个问题是微不足道的.
在工作中,我有一个创建脚本的任务,当其他开发人员错过任务的截止日期时,该脚本将发送电子邮件.整个事情必须在Windows上运行,使用Strawberry Perl,我使用windows命令date /T来执行日期检查.我使用反引号运算符调用了很多外部命令,但在这种特殊情况下,反引号不起作用:
my $date = `date /T`;
Run Code Online (Sandbox Code Playgroud)
输出:
date: invalid date `/T'
Run Code Online (Sandbox Code Playgroud)
固定使用一些额外的报价:
my $date = `"date /T"`
Run Code Online (Sandbox Code Playgroud)
输出:
Mon 07/07/2014
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么?
如果使用反引号的其他外部调用将起作用,我会得到它,但这是我必须以这种方式调用的唯一一个,以使其工作.
我最近在运行Windows 7的PC上将Strawberry Perl从版本5.14.1.1-32bit升级到5.24.0-64bit.我有一个perl脚本我在Windows和Linux下运行,当我使用旧版本命令时
use if $^O eq 'MSWin32' , 'Win32::Console::ANSI';
Run Code Online (Sandbox Code Playgroud)
工作,但现在我已升级我收到错误消息
Unrecognized character \x0F; marked by <-- HERE after use if $<-- HERE near column9 at p:\bin\abc.pl line 31.
Run Code Online (Sandbox Code Playgroud)
有谁知道改变了什么,以及如何让Strawberry Perl的新版本接受命令?提前感谢所有回复的人.
我安装了32位版本的Strawberry perl(5.14.2.1).我能够运行perl命令.当我运行cpan命令时,我收到以下错误:
Can't locate App/Cpan.pm in @INC (@INC contains: /usr/lib/perl5/5.8.8/msys /usr/
lib/perl5/5.8.8 /usr/lib/perl5/site_perl/5.8.8/msys /usr/lib/perl5/site_perl/5.8
.8 /usr/lib/perl5/site_perl .) at /c/strawberry/perl/bin/cpan line 5.
BEGIN failed--compilation aborted at /c/strawberry/perl/bin/cpan line 5.
Run Code Online (Sandbox Code Playgroud)
我从64位版本迁移到32位版本.cpan当我使用64位版本时,该命令用于工作.
这更多的是一个公开的讨论和结论,而不是一个真正的问题,希望它能在某个时候帮助别人。
我正在寻找如何在与互联网断开连接的服务器上制作 Perl 模块(否则答案很简单:使用cpan),所以我唯一的选择是直接在服务器上手动编译从互联网(CPAN 或其他)下载的模块。
问题是,在标准 Windows 服务器上,没有编译器。那么如何制作模块呢?
我在这里缺少什么?
当像这样向 Net::Ping 传递参数时,在初始化构造函数 Net::Ping->new($args) 后,$args 和 $args_copy 都将被设置为空的 hashref。
use strict;
use warnings;
use Data::Dumper qw(Dumper);
use Net::Ping;
sub _ping {
my ($args) = @_;
my $p = Net::Ping->new($args);
$p->close();
}
my $args = { proto => 'udp' };
my $args_copy = $args;
print Dumper $args; # $VAR1 = { 'proto' => 'udp' }
print Dumper $args_copy; # $VAR1 = { 'proto' => 'udp' }
_ping($args);
print Dumper $args; # $VAR1 = {}
print Dumper $args_copy; # $VAR1 = …Run Code Online (Sandbox Code Playgroud) strawberry-perl ×10
perl ×9
perl-module ×2
ansi ×1
c ×1
command-line ×1
compilation ×1
cpan ×1
eclipse ×1
eclipse-cdt ×1
mingw ×1
ping ×1
tail ×1
windows ×1