jpeg_start_decompress

超久しぶりにlibjpeg・・・。 ずっとやれなかった逆変換(Jpeg to Bitmap)をやる・・・。 $ ls bitmap.c bitmap.h license.txt test.jpg $前回のコンポーネントを使いつつ、main.cは、ポイントは、ビットピクセルを後ろから入れていかないといけないところと…

配列のコピー

@で始まる配列オブジェクトに、@で始まる配列オブジェクトを代入するだけでコピーできる。配列をコピーする - Perl - とあるエンジニアの闇歴史帳参照渡しではなく、値渡しなので、まるごとコピー。 そうなっているかチェックするために、コピー後に$ary1[0]…

配列の最後の要素番号

配列名の頭に"$#"とすることで、配列の最後の要素番号を取得できる。配列の最後のインデックス - リストと配列 - Perl入門@aryの最後の要素番号を取得。 それに+1を足すと要素数なのでそれと、本来の配列の要素数(@aryの値)とも比較。 $ perl array.pl 4 5 5…

負の値の添字

Perlは、負の値の添字を使うことができる。[Perl] 配列の処理 その1 - 開発の覚書どこまで負の値が使えるか、どういう挙動になるか、試した。 $ perl array.pl ABC JKL GHI DEF ABC JKL $負の値-1で配列の最後の要素を指し、そこから前の要素に戻っていく。…

配列要素型の混在

Perlは、1つの配列の要素の型として、いろんな型を混在できる。Perl::データ構造整数、文字列、小数を混ぜている。 配列の要素で格納する場合と、リストで指定する場合両方を一応やっている。 $ perl array.pl 10 ABC 1.23 20 DEF 4.56 $確かに問題なく混在…

真偽値

Perlにおいて、if文などの条件式で、0、空文字列("")、空リスト、未定義値は偽となる。Perlにおける真偽値 - Perl入門ゼミこんな感じでチェックしてみる。 $ perl variable.pl false false false false false $ 全部false(偽)になった。Sample/perl/variable…

undef

既に値が格納されている変数に対して、未定義の状態に戻したい時は、undefを使う。undef関数 - 未定義値 - Perl入門ゼミいったん10を格納してからdefinedでチェックして、undefを入れてからまたdefinedでチェックしたらどうなるか・・・。 $ perl undef.pl t…

defined

変数の値が未定義値なのか、値が格納されているのかどうかは、definedでチェックする。defined関数 - 値が定義されているかを確認する - Perl入門ゼミ$var1は突然definedに渡されたので、未定義であり、falseとなる。 $var2は10を格納しているから、定義済み…

未定義値

変数がいきなり出てきたとき、値は未定義である。 値が未定義の時、出力や計算ではどのように解釈されるか。PerlでのNULL$var1は出力なので空文字列、$var2は計算なので0と解釈される。 $ perl variable.pl [] 20 $こうなる。Sample/perl/variable/undefined…

暗黙の文字列変換

Perlでは、ダブルクォートやシングルクォートで囲まれていなくても、数値やサブルーチン名でない限りは暗黙的に文字列に変換する。文字列abcdeのままでも、文字列として$strに格納される。 $ perl implicit_string_conversion.pl abcde $文字列として出力さ…

ヒアドキュメント

複数行の文字列をコード上で扱う場合は、ヒアドキュメントを定義する。ヒアドキュメント - 複数行の文字列を簡単に作成 - Perl入門ゼミ"$text = <

qr

正規表現を変数で持っておく場合、qrを使うことができる。qr演算子 - 正規表現のリファレンスを作成する - Perl入門ゼミこうできる。 $ perl regular_expression.pl abc not match /A[bB]C/ $ perl regular_expression.pl AbC match /A[bB]C/ $ perl regular…

qw

リストは、qwを使ってスペース区切りで表現できる。文字列リスト演算子 - qw() - Perl入門ゼミスペース区切りで定義したリストで変数や配列の初期化。 $ vi list.pl $ perl list.pl $x = 10, $y = 20, $z = 30 $array[0] = 100 $array[1] = 200 $array[2] = …

qx

バッククォートはqxと同義。バッククォート演算子 - 別プロセスを実行し標準出力を取得 - Perl入門ゼミ今回もlsを実行。 今度は改行を付けずに出力。 $ vi back_quote.pl $ ls back_quote.pl $ perl back_quote.pl back_quote.pl $まったく同じ。Sample/perl…

q

シングルクォートで囲まれた文字列は、q/~/と書くこともできる。q - クォート演算子 - Perl入門ゼミqqとqを比較すると、 $ vi single_quote.pl $ perl single_quote.pl XXX ABC YYY AAA $str BBB\n$qqは変数展開とエスケープ処理が効くが、qはそれらが効か…

qq

ダブルクォートで文字列を囲むことと同じことが、qq/~/でも可能である。qq - ダブルクォート演算子 - Perl入門ゼミこれで、 $ vi double_quote.pl $ perl double_quote.pl XXX ABC YYY $$strが展開されている。Sample/perl/double_quote/qq/src/double_quot…

文字列変数の展開

ダブルクォートで囲まれた文字列中の変数が、スペースなどで区切られていれば変数として認識できるが、そうでない場合は認識できない場合がある。"${str}"のように'{'と'}'で区切ることで変数であると認識可能にできる。変数展開時の変数名と文字列の区切り …

バッククォート

ダブルクォートは、変数の展開やエスケープ処理ができる、シングルクォートは、変数の展開やエスケープ処理ができない、であった。 バッククォートの特徴としては、コマンドをシェルで実行するという部分がある。バッククォート演算子 - 別プロセスを実行し…

数値リテラル

整数、小数、16進数、べき乗など、Perlの数値リテラルに関しても、さまざまな数値の表し方がある。数値リテラル - ソースコード上での数値の表現 - Perl入門ゼミ金額とか、欧米だと3桁区切りであったり、こういう指定ができる。 $ vi numeric_literal.pl $ p…

subの戻り値

サブルーチンの戻り値は、returnのあとに戻り値を指定すればいい。perlsub - Perl のサブルーチン - perldoc.jp2つの引数の値を足して、足した結果を戻り値とするサブルーチンaddを定義。 サブルーチンの結果は$rに格納。 $ vi sub.pl $ perl sub.pl add(10,…

subの引数

サブルーチンの引数は、"@_"に配列という形で格納されるので、shiftなどで取り出して使う。perlsub - Perl のサブルーチン - perldoc.jp渡した文字列を出力するprintStrを定義。 shiftで@_から$argに引数が渡る。 $ vi sub.pl $ perl sub.pl ABCDE $このよう…

sub

Perlでは、ユーザー定義できる複数の処理をひとつにまとめたものは関数ではなくてサブルーチンという。サブルーチンの作成方法 - Perl入門ゼミ古くはVisualBasicもサブルーチン持ってるし、戻り値が無い場合をサブルーチンというほうが個人的にはしっくりく…

shift

shiftに配列を渡すと、配列の先頭の要素を取り出して、配列の要素をひとつずつ前にずらす。shift関数 - 配列/リスト - Perl関数のリファレンスまず、リストで配列を初期化し、配列の要素をfor文で出力。 shiftで取り出した要素を$strに格納し出力。 ふたたび…

ダイヤモンド演算子

行入力演算子は、<IN>というようにファイルハンドルから1行ずつ読み出す形であった。 ファイルハンドルを指定しない<>はダイヤモンド演算子と呼ばれ、標準入力またはコマンドライン引数で指定されたファイルから1行ずつ読み出す。行入力演算子「<>」 - ファイル</in>…

@ARGV

コマンドライン引数は、@ARGVで配列として取得できる。コマンドライン引数の取得 - 標準入力とコマンドライン引数 - Perl入門配列なので、要素数も取得できるし、添字でアクセスもできる。 $ vi ARGV.pl $ perl ARGV.pl $size = 0 $ perl ARGV.pl ABC $size …

foreach

Perlにもforeachがある。foreach文 - 繰り返し処理 - Perl入門繰り返し@arrayから要素を取り出して、$varに格納し、それを出力している。 $ vi foreach.pl $ perl foreach.pl $var = 100 $var = 200 $var = 300 $このように出力される。Sample/perl/foreach/…

配列のサイズ

代入演算子を挟んで、左辺に変数、右辺に配列を置いた場合、変数に配列のサイズ(要素数)が格納される。配列の要素数を取得する - Perl入門ゼミ 配列の要素数 - リストと配列 - Perl入門サイズの出力、for文のループをサイズ分までしている。 $ vi array.pl $…

リスト

複数の値をまとめて操作する時、リストを使う。リストとは - リストと配列 - Perl入門 リストと配列の使い方リストは、複数の変数やリテラルなどをカンマで区切って、括弧で全体を括っている。 変数や配列のようなオブジェクトではなく、表現という形に近い…

パターンマッチ演算子

特定の文字列変数が、正規表現のパターンにマッチするかどうかをチェックする時には、パターンマッチ演算子を使う。perlreref - Perl の正規表現のリファレンス - perldoc.jp Perlの正規表現をマスターしよう - Perl入門ゼミ 「=~」 - パターンマッチ演算子 …

正規表現

Perlの特徴的な機能の一つに正規表現がある。perlreref - Perl の正規表現のリファレンス - perldoc.jp Perlの正規表現をマスターしよう - Perl入門ゼミ簡単に言うと、特定パターンの文字列を探すための機能。<IN>で入力された行が、A[bB]C("AbC"または"ABC")か</in>…