![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
PHPを毎日書いている者ですが、たまたまPerlのメールフォームをカスタマイズ
しなければならなくなりました。
use strict宣言がある場合、変数はmyまたはlocalで宣言しなければいけないようですが、
サブルーチン内に
sub form {
・・・
my ($form_value,$error_list) = @_;
・・・
print $error_list{'inquiry_type1'}
としたところ、
Global symbol "%error_list" requires explicit package name at ・・・
と、宣言が無い場合に出るというエラーが出ました。
$error_listには、inquiry_type1は入っているはずなのですが、どのような
宣言をすればよいのでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
Perlの場合、
$a (変数)
と
@a (リスト) , $a[0] (リストの0番目の要素)
と
%a (ハッシュ) , $a{'key'} (ハッシュの'key'の要素)
とは別です。
また、「ハッシュ」と「無名のハッシュ/ハッシュのリファレンス」も扱いが違います。
この部分だけでは、正しい対処はわかりません。
・呼出側で func($form_value, %error_list) のようになっている場合:
@_は「スカラーが一つとハッシュの中身」を並べたリストになり、関数内で復元させるなら
my ($form_value,%error_list) = @_;
です。
・呼出側で func($form_value, $error_list) のようになっている場合:
my ($form_value,$error_list) = @_; で正しく、
$error_list{'inquiry_type1'} が間違いです。
$error_listが示すハッシュのリファレンスの中にアクセスするには $error_list->{'inquiry_type1'}のようにします。
名前のこととリファレンスは基本事項なので覚えてください。
無事解決しました。ありがとうございました。
$error_list{'inquiry_type1'}ではなく、$error_list->{'inquiry_type'}が正しかったようです。
ハッシュやリファレンスなど、Perlに慣れていないためあやふやなまま進めていたのが原因でした。今後勉強しようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
チェックデジットについて
-
短いハッシュの作り方
-
英語でのシャープとコメの呼び...
-
C++ではハッシュはどのように書...
-
文字列を変数名として扱う方法
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
GIFアニメをループさせたくない
-
VBAのautofilter、criteriaの配...
-
VB2010でCSVファイルの読み込み
-
ListBox 複数選択 で オートフ...
-
Escキーを押すと、中断する時と...
-
範囲指定したセルを1つずつ飛...
-
Can't use string ("0") as an ...
-
perlで配列の要素が空なのを知...
-
VisualStudioにてモザイクの画...
-
多重ループの抜けだし方
-
乱数の桁数指定、または範囲指定。
-
VBのReturnの使い方
-
VBA for文が止まらない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハッシュ検索はなぜ速い
-
文字列を変数名として扱う方法
-
チェックデジットについて
-
ハッシュのハッシュを実現したい。
-
まったく同じファイルのハッシ...
-
列挙型と連想配列の違いを教え...
-
重複ファイルを削除したいので...
-
*(アスタリスク)の意味
-
短いハッシュの作り方
-
英語でのシャープとコメの呼び...
-
ハッシュマーク以降のアドレス取得
-
一意(ユニーク)かつ、ソート...
-
Perlは戻り値で、ハッシュや配...
-
ハッシュリストって単にハッシ...
-
ActivePerl がハングアップ
-
多次元配列から重複を削除
-
mapのポインタ
-
Perlのハッシュ変数のソートに...
-
Perlのサブルーチンの引数に配...
-
文字数の短いユニークなID生成
おすすめ情報