![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.1ベストアンサー
- 回答日時:
my $arrayref = $dbh->selectall_arrayref('select * from user_info', {Slice => +{}});
print Dumper($arrayref);
---
$VAR1 = [
{
'name' => 'Alice',
'id' => '1'
},
{
'name' => 'Bob',
'id' => '2'
}
];
こんにちは!
なんとselectall_arrayref()でハッシュの配列を受け取ることができたのですね。
selectall_arrayref()の柔軟な用法を知らずに格好悪い質問をしてしまいました。
selectall_arrayref()の第二引数に戻り値の形式を指定できるのですね!
ハッシュの配列がほしいときは{Slice => {}}とするのですね。
このとき{}ではなく+{}とすると、どうなるか試してみたのですが違いは分かりませんでした。
{}の前に+を付けるとどうなるのでしょうか???
また便利な関数Data::Dumper()を覚えました(^_^)b
No.2
- 回答日時:
> このとき{}ではなく+{}とすると、どうなるか試してみたのですが違いは分かりませんでした。
> {}の前に+を付けるとどうなるのでしょうか???
+{}と書くとハッシュリファレンスであると明示できます。
数は多くないですが、{}がハッシュリファレンスなのか、そうでないのか曖昧になることがあります。他人が書いたコードを見てビックリしないぐらいには理解したほうがよいでしょう。
use strict;
use warnings;
use Data::Dumper;
use feature 'say';
sub proto_func ($) {
say 'proto_func($)';
}
proto_func {say 'hoge'};
# Odd number of elements in anonymous hash at foo.pl line 11.
proto_func +{a => 1};
sub hashref_ambiguous { {@_} } # return {@_}
sub hashref_strict { +{@_} } # return +{@_}
my $ambiguous = hashref_ambiguous( 'a', 'b' );
my $strict = hashref_strict( 'a', 'b' );
print Dumper($ambiguous);
# $VAR1 = 2;
print Dumper($strict);
# $VAR1 = {
# 'a' => 'b'
# };
{}や+{}はselectall_arrayref()の引数専用の書き方ではなくPerl全体としての書き方だったのですね。
{}は空ハッシュ、+{}は空ハッシュへのリファレンスを意味していたのですね。
ご紹介のコードは+の有無によって違いが発生する例ですね。
このコードを解読するのもいささか時間がかかりました^^;
新しく覚えたワードはfeatureプラグマ、say関数です。
しかしながら配列の各要素はスカラー値と決まっているのでselectall_arrayref()の第二引数に書くときは+を省略して{}と書けるといったところでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) なぜデータの整合性を確認する時はハッシュ値で確認するのでしょうか?ハッシュ値は衝突する可能性があるの 5 2023/07/05 20:38
- その他(コンピューター・テクノロジー) ハッシュ値を取ったらその取ったハッシュ値はどのように保管すればよいのでしょうか?ハッシュ値のデータす 2 2023/07/02 19:40
- その他(コンピューター・テクノロジー) exFATの外付けSSDからパソコンのNTFSの内蔵ストレージにコピーした場合はコピーしたデータのハ 2 2023/08/09 19:51
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- その他(コンピューター・テクノロジー) インターネットを使わずにハッシュ値を取ることは可能なのでしょうか? 1 2023/06/27 20:27
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- その他(コンピューター・テクノロジー) ベリファイの機能がある製品やソフトが世の中には多くありますが、それらのベリファイは何でベリファイして 3 2023/06/28 19:49
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- その他(セキュリティ) デジタル署名について 4 2022/08/12 14:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字列を変数名として扱う方法
-
動的なハッシュの配列を作成したい
-
ハッシュ検索はなぜ速い
-
まったく同じファイルのハッシ...
-
短いハッシュの作り方
-
ハッシュリストって単にハッシ...
-
データベースでユーザーのパス...
-
静的ハッシュの配列のキーに対...
-
画面を強制的に再描画させる方法
-
DoEventsが必要な理由について
-
VBのReturnの使い方
-
VBAのautofilter、criteriaの配...
-
VBAでの一時停止と再開の方法
-
アクティブセルから、A列最終行...
-
エクセル関数で1〜12の数字がル...
-
Do whileでExitせず、ループの...
-
vbscriptでIE自動入力(途中で...
-
「VC++6」ウィンドウの再描画
-
CSVファイルの特定の行だけを読...
-
delphi の 標準偏差のプログラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハッシュ検索はなぜ速い
-
文字列を変数名として扱う方法
-
チェックデジットについて
-
ハッシュのハッシュを実現したい。
-
まったく同じファイルのハッシ...
-
列挙型と連想配列の違いを教え...
-
重複ファイルを削除したいので...
-
*(アスタリスク)の意味
-
短いハッシュの作り方
-
英語でのシャープとコメの呼び...
-
ハッシュマーク以降のアドレス取得
-
一意(ユニーク)かつ、ソート...
-
Perlは戻り値で、ハッシュや配...
-
ハッシュリストって単にハッシ...
-
ActivePerl がハングアップ
-
多次元配列から重複を削除
-
mapのポインタ
-
Perlのハッシュ変数のソートに...
-
Perlのサブルーチンの引数に配...
-
文字数の短いユニークなID生成
おすすめ情報