我正在编写一个使用外部脚本的Perl脚本.外部脚本必须从特定目录运行,因此我发现以下内容非常有用:
use IPC::System::Simple qw(capture);
my @args = ('external script path...', 'arg1', ...);
my $out = capture( [0], "cd $dir ; @args" );
Run Code Online (Sandbox Code Playgroud)
有时外部脚本会将内容写入STDERR,但仍会返回0.我希望捕获这些时间和confess(或die).由于我不控制外部脚本的返回值,我想也许我可以捕获它的STDERR所以我会有这样的东西:
my ($out, $err) = cool_capture( [0], "cd $dir ; @args" );
say "Output was: $out";
if ($err) {
die "Error: this was written to STDERR: $err";
}
Run Code Online (Sandbox Code Playgroud)
我能做什么?
有没有办法设置php die();消息的输出样式?
我想在错误消息周围添加一些HTML和CSS,以便我可以在高效的环境中使用它.
我有一个用Perl编写的SOAP客户端,使用LWP包进行HTTPS传输和XML::Simple解析XML有效负载.有时候调用会XMLin因为die()而失败,然后我的脚本就会死掉,并且必须由我编写的监控程序重新启动以检测这一点.这真的不可取,所以我想知道Perl是否有任何像C++异常处理机制的设施,我可以捕获骰子消息,忽略它报告错误并让我的脚本继续就像发生错误一样?我已经阅读了许多Perl书籍并寻找了这个,但我还没有找到一些东西.这是杀死我的应用程序,但我不想编写自己的XML解析代码,除非我绝对必须.
我有一个问题,但找不到我需要的答案。我有一个可处理多个文件的 perl 脚本。在脚本的开头,给定的文件被重命名并备份,在脚本的结尾,它被重命名回来,所以原始文件根本没有被触及。但是,如果脚本在运行时终止,例如文件丢失或用户通过键盘上的“cmd + c”退出脚本,该怎么办?是否有一种方法可以定义一个在脚本终止或用户希望脚本终止时始终执行的函数?我从 perl 中找到了“END”块,但它认为这不适用于我的情况。
谢谢你!
-亚历克斯
echo 'SKU is B001'.die();
Run Code Online (Sandbox Code Playgroud)
由于末尾死亡,在上面的行中,echo不显示字符串.
怎么死在这里?
当它出错时,我希望他做两件事.
所以我想:
$rVraagOp = mysql_query( $qVraagOp ) or die( echo nl2br($qVraagOp); mysql_error(); );
Run Code Online (Sandbox Code Playgroud)
我可以编写一个执行这两项操作的函数,然后调用它,但这有点多余.还有另外一种方法吗?
Matthy
我有以下脚本
<?php
echo "I am alive<br>";
die("I am dying<br>");
echo ("Dead");
?>
Run Code Online (Sandbox Code Playgroud)
我得到的输出是
I am alive
I am dying
Run Code Online (Sandbox Code Playgroud)
是否有任何方法(替代/替代die())继续执行剩余的脚本?
编辑:
对不起,我得到了我想要的东西,并投票决定关闭这个问题.请忽略这个问题.
我有一个ajax调用,它将表单中的数据发送到php文件,然后将该数据插入到数据库中.我打电话给die所说的php文件,因为我想尝试一些东西,但它不起作用.
<script>
$(document).ready(function () {
var $form = $('form');
$form.submit(function (event) {
event.preventDefault();
var formData = $form.serialize(),
url = $form.attr('action');
$.ajax({
type: "POST",
url: url,
data: formData,
success: function () {
//$("#div1").load("table.php");
alert('User Successfully Added');
document.getElementById("form1").reset();
}
});
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
这是php文件:
<?php
include('sqlconnection.php');
die('here');
$firstname = $_POST['fname'];
$lastname = $_POST['lname'];
$middlename = $_POST['mname'];
$password = $_POST['pword'];
$username = $_POST['uname'];
$gender = $_POST['gender'];
$utype = $_POST['utype'];
$query = "INSERT INTO user (firstname,lastname,middlename,gender) VALUES ('$firstname','$lastname','$middlename','$gender')";
mysqli_query($con,$query);
$result …Run Code Online (Sandbox Code Playgroud) 你好stackoverflow你总是很好,乐于助人.我的随机模拟器遇到了另一个编译问题;
public class dieSimulator
{
public static void main(String[] args)
{
die();
}
public static int die()
{
generator.nextInt(6)+1;
}
}
Run Code Online (Sandbox Code Playgroud)
它基本上应该在每次运行程序时生成1到6之间的随机int.
任何帮助将不胜感激,谢谢!
编辑:谢谢,这是我当前的代码,仍然给我编译器错误:错误:找不到符号返回generator.nextInt(6)+1; ^符号:变量发生器
public class dieSimulator
{
public static void main(String[] args)
{
int rollValue = die();
System.out.println(rollValue);
}
public static int die()
{
return generator.nextInt(6)+1;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在阅读的这本书告诉我",调用generator.nextInt(6)给你一个0到5之间的随机数".
编辑结束; 使魔术发生的最终代码
import java.util.Random;
public class dieSimulator
{
public static void main(String[] args)
{
int rollValue = die();
System.out.println(rollValue);
}
public static int die()
{
Random generator = new …Run Code Online (Sandbox Code Playgroud) use Carp qw(verbose);为什么make不die产生堆栈跟踪?我的意思是只是
./test.pl 第 8 行出现错误。
已打印,但我还想要一个堆栈跟踪。
#!/usr/bin/perl
use strict;
use warnings;
use Carp qw(verbose);
sub c { die "ERROR"; }
sub b {
c;
}
sub a {
b;
}
a;
Run Code Online (Sandbox Code Playgroud) die ×10
php ×5
perl ×4
exit ×2
ajax ×1
command ×1
echo ×1
exception ×1
formatting ×1
function ×1
html ×1
java ×1
javascript ×1
lwp ×1
message ×1
random ×1
stack-trace ×1
stderr ×1
system ×1
xml-simple ×1