小编EDJ*_*EDJ的帖子

在Perl中,如何确定是否存在标准输入?

我有一个抓住标准输入的脚本:

&process_input

sub process_input {
    while(<STDIN>) {
       $log_data .= $_;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行脚本时:

myscript.pl -param1=a -param2=b
Run Code Online (Sandbox Code Playgroud)

我陷入了这个子程序.如果我这样做,一切都运行正常:

echo "" | myscript.pl -param1=a -param2=b
Run Code Online (Sandbox Code Playgroud)

问题是我如何确定我是否有标准品?我原本以为while()会返回false并且不会运行,但我猜它实际上正等着你输入一些东西,因为它被"卡住"了.

perl stdin

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

为什么我的Perl CGI抱怨"过早结束脚本标题"?

我相信有人可以很快回答这个问题,但我只是新来的...

我正在尝试修改demarc(一个简单的网络监视工具)来对一个简单的脚本进行系统调用.脚本本身什么都不做,我只是想做一个'概念验证',因为我不断收到内部服务器错误.脚本的权限已设置为777.当我评论system()调用时,一切都很好.所以这让我怀疑它是发生错误的system()调用.我也尝试过exec(),但这也不起作用.错误不能出现在脚本本身,因为其中只有一个echo"test".

我是否错过了任何权限或是否有其他方法使这项工作?任何建议将不胜感激.

sub generate_ticket {
   my @args = ("$base_path/test.pl");
   exec(@args);
}
Run Code Online (Sandbox Code Playgroud)

这在文件中的某处称为:

} elsif ($FORM{'delete_type'}=~/generate/) {
    my $message = &generate_ticket($delete_array_ref);
    #&ack_events($delete_array_ref);
    $events_deleted = (@$delete_array_ref);
    &push_message("<FONT COLOR=red><B>Result: $message.</B></FONT>");
}
Run Code Online (Sandbox Code Playgroud)

test.pl:

#!/usr/bin/perl
print "Test";
Run Code Online (Sandbox Code Playgroud)

错误日志:[Mon Nov 30 14:58:22 2009] [错误] [client 127.0.0.1]脚本标题过早结束:demarc,referer:http:// localhost/dm/demarc?td = show_events&limit = 60&sid = 35

perl cgi

5
推荐指数
3
解决办法
1万
查看次数

如何在Java Swing Application Framework中处理命令行参数

我正在尝试在运行应用程序时获取从命令行传递的参数.我有一个通过netbeans制作的项目,它使用SingleFrameApplication类或swing应用程序框架.主要方法是打电话

launch(MyApp.class, args);   
Run Code Online (Sandbox Code Playgroud)

在它的主要方法.http://java.sun.com/developer/technicalArticles/javase/swingappfr/中的文档说:

启动方法在调用启动方法之前调用应用程序的可选初始化方法.您可以使用initialize方法执行任何初始配置或设置步骤.例如,您可以在initialize方法中处理命令行参数.您还可以检查数据库连接或设置系统属性.简而言之,框架为显示UI之前应用程序可能需要的任何非UI相关设置提供了此方法.Application和SingleFrameApplication类为initialize方法提供了一个空方法体.该方法默认不执行任何操作.

我们在这里谈论MyApp.initialize方法吗?如果是这样,似乎没有任何args参数的引用.

编辑:这不是一个小程序,它是一个桌面应用程序.请记住,它使用Swing应用程序框架,这意味着,部分原因是为您的主java类GUI提供了一个"启动器"类.代码段将是:

public class MyApp extends SingleFrameApplication {

@Override protected void startup() {
    MyAppGUI view = new MyAppGUI(this);

    show(new MyAppGUI(this));
}

public static void main(String[] args) {
    launch(MyAppGUI.class, args);
}
Run Code Online (Sandbox Code Playgroud)

java swing

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

当多个apache线程试图访问数据库时,如何确保只插入一条记录?

我有一个Web服务(确切地说是xmlrpc服务),它可以处理将数据写入数据库的其他事项.这是场景:

我经常收到更新或插入记录的请求.我会做的是:

  1. 如果记录已存在,请附加到记录中,
  2. 如果没有,请创建一个新记录

问题在于,某些时候我会收到"爆发"的请求,这会产生几个apache线程来处理请求.这些"爆发"将在不到几毫秒的时间内完成.我现在有几个线程执行#1和#2.通常两个线程将"传递"数字#1并实际创建两个重复记录(主键除外).

我想使用一些锁定机制来防止其他线程在另一个线程完成其工作时访问该表.我只是害怕使用它,因为如果发生了什么事,我不想让桌子锁定.

  • 更新:该表已有主键.理想情况应该是第一个线程应该创建记录,如果它不存在,那么一旦第二个线程进入,它将不会创建另一个记录,而只是更新已经创建的记录.这几乎就像我想让线程形成一个单行文件.

有一个坚实的方法来处理这个?如果我能正确使用,我愿意使用锁.

谢谢,

php mysql apache

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

标签 统计

perl ×2

apache ×1

cgi ×1

java ×1

mysql ×1

php ×1

stdin ×1

swing ×1