«前の日記(2006-07-11 (火)) 最新 次の日記(2006-07-13 (木))» 編集
にっき
Google
2003|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|10|12|
2015|01|12|
2016|01|12|
2017|01|12|
2018|01|12|
2019|01|12|
2020|01|12|
2021|01|
2022|01|
2023|01|
2024|01|

2006-07-12 (水) [長年日記]

_ String#inspect を元に戻す

String#inspect は文字列の中に改行等の特殊文字入っていてもすべて ASCII 文字列にしてくれるので、複数行にわたる設定などを保存しておくのに便利なのですが、元の文字列に戻す場合は eval を使わなければいけない(わたしはその方法しか知らない)ので、セキュリティ的にちょっと不安がありますよね。

そんな場合は、スレッドを使用して一時的にセーフレベルを上げることで、安全な eval が実現できるようです。

def safe_eval( *param )
  Thread.start do
    $SAFE = 4
    eval( *param )
  end.value
end

_ デジタルカメラの種類と選び方

ワラタ。まあ、すぐに修正されると思うが。

_ 今日のアニメ

姫様ご用心#11
姫子の王冠が取れると、ナーナを守るためどんどん理不尽な法律が作られる。
本日のツッコミ(全1件) [ツッコミを入れる]
_ anonymous (2006-07-13 (木) 02:53)

(本題とはズレたコメントですが)その目的には、String#inspect よりも String#dump の方が向いてるかもしれません。<br>リファレンスマニュアルより String#dump の説明:「文字列中の非表示文字をバックスラッシュ記法に置き換えた文字列を返します。str == eval(str.dump) となることが保証されています。」


«前の日記(2006-07-11 (火)) 最新 次の日記(2006-07-13 (木))» 編集