我是Perl的新手,但我想尝试一下.我读到了两个可用于Windows平台的竞争对手(我想其他操作系统上只有 Perl :).
维基百科说,如果有必要,Strawberry会附带开发工具来编译CPAN模块.对我来说不错.
它还说ActivePerl有很多预先打包的模块,使用PPM更容易安装.听起来也很棒!
这两者之间有明确的权衡.我想知道我应该选择什么才能开始?如果我选择一个有多难移植到另一个?
编辑:我给这两个发行版跑了几个星期.我真的很喜欢这两件事都是好事!其中任何一个都不会出错.我最终只使用ActivePerl,因为它带有离线文档(HTML格式) - 对于那些在路上或者并不总是连接的人来说,这是一个伟大的生命救星.当我不在线时,我在度假时开始使用Perl语言非常容易.
草莓至少同样伟大,如果不是更大.所以我也可以完全推荐它.我不得不说一个人应该学习Perl - 这是一门非常漂亮的语言.试试看!
除非我使用备份扩展名指定它们,否则我无法在ActivePerl下运行Perl单行编辑工作.
C:\> perl -i -ape "splice (@F, 2, 0, q(inserted text)); $_ = qq(@F\n);" file1.txt
Can't do inplace edit without backup.
Run Code Online (Sandbox Code Playgroud)
与处理相同的命令-i.bak
或-i.orig
处理相同的命令但会在此过程中创建不需要的备份文件.
有没有解决的办法?
我正在使用Visual Studio 2015编译OpenSSL.我已安装:1.Windows 10上的Visual Studio 2015.
的ActivePerl-5.24.0.2400-MSWin32-x64-300558.
NASM - 08年2月11日 - Win32的.
OpenSSL源代码由git clone git://git.openssl.org/openssl.git提供
我做的是:
使用以下行创建批处理文件.
@call"C:\ Program Files(x86)\ Microsoft Visual Studio 14.0\VC\vcvarsall.bat"x86_amd64 @set path =%path%; C:\ Users\gchen\AppData\Local \nasm
perl配置VC-WIN64A -prefix = C:\ test\openssl
现在我应该做ms\do_win64a.但我找不到这个批处理文件.在目录'ms'中,有文件
2016/08/22 17:39
2016/08/22 17:39 ..
2016/08/21 14:23 3,646 applink.c
2016/08/21 14:23 1,247 cmp.pl
2016/08/21 14:23 2,815 segrenam.pl
2016/08/21 14:23 4,541 tlhelp32.h
2016/08/21 14:23 1,137 uplink-common.pl
2016/08/21 14:23 1,472 uplink-ia64.pl
2016/08/21 14:23 1,111 uplink-x86.pl
2016/08/21 14:23 1,594 uplink-x86_64.pl
2016/08/21 14:23 4,225 uplink.c
2016/08/21 14:23 2,268 …
我在Windows机器上设置了一个本地Perl Web环境.我正在处理的应用程序最初来自Linux服务器,因此源.pl
文件的shebang 如下所示:
#!/usr/bin/perl
Run Code Online (Sandbox Code Playgroud)
这会导致我的Windows开发机器出现以下错误:
(OS 2)The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)
是否可以更改我的Apache 2 conf以便在我的Windows机器上忽略shebang?当然我可以设置shebang #!c:\perl\bin\perl.exe
,这很明显; 但问题是部署更新的文件.显然,在每次部署时更改这一点会非常不方便.我在Windows 7上使用ActivePerl.
我应该提到我需要保留shebang,以便脚本可以在我们的共享主机Linux生产服务器上运行.如果我没有这个约束而且我不必使用shebang,那么显而易见的答案就是不使用它.
我有以下Perl脚本.我试图使用ActivePerl在Windows 7中运行它:
#!c:\Perl64\bin\perl.exe -w
use strict;
my $mp3splt_exe = 'c:\Program Files (x86)\mp3splt\mp3splt.exe';
my $mp3splt_args = '-o "@n @f" -g "r%[@o @N]" -f -t 6.0';
print @ARGV;
my $filename = $ARGV[0];
print "$mp3splt_exe $mp3splt_args $filename\n";
Run Code Online (Sandbox Code Playgroud)
(正如你所看到的,我正在尝试为mp3splt创建一个包装器:-))
当我像这样运行它:
C:\ Program Files(x86)\ mp3splt> run_mp3splt.pl a
我明白了:
Use of uninitialized value $filename in concatenation (.) or string at C:\Program Files (x86)\mp3splt\run_mp3splt.pl line 12.
c:\Program Files (x86)\mp3splt\mp3splt.exe -o "@n @f" -g "r%[@o @N]" -f -t 6.0
Run Code Online (Sandbox Code Playgroud)
所以,首先,当我print @ARGV
,没有任何东西被打印出来,其次,当我分配时$filename = $ARGV[0]
,$filename …
我不是Perl的新手,但这个问题让我很困惑.
我曾经删除过我的ActiveState Perl,并且所有已安装的模块都丢失了.所以现在我对这类问题非常小心.由于某种原因,我现在想要使用Strawberry Perl,同时保持ActiveState Perl的使用.
这会导致兼容性问题吗?这是可取的吗?
使用sublime text 2的新手,我想知道如何让它指向activeperl.exe(在win7上).
我正在测试编译器,以确保它适用于以下简单的东西:
$x = 1;
$print "$x";
Run Code Online (Sandbox Code Playgroud)
但它让我觉得$ x不是一个公认的语法.我确实将ST2指向我的python可执行文件,但我忘记了迷宫中哪个文件我应该编辑路径.
在ActivePerl中,"ppm"从Internet安装包,"ppm install x.ppd"从ppd文件安装,但大多数CPAN包以.tar.gz形式分发.
如何为运行没有Internet连接的ActivePerl的计算机提供模块?("make"可能无法使用.)
更新:Internet连接可用于下载文件并使用USB密钥等将其传输到计算机.
使用Perl,不使用任何不带ActivePerl的额外模块,如何从0-F创建一个包含8个字符的字符串.例子0F1672DA
?填充应该是可控的,最好是8个字符.
我想要生成的字符串种类的更多示例:
28DA9782
55C7128A
Run Code Online (Sandbox Code Playgroud) 我正在学习Perl并使用STDIN编写此脚本来练习.当我运行脚本时,它只显示控制台上的第一个print语句.无论我输入什么,包括换行,控制台都不会显示下一个打印声明.(我在Windows机器上使用ActivePerl.)它看起来像这样:
$perl script.pl What is the exchange rate? 90.45 [Cursor stays here]
这是我的脚本:
#!/user/bin/perl
use warnings; use strict;
print "What is the exchange rate? ";
my @exchangeRate = <STDIN>;
chomp(@exchangeRate);
print "What is the value you would like to convert? ";
chomp(my @otherCurrency = <STDIN>);
my @result = @otherCurrency / @exchangeRate;
print "The result is @{result}.\n";
Run Code Online (Sandbox Code Playgroud)
在研究我的问题时我注意到的一个可能的解决方案是我可以包括
use IO::Handle;和
flush STDIN; flush STDOUT;在我的脚本中.不过,这些线条并没有解决我的问题.
我该怎么办才能使STDIN正常运行?如果这是正常行为,我错过了什么?
activeperl ×10
perl ×9
windows ×3
activestate ×1
apache2 ×1
openssl ×1
perl5 ×1
random ×1
shebang ×1
stdin ×1
string ×1
sublimetext2 ×1
windows-7 ×1