通过#代码运行perl
我正在尝试通过C#代码运行Perl脚本. Perl脚本将文本文件作为输入,并创建两个新文件作为输出(在两者之间进行一些文本处理).当我使用以下代码通过C#运行Perl脚本时,它似乎开始执行,但没有创建文件.有什么问题?语法错误? ProcessStartInfo perlStartInfo = new ProcessStartInfo(@"c:\Perl\bin\perl.exe"); perlStartInfo.Arguments = "c:\\Perl\\DOC-MAT.pl " + "c:\\Perl\\comb1.txt" + "c:\\Perl\\comb1.mat"; perlStartInfo.UseShellExecute = false; perlStartInfo.RedirectStandardOutput = true; perlStartInfo.RedirectStandar
36 2024-04-25
编程技术问答社区
在C#网络应用程序中执行Perl脚本的问题
简单地说,我在执行C#Web应用程序中具有输入参数的Perl脚本方面存在问题.我从控制台应用程序执行代码没有问题,但是在我的Web应用程序中,我没有收到任何响应. 我使用的代码是: ProcessStartInfo cmdStartInfo = new ProcessStartInfo(); cmdStartInfo.FileName = "C:\gnu\perl.exe"; cmdStartInfo.Arguments = "run.pl --day=1 --format=2"; cmdStartInfo.RedirectStandardOutput = true; cmdStartInfo.RedirectStandardError = true; cmdStartInfo.RedirectStandardInput = true; cmdStartInfo.UseShellExecute = false; cmdStartInfo.CreateNoWindow = tr
24 2024-04-24
编程技术问答社区
我可以在C#中定义一个类似Perl的绑定操作符(=~)吗?
我真的很喜欢能够在perl中使用=〜和!〜来评估正则表达式的字符串.我想将此功能移植到C#,但是看来,尽管您可以超载运算符,但您不能创建新的功能. 我正在考虑扩展字符串类型以提供匹配()方法,该方法将使我可以通过正则表达式进行评估,但我想知道有一种更好的方法. 有人有更好的解决方案吗? 解决方案 尝试为字符串类创建扩展方法,该类将"快捷方式"到Regex.Match. 这样的东西: public static class RegexExtensions { public static bool Match(this string text, Regex re) { return Regex.Match(text, re); } } 其他解决方案 根据我的经验.NET支持与Perl Prioner Expressions相同的功能,但是语法更详细,因此需要一点时间. c#不支持隐式变量的概念,因此您始终必须同时提
16 2024-04-24
编程技术问答社区
为什么C#不能解密Perl'的Crypt::Rijndael的输出?
文件已由Perl加密.最初的解密尝试失败了,我现在试图确定是否有任何Hoojoo(需要其他一些设置) duff perl代码: use strict; use Crypt::Rijndael; my $key ='...'; my $rcipher = Crypt::Rijndael->new ($key, Crypt::Rijndael::MODE_CBC()); undef $/; my $encrypted = ; print $rcipher->decrypt($encrypted); C#解密实施 CryptoStream decryptor = null; StreamReader srDecrypt = null; FileStream fsIn = null; RijndaelManaged rijndaelCipher = null; string fil
16 2024-04-24
编程技术问答社区
我如何在Linux上使用Mono在我的C#程序中嵌入Perl解释器?
有人知道是否可以从C#中的单声道拨打Perl sub?这是在Linux机器上. 也许DllImport?我们希望尽可能避免每次加载perl. 解决方案 Interop在Linux下与单声道的效果很好,可以调用C代码. 因此,我会认为您查看 perlembed . 您需要创建共享的C图书馆,而不是C程序. 对于Interop,有几个好的指南 - 潜在的陷阱是数据类型的大小,因为您确实获得了Plaform/CPU的依赖性. 让我知道您是否需要更多详细信息. 其他解决方案
22 2024-04-23
编程技术问答社区
嵌入Perl解释器
刚刚下载了ActivePerl.我想将Perl解释器嵌入C#应用程序(或至少从C#调用Perl解释器).我需要能够从C#发送发送数据,然后将输出接收到C#. . i刚刚安装了ActivePerl,并添加了MS脚本控制1.0作为参考.我在互联网上找到了此代码,但是很难使其工作. MSScriptControl.ScriptControlClass Interpreter = new MSScriptControl.ScriptControlClass(); Interpreter.Language = @"ActivePerl"; string Program = @"reverse 'abcde'"; string Results = (string)Interpreter.Eval(Program); return Results; 最初,它具有" perlscript",而不是" ActivePerl",但对我来说都不适合.我不完全确定解释器的期望.它需要通往解释器的
18 2024-04-23
编程技术问答社区
如何确定我是否从插座中读取了内容?
以下代码应该从插座上读取一些,数字中的几行. use warnings; use strict; use IO::Socket::INET; my $server = shift; my $port = shift; my $sock = new IO::Socket::INET ( PeerAddr => $server, PeerPort => $port, Proto => 'tcp', Timeout => 1, Blocking => 0 ) or die "Could not connect"; while (my $in = ) { print "$in"; } print "Received las
16 2024-04-23
编程技术问答社区
Perl `send` 陷阱与 "连接 "UDP `IO::Socket::INET`,忽略目标地址?
当通过INET UDP插座发送的数据包是不是发送到给定目标地址的 时,我正在调试一些奇数问题.. 文档(perldoc -f send)说: 在未连接的插座上,您必须指定发送到达的目的地,在这种情况下,它会执行Sendto(2)Syscall. 这就是关于TO参数连接的插座的全部内容. 但是,在调试几个小时后,手册似乎 说的是: 在连接的插座上忽略了参数. 所以我想知道: UDP插座是否ever 连接? 我发现正确的是,当创建PeerAddr时,PeerAddr在创建IO::Socket::INET时被忽略了(因此"连接"套接字)? 当插座"连接"并指定目标地址时,不应该发送返回错误,还是实现错误(即:发送给定的目标在发送时不应该覆盖插座的同伴地址)?至少这遵循至少令人惊讶的原则. 一种示例 要求提供一个例子,这是一个: #!/usr/bin/perl use strict; use warnings; use IO::
20 2024-04-23
编程技术问答社区
perl 500 SSL 协商失败
500 SSL谈判失败. 当我尝试与具有认证,用户名和密码作为凭据的Web服务连接时,有问题,任何人都可以帮助我 代码: $ENV{HTTPS_CA_FILE} = '/pass/cert.crt'; $ENV{HTTPS_CA_DIR} = '/pass/'; $ENV{HTTPS_PROXY_USERNAME} = 'username'; $ENV{HTTPS_PROXY_PASSWORD} = 'password'; use SOAP::Lite +trace => 'debug'; $soap = SOAP::Lite->new()->on_action( sub { join '/', @_ } )->proxy("`https`://`ip`:`port`/SendSMS"); sub SOAP::Transport::HTTP::Client::get_basic_credentials { return 'us
22 2024-04-23
编程技术问答社区
使用 Perl'SOAP::Lite 和 WSDL 文件进行 SOAP 调用
我想对本地Web服务进行肥皂调用. Web服务是通过WSDL文件定义的(请参见下文).我想使用perl和soap :: lite.我尝试了: use strict ; use warnings ; use SOAP::Lite ; my $endpoint = qq{http://example.com:2222/orawsv/PS_API/ACCOUNT_WS} ; my $tns = 'http://xmlns.oracle.com/orawsv/PS_API/ACCOUNT_WS' ; my $method_urn = $tns ; my $soapaction = $tns ; my $method = 'GET_BY_ACCOUNT_NUMBER' ; my $sObj = SOAP::Lite->new(uri => $soapaction, proxy => $endpoint) ; my $response = $sObj->call(SOAP::Data
26 2024-04-23
编程技术问答社区
Perl SMTP:无法发送正文中包含非字符串的电子邮件
代码,发送电子邮件(工作良好): #!/usr/bin/perl use utf8; use strict; use warnings; use Email::Sender::Simple qw(sendmail); use Email::Sender::Transport::SMTP (); use Email::Simple (); use open ':std', ':encoding(UTF-8)'; sub send_email { my $email_from = shift; my $email_to = shift; my $subject = shift; my $message = shift; my $smtpserver = 'smtp.gmail.com'; my $smtpport = 465; my $smtpuser = 'user@gmail.com'; my $passw
76 2024-04-22
编程技术问答社区
Perl WordNet::Similarity 安装问题
我已经尝试使用Activestate和Strawberry,但是每次运行时都会收到相同的错误消息 cpan install WordNet::Similarity 将其简要降低到此输出: C:\strawberry\perl\bin\perl.exe "-Iblib\arch" "-Iblib\lib" build/Depthfiles.PL b lib\lib/WordNet/synsetdepths.dat Generating default depth files. Loading WordNet::QueryData... done Finding depths of noun taxonomies... (getSense) Internal error: offset=00002342 pos=n at C:/strawberry/perl/site/lib/WordNet/QueryData.pm line 633, line 1. Com
52 2024-04-22
编程技术问答社区
收到信号 SIGSTOP,但 perl 脚本中未设置信号处理程序
我在我的perl脚本中具有以下代码,这些代码似乎不起作用: my $thr; sub start__server_thread() { $thr = threads->create(\&iperf_start_server, $_[0], $_[1], $_[2]); print("Value of thread is $thr\n"); &START_SERVER_RESPONSE($controller_ip, $controller_port, "success", 2345, $_[1]); } sub iperf_start_server() { # Do some stuff here and then handle the signal $SIG{'SIGSTOP'} = sub { print("Stop signal received\n"); $thr->exit();
28 2024-04-22
编程技术问答社区
如何编写不在求值块中触发的 SIG{__DIE__} 处理程序?
根据 尽管此功能仅在您的程序退出之前就直接运行,但目前不是这样:$SIG{__DIE__}挂钩目前被称为甚至在评估的块/字符串内部!如果一个人希望钩子在这种情况下什么都不做,请将die @_ if $^S;作为处理程序的第一行(请参阅perlvar中的$^S).因为这促进了距离的奇怪动作,所以这种违反直觉行为可以在以后的版本中固定. 因此,让我们使用一个基本的信号处理程序,该信号处理程序将用eval { die 42 }触发, package Stupid::Insanity { BEGIN { $SIG{__DIE__} = sub { print STDERR "ERROR"; exit; }; } } 我们用 使此安全 package Stupid::Insanity { BEGIN { $SIG{__DIE__} = sub { return if $^S; print STDERR "ERROR"; exit; }; } } 现在,这将不是ev
30 2024-04-22
编程技术问答社区
从 perl 脚本运行 Unix 命令
我正在尝试在服务器上进行SSH,然后进行GREP以获取日志文件中不同错误的计数.一旦我将这些详细信息记录到CSV文件中.但是当我试图运行GREP命令时,我会遇到错误. #!/usr/bin/perl my $addr = "user\@servername"; my $text = qq|Internal Server Error|; my $remote_path = "/data/logs/error"; my $cmd = `ssh $remote_addr "grep -a $text $remote_path | awk -F " " '{print $4}' | sort -nr | uniq -c | sort -nr 2>/dev/null"`; print $cmd; 但是,当我运行脚本 时,我要低于错误 grep: Internal: No such file or directory grep: Server: No such file or dire
44 2024-04-22
编程技术问答社区
使用反向引用值和 shell 变量替换 Perl 字符串
假设文件上的'pm.max_children = 8''/usr/local/etc/php-fpm.d/www.conf' 以下结果应该是40,但$ 1只是被忽略. aaa=5 perl -i.bak -e "s/pm.max_children\s*=\s*\K([0-9]+)/($1 * $aaa)/ge" /usr/local/etc/php-fpm.d/www.conf 但奇怪的是,以下是在起作用,如果$ aaa不是变量. perl -i.bak -e "s/pm.max_children\s*=\s*\K([0-9]+)/($1 * 3)/ge" /usr/local/etc/php-fpm.d/www.conf 解决方案 $1的含义在外壳和perl中是不同的. 在外壳中,这是指第一个位置参数.随着双引号扩展变量,$1在双引号中也表示第一个位置参数. 在perl中,$1是指与正则表达式匹配的第一个捕获组. 但是,如果您在外壳级别上使用$1
32 2024-04-22
编程技术问答社区
如何在我的 Perl 中调用 shell 脚本函数?
我在util.sh中具有一些功能,我想在util.sh中调用函数并获取返回值. 有人知道该怎么做吗? util.sh #!/bin/bash sayhello() { echo $1 "hello" } 我尝试使用下面的命令在终端中调用该函数,但获取输出"找不到命令sayhello": sh /home/adnrew/code/test/util.sh sayhello test 并在下面使用我的perl中的代码, $returnvalue = system("/home/adnrew/code/test/util.sh sayhello test "); 也无法工作. 如何在我的perl中调用shell脚本函数? 解决方案 您可以通过 将Shell脚本源源 $returnvalue = system(". /home/adnrew/code/test/util.sh; sayhello test"); 父进程(bash
50 2024-04-22
编程技术问答社区
为什么在 HP/UX 上使用 XML::LibXML::Common 时必须使用 libcl.2 的 LD_PRELOAD?
仅在HP平台上强迫LD_Preload强制,而不是其他Unix口味(AIX,Linux和Solaris). 我构建了perl模块 xml :: libxml :: libxml :: libxml :: common我必须专门为ld_preload做libcl.2库仅在HP平台上进行.虽然在其他Unix平台上没有任何必要. 这是HP Loader/Compiler中真正缺少的操作系统行为? 我正在运行一个perl脚本,该脚本只会创建一个新的对象" xml :: libxml :: sax" use XML::LibXML::SAX; $x = XML::LibXML::SAX->new(); ,它抱怨 无法加载'site_perl/5.8.8/pa-risc2.0-thread-multi/auto/auto/xml/libxml/common/common.sl'for Module xml :: libxml :: libxml :: libxml
18 2024-04-22
编程技术问答社区
为什么 Perl 和 /bin/sha1 的结果不同?
我很困惑为什么以下返回单独的sha1s $ perl -MDigest::SHA1 -E'say Digest::SHA1::sha1_hex("http://i.aultec.com/v/8066/Originals/1FTVX12585NA9832010.jpg");' e1133fa3b7ea0bfb8ffa4d877932ed6c6fa10cef $ echo "http://i.aultec.com/v/8066/Originals/1FTVX12585NA9832010.jpg" | sha1sum 5c3731e83ae0184ed93b595b9f5604863dd331e6 - 哪一个是对的? am/i/做错了吗? $ perl -MDigest::SHA -E'say Digest::SHA::sha1_hex("http://i.aultec.com/v/8066/Originals/1FTVX12585NA9832010.jpg");' e1
38 2024-04-22
编程技术问答社区