Perlで文字列2バイトずつ分割

文字列を2バイトずつに分割したいとき、任意の2バイトに相当する正規表現(..)でパターンマッチしsplitすると、戻り値の配列に空文字が入る。それらを省く形しかないのか、もっとスマートな正規表現はないのか?

2つの異なるDBMS対応のアプリケーションの移植を行っている。両バージョンで処理結果が一致することを確認するために、DBのレコードをCSV出力し、比較したい。
だが、カラムにバイナリが含まれるテーブルの出力データの仕様が、DBMSによって異なる。一方はバイナリのまま、もう一方は16進ダンプしたキャラクタで出力する。このままでは比較できない。
そのため、16進ダンプキャラクタをバイナリにpackする(これは単純にPerlのpack関数を使えばよい)。
それには、特定の文字列を2バイトずつ分割、それぞれバイナリにpackして出力する必要がある。

この「文字列2バイトずつ」というパターン、正規表現で一発のようだが、

$str="testTEST12345678";
foreach $e (split(/(..)/,$str)) { print $e."\n"; }

このパターンだと空文字が入ってしまい、

bash-3.00$ perl hoge.pl

te

st

TE

ST

12

34

56

78

となってしまう。ここで空文字を飛ばすために

$str="testTEST12345678";
foreach $e (split(/(..)/,$str)) { print $e."\n" if $e ne ""; }

としたわけだが……。後学のため、一発でいける正規表現はないか調べ中。あるいは正規表現よりスマートな方法を誰か教えてりんこ。