タグ

ブックマーク / blog.akiym.com (2)

  • Perl5におけるコンテキストの扱いによる脆弱性について - アリ

    The Perl Jam - Exploiting a 20 Year-old Vulnerability より Perlを普段から書いている人にとっては常識ではあるが、そうではない人のために書いておく。 リストと配列 Perlにおける「リスト」とは何かというのを確認しておく。まず、Perlにはコンテキストという他のプログラミング言語にはない概念があり、単数(スカラー)と複数(リスト)を区別する。 # 配列 my @a = ('a', 'b', 'c'); # リストコンテキスト # 配列をリストコンテキストで評価 print @a; #=> abc # リストをリストコンテキストで評価 print ('a', 'b', 'c'); #=> abc # スカラーコンテキスト # 配列の要素はスカラー print $a[0]; #=> a # 配列をスカラーコンテキストで評価 print s

    Perl5におけるコンテキストの扱いによる脆弱性について - アリ
    nkwhr
    nkwhr 2015/02/28
  • Perlの食えない事情 - 演算子編 - アリ

    Perlえない事情 より おっと、そうです、Perlには演算子が多すぎるのでした。せっかくの機会なので、Perlの演算子を紹介します。 ビーナス演算子: 0+, +0 数値として評価してくれます。意外とよく見かけますね。 なぜこの演算子を使う必要があるのかというと、Perlは文字列と数値を明確に区別できないからです。scalarを文字列として解釈するならば文字列として、 print 0+ '10'; #=> 10 print 0+ '123b'; #=> 123 print '1.2e3' +0; #=> 1200 print [] +0; #=> 4303367864 ちなみに、文字列として評価するときにはこのようにするとかっこいいと言われています。 $obj.q(); 一見メソッド呼び出しのように見えますが $obj . ''; と等価です。 ベビーカー演算子: @{[ ]} 文字

    Perlの食えない事情 - 演算子編 - アリ
    nkwhr
    nkwhr 2013/02/05
  • 1