1. 程式人生 > >關於在DESTROY方法中執行命令的問題

關於在DESTROY方法中執行命令的問題

 

這段程式碼中, 如果遮蔽DESTROY函式中的my $context = $self->fn();     最後exit status就為1, 否則就為0。
     
chinaunix上有位 socyn 提到:

在 perlobj 中找到這麼一段,應該就是原因吧

Since DESTROY methods can be called at unpredictable times, it is important that you localise any global variables that the method may update. In particular, localise

[email protected] if you use eval {} and localise $? if you use system or backticks.

我也在model_perl上也看到了一句類似的話,說DESTROY方法可能重置[email protected]

可以通過

立刻複製[email protected]可以預留它的內容。

要想保證退出狀態,我們也可以定義一個$self->{error},在init方法(該方法在new中呼叫,$self->init();)中初始化它為0。然後在exit 1;之前將它賦值為1,最後在DESTROY方法的最後,返回給$? = $self->{error};

相關推薦

關於在DESTROY方法執行命令的問題

#!/usr/bin/perl package test; sub new() { my $ref = shift; my $class = ref($ref) || $ref; my $self = {}; bless($self, $cl

python執行命令的3種方法小結

原文地址:http://www.cnblogs.com/qytang/p/5566860.html 1. 使用os.system("cmd") 特點是執行的時候程式會打出cmd在linux上執行的資訊。 import os os.system("ls") &nbs

python執行命令列的方法

1.os.system(command) 該方法和C語言裡的system函式是一致的。該方法的引數就是string型別的命令,返回值方面,linux和windows上的返回值不同。linux上,返回

python執行命令行read結果

驅動 post log pre 變量 port http import 結果 import os r = os.popen(‘python -V‘).read() print(type(r)) print(r)    # os.system(‘python -

在單獨的main方法執行spring 管理的類方法

import org.apache.commons.lang3.RandomStringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.con

Android 在Android程式碼執行命令

Android 在Android程式碼中執行命令列 轉自 https://www.cnblogs.com/lipeineng/p/6078859.html 1.路徑最好不要是自己拼寫的路徑/mnt/shell/emulated/0/wifidog.conf 最好是通過方法獲取的路徑,不然

在mybatis同一個方法執行多個SQL語句實現方法

  一、oracle資料      <delete id="delete" parameterType="upc.cbs.HtxxlrEntity"> begin    delete from PC_CBS_CONTRA

在docker容器執行命令時,提示找不到命令

在使用docker容器時,有時候裡邊沒有安裝vi,敲vi命令時提示說:vi: command not found,這個時候就需要安裝vi,可是當你敲apt-get install vi命令時,提示: Reading package lists... Done  

Gnome Terminal,Xshell等終端模擬器執行命令出現亂碼問題解決

一、前言 Xshell跟Gnome Terminal相比,兩者都是終端模擬器(在Xshell中也可以執行簡單的內建命令,如“cd”,“ls”等),地位相同。 二、原理分析 涉及到亂碼,那麼需要了解編碼解碼過程。在終端模擬器中執行命令,通訊過程示意圖如圖

關於cmd執行命令路徑包含空格的解決辦法

 女朋友最近在學習Python,今天在弄EasyGui的安裝,本來非常簡單的一個問題,在CMD中進入EasyGui的目錄,然後呼叫Python安裝目錄下的Python.exe執行EasyGui下的setup.py即可。整個命令就是:"C:\Program Files (x86)\Python\pyt

PyCharm小技巧:斷點除錯時在控制檯執行命令

現在有一段測試程式碼,我想在執行時暫停,觀察此時的資料: import pylab as plt import numpy as np img=plt.imread('test.jpg') mean_px=np.mean(img, axis=(0, 1)) aft=(img-mea

不要在廣播的onReceive()方法執行耗時操作

不要在onReceive()方法中新增過多的邏輯或執行耗時操作,因為onReceive()方法執行在主執行緒中,耗時操作會導致ANR。 同時,廣播接收器中不允許開啟子執行緒: 對於靜態註冊的廣播接收器來說,廣播接收器物件的生命週期較短,執行完onReceive()方法就會變為垃圾物件而被回收,

linux ssh 到遠端伺服器執行命令和crontab執行命令提示命令找不到的問題

使用ssh ip "hadoop" 命令時,提示找不到hadoop命令。 因為hadoop是在/etc/profile配置的,ssh到一臺伺服器上時,會執行使用者環境。 而ssh到一臺伺服器上,帶著命

systemverilog-modelsim執行命令,時間精度,include

在modelsim 10.2中能模擬執行systemverilog檔案,輸出結果是在transcript的命令列。 .do中命令為:vlog -sv file_path,  examp: vlog -sv -quiet  /ifn/mns/my_top.sv 推薦一個學習s

Linux shell指令碼執行命令結果賦值給變數&&echo輸出變數是否包含換行符的問題

Linux shell指令碼中執行命令結果賦值給變數&&echo輸出變數是否包含換行符的問題 echo $ret 和 echo "$ret" 區別: 如果是echo $ret,輸出結果為一行,沒有換行符 如果是echo "$ret",輸出結果為多行,有換行符

TestNG在java執行命令

1、配置好java環境(在環境變數中,具體內容參見網上) 2、安裝好eclipse,並能夠正常使用,並配置testng環境(不詳細舉例,可以從網上其他地方參考) 3、新建一個專案:test,建立一個包:test;並在包下建立類:TestngAnnotation; Tes

Android如何在oncreate方法執行耗時操作

最近在編寫程式碼時發現一個問題,在編寫了一個網路請求方法時,寫在oncreate的方法中時,往往會跳過請求,我又嘗試新建了一個button,在onclick方法中呼叫,卻發現又可以正確的執行該方法,那麼問題出在哪裡呢? 我查閱了相關資訊,在主執行緒中,我們不能執行耗時操作來

Shell腳本(腳本結構和執行方法,date命令用法,腳本的變量)

cal 方式 spa 12月 自動化 復制 自定義函數 soft 變量 Shell是什麽Shell是一種腳本語言,和傳統語言C,Python...相比還是比較簡單的。可以使用邏輯判斷,循環等語法可以自定義函數shell是系統命令的集合shell腳本可以實現自動化運維,能大大

shell執行多個命令方法

shell中執行多個命令的方法 1、在命令列中同時輸入多個語句: 直接在linux命令列中可以依次執行多個命令,多個命令間可採用“;”、“&&”和"||"分割,三個分隔符作用不同: (1);分割符:前後命令間沒有必然的聯絡,前一個執行結束後、再執行第二個,沒有邏輯關聯;

python執行shell命令的幾個方法

1.os.system() a=os.system("df -hT | awk 'NR==3{print $(NF-1)}'") 該命令會在頁面上列印輸出結果,但變數不會保留結果,只會保留返回的狀態碼. 2.os.popen() os.popen()返回的是 file read 的物件,但沒有狀