我想捕获Perl程序的输出并在C#Windows窗体的文本框中显示输出数据(屏幕上的字符串).
这是我的主要C#代码:
public partial class frmMain : Form
{
private Process myProcess = null;
public frmMain()
{
InitializeComponent();
}
public delegate void UpdateUIDelegate(string data);
private void btnRun_Click(object sender, EventArgs e)
{
myProcess = new Process();
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("perl.exe");
myProcessStartInfo.Arguments = "test.pl";
myProcessStartInfo.UseShellExecute = false;
myProcessStartInfo.RedirectStandardOutput = true;
myProcessStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
myProcessStartInfo.CreateNoWindow = true;
myProcess.StartInfo = myProcessStartInfo;
myProcess.OutputDataReceived += new DataReceivedEventHandler(myProcess_OutputDataReceived);
myProcess.Start();
myProcess.BeginOutputReadLine();
}
void myProcess_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
if (txtOutput.InvokeRequired)
{
UpdateUIDelegate updateDelegate = new UpdateUIDelegate(UpdateUI);
this.Invoke(updateDelegate, …Run Code Online (Sandbox Code Playgroud) 我在这2个权限之间感到困惑.从权限参考,这两个权限都提供对用户的帖子/消息的访问.似乎read_stream权限涵盖了user_status权限,因为它提供了对所有帖子的访问权(意味着所有消息,签到,状态......以及用户的朋友在用户页面上发布的帖子).
任何人都可以为这些权限提供更多信息吗 谢谢.
尝试使用Perl将位移位为负数时,我遇到了问题.例如:
printf("%d", (-10) >> 2);
Run Code Online (Sandbox Code Playgroud)
此方法打印:1073741821
在相同条件下,当我尝试使用Javascript时:
document.write('test: ' + (-10 >> 2) + '<br>');
Run Code Online (Sandbox Code Playgroud)
输出为-3
我想了解Perl和Javascripts之间的区别.Perl是否存在将位移位为负数的问题?
非常感谢你.
我已经将PerlNet用于数据提取项目.Perl是一种功能强大的语言,可通过庞大的CPAN模块提取数据和文本操作.但是,我的程序需要某种UI,线程...我决定使用.NET C#.使用Perl Dev Kit,我们可以选择将Perl模块包装到.NET DLL中,并直接从C#使用此DLL.
一切都很好,但我有一个关于PerlNet架构的问题.据我所知,PerlNet是ActiveState和Microsoft之间用于在.NET中运行Perl代码的研究项目,但我没有找到任何相关文档.
PerlNet有什么限制?PerlNet是如何构建的?
谢谢,明.
我写了一个使用Class :: ArrayObjects的简单程序,但它没有按照我的预期工作.该计划是:
TestArrayObject.pm:
package TestArrayObject;
use Class::ArrayObjects define => {
fields => [qw(name id address)],
};
sub new {
my ($class) = @_;
my $self = [];
bless $self, $class;
$self->[name] = '';
$self->[id] = '';
$self->[address] = '';
return $self;
}
1;
Run Code Online (Sandbox Code Playgroud)
Test.pl
use TestArrayObject;
use Data::Dumper;
my $test = new TestArrayObject;
$test->[name] = 'Minh';
$test->[id] = '123456';
$test->[address] = 'HN';
print Dumper $test;
Run Code Online (Sandbox Code Playgroud)
当我运行Test.pl时,输出数据是:
$VAR1 = bless( [
'HN',
'',
''
], 'TestArrayObject' );
Run Code Online (Sandbox Code Playgroud)
我想知道'name'和'id'的数据在哪里? …
我正试图找到一种方法来从网页的下拉列表中获取所有值和标签.有了标签,我可以使用:
my @labels = $sel->get_select_options('s');
Run Code Online (Sandbox Code Playgroud)
返回值是下拉列表中的标签数组.但是,没有获得所有值的等效方法.
你们知道怎么做吗?
我正在为我的应用程序使用SimpleDB.除非一个属性的限制是1024字节,否则一切顺利.因此,对于一个长字符串,我必须将字符串切成块并保存.
我的问题是,有时我的字符串包含unicode字符(中文,日文,希腊文),该substr()函数基于字符数而不是字节.
我试图使用use bytes字节语义或更晚,
substr(encode_utf8($str), $start, $length)但它根本没用.
任何帮助,将不胜感激.
我写正则表达式来删除字符串中的多个空格.代码很简单:
my $string = 'A string has more than 1 space';
$string = s/\s+/\s/g;
Run Code Online (Sandbox Code Playgroud)
但是,结果是坏事:'Asstringshassmoresthans1sspace'.它用's'字符替换每个空格.
有一个解决方法,而不是使用\ s进行替换,我使用''.所以正则表达式变成:
$string = s/\s+/ /g;
Run Code Online (Sandbox Code Playgroud)
为什么正则表达式不起作用?