标签: activestate

CGI.pm通常在哪里创建临时文件?

在我的所有Windows服务器上,除了一台机器,当我执行以下代码来分配临时文件文件夹时:

use CGI;
my $tmpfile = new CGITempFile(1);
print "tmpfile='", $tmpfile->as_string(), "'\n";
Run Code Online (Sandbox Code Playgroud)

变量$tmpfile被赋值'.\CGItemp1',这就是我想要的.但是在我的一台服务器上,它被错误地设置为C:\temp\CGItemp1.

所有服务器都运行Windows 2003 Standard Edition,IIS6和ActivePerl 5.8.8.822(升级到更高版本的Perl不是一个选项).从命令行或IIS中作为CGI脚本(其中scriptmap .pl= c:\perl\bin\perl.exe "%s" %s)运行脚本时,结果始终相同.

我如何修复这个Perl安装并强制它.\CGItemp1默认返回' '?

我甚至将整个Perl文件夹从一个工作服务器复制到了这台机器,但没有任何乐趣.

@Hometoast:

我检查了' TMP'和' TEMP'环境变量$ENV{TMP},$ENV{TEMP}并且它们是相同的.

从命令行,它们指向用户配置文件目录,例如:

C:\DOCUME~1\[USERNAME]\LOCALS~1\Temp\1

在IIS下作为CGI脚本运行时,它们都指向:

c:\windows\temp

在注册表项中HKEY_USERS/.DEFAULT/Environment,两台服务器都具有:

%USERPROFILE%\Local Settings\Temp

ActiveState实现CGITempFile()显然正在使用另一种机制来确定它应该如何生成临时文件夹.

@Ranguard:

真正的问题在于CGI.pm模块和附件处理.每当文件上传到网站时,都CGI.pm需要将其存储在临时的某个地方.为此,CGITempFile()在内部调用CGI.pm以分配临时文件夹.所以不幸的是我无法使用File::Temp.不管怎么说,还是要谢谢你.

@克里斯:

这帮了很多.我之前有一个快速扫描CGI.pm源,但你的建议让我回过头来仔细研究它以了解底层算法.我把事情搞定了,但最奇怪的是c:\temp服务器上最初没有文件夹.

为了获得临时修复,我创建了一个c:\temp文件夹并为该网站的匿名用户帐户设置了相关权限.但是因为这是一个共享的盒子,我不能这样做,即使临时文件被删除了.简而言之,我将c:\temp文件夹重命名为不同的东西,并且奇怪地返回了正确的' …

perl cgi activestate

2
推荐指数
1
解决办法
3953
查看次数

在Windows 7上的pil png activestate ZLIB(PNG/ZIP)支持不可用

我正在尝试将一个python程序从OS X移植到Windows 7.该程序使用tkinter处理png,例如

self.logoImg = ImageTk.PhotoImage(Image.open('GrowthPathLogo.png'))
Run Code Online (Sandbox Code Playgroud)

代码失败,IOError:解码器zip不可用

我尝试用pypm安装pip.然后我尝试用pip构建它.在构建过程结束时,它报告不支持png/zlib

我在Windows上安装了python.org时遇到了同样的错误.

我被困住了,我不擅长构建C库.我也不知道pip是如何工作的.我安装了一个gnu zlib库,但它根本没有帮助.我安装了Visual C++ 2008 Express,至少可以正常工作,因为pip会成功编译.

python windows activestate activepython python-imaging-library

2
推荐指数
2
解决办法
3736
查看次数

为什么Perl的bignum模块给出了功率计算的奇怪结果?

上下文:ActiveState Perl:这是为MSWin32-x86-multi-thread构建的perl 5,版本12,subversion 4(v5.12.4)

>perl -Mbignum=l -e "print 2 ** 32"
4294967296

>perl -Mbignum=l -e "print -2 ** 32"
-4294967296
Run Code Online (Sandbox Code Playgroud)

然后我开始思考,也许我需要划分负面的两个.

>perl -Mbignum=l -e "print (-2) ** 32"
-2
Run Code Online (Sandbox Code Playgroud)

终于想通了.

>perl -Mbignum=l -e "print ((-2) ** 32)"
4294967296
Run Code Online (Sandbox Code Playgroud)

所有括号怎么样?

perl activestate

2
推荐指数
1
解决办法
140
查看次数

Windows等效于所需的perl模块(在activestate ppm中不可用),例如file :: finder

我正在尝试将用linux编写的代码导入eclipse的perl插件'epic',并在windows中安装了activestate perl.大多数模块都有一个activestate等效,但其中一些我用ppm找不到.有谁知道如何获得以下模块,以便代码可以编译?

  • 文件::查找
  • 电子表格:: WriteExcel ::工具
  • SYBASE :: CTLIB
  • SYBASE :: DBLIB
  • SYBASE :: XFER
  • 模板
  • 模板::常量
  • DBD ::的Sybase
  • 文件:: Rsync的
  • PerlIO的/ gzip的

perl module activestate ppm

1
推荐指数
1
解决办法
600
查看次数

perl脚本的意外输出

以下脚本不生成输出:

use File::stat;
use Time::localtime;
my $filename = 'c:\testfile';
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
              $atime,$mtime,$ctime,$blksize,$blocks)
                  = stat($filename);
print("$mtime");
Run Code Online (Sandbox Code Playgroud)

c:\testfile 存在.

我已经在SO上看到了几个答案 - 例如 - 这似乎表明返回的数组stat()应该有一些有意义的东西,但我没有看到实际情况.

这是Windows 7上的64位ActiveState Perl.

统计数据不会做那些答案似乎暗示,或者Perl的文件日期/时间功能在Windows下运行(或64位Windows,还是某些?)

perl activestate stat

1
推荐指数
2
解决办法
162
查看次数

TCL,regexp函数和if语句

我有以下TCL代码:

    #wrong format:
    set in_val "12 0 2 0 0 0 1 0 3 698"
    #correct format:
    #set in_val "12 0 1 0 0 0 1 0 3 698"
    set val_ok [regexp {(\d+)\s([01]\s)([01]\s)([01]\s)([01]\s)([01]\s)([01]\s)([01]\s)(\d+)\s(\d+).*} $in_val Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9 Var10 Var11]
    if {$val_ok==1} {
       # correct format
       puts "Correct format, continuing..."
       puts "$Var2 $Var3 $Var4 $Var5 $Var6 $Var7 $Var8 $Var9 $Var10 $Var11"
    } else {
       # wrong format
       puts "Wrong format, stimulus [$in_val]"
    }
Run Code Online (Sandbox Code Playgroud)

我想检查regexp函数描述的格式是否正确.当in_val var具有正确的格式时,一切都很好,if块是exectuted.但是,当格式错误时,我得到以下错误,而不是输入else块: …

regex if-statement tcl activestate

0
推荐指数
1
解决办法
945
查看次数

当shebang line存在时,Perl'hello world'不起作用(Windows)

我在Windows XP上运行ActiveState Perl 5.10.1.

执行以下程序,但在命令行中不生成输出:

#!c:/perl/bin/perl.exe

use strict;
use warnings;

print "foo\n";
Run Code Online (Sandbox Code Playgroud)

如果我删除shebang行,我会按预期显示'foo'作为输出.

如果我使用文件关联only(foo.pl)执行,通过PATH(perl foo.pl)引用perl 甚至直接引用perl可执行文件(),我得到相同的结果c:\perl\bin\perl.exe foo.pl.

我不明白为什么脚本在没有shebang线的情况下工作,但是当shebang线存在时我没有输出.我的理解是,对于Windows中的Perl来说,shebang行并不是绝对必要的,但是如果你想使用像-w... 这样的开关,它被认为是很好的做法.

如果我明确地设置句柄STDOUT,即没有区别 print STDOUT "foo\n";

这让我绝对疯狂; 任何提示将不胜感激.

windows perl activestate shebang

0
推荐指数
1
解决办法
465
查看次数

Perl非法划分为零

我正在尝试运行这个Perl程序.

#!/usr/bin/perl
# ---------------     exchange.pl     -----------------

&read_exchange_rate;     # read exchange rate into memory

# now let's cycle, asking the user for input...

print "Please enter the amount, appending the first letter of the name of\n";
print "the currency that you're using (franc, yen, deutschmark, pound) -\n";
print "the default value is US dollars.\n\n";
print "Amount: ";

while (<STDIN>) {

  ($amnt,$curr) = &breakdown(chop($_));

  $baseval = $amnt * (1/$rateof{$curr});

  printf("%2.2f USD, ", $baseval * $rateof{'U'});
  printf("%2.2f Franc, ", $baseval * $rateof{'F'});
  printf("%2.2f …
Run Code Online (Sandbox Code Playgroud)

unix perl activestate divide-by-zero

-1
推荐指数
1
解决办法
1828
查看次数