No.1
- 回答日時:
回避できません。
strictプラグマはそのような危険なプログラミングを禁止するためのものです。
どうしてもこのような書き方をしたければstrictをなくすしかありません。
ただし抜け道はあります。
-------------------------------------------------
no strictが含まれているブロック部分では上記のようなシンボリックリファレンスが可能となるので、
{
no strict;
$protocol_name = "pppoe";
@{$protocol_name}
}
という書き方はできますがnoしたブロック外でmyで宣言した変数にはアクセスできません。
@pppoeをnoしたブロック外で定義している場合は、ourで宣言しなければならないでしょう。
-------------------------------------------------
-----でくくった部分に理解できない部分があれば、用語を検索して理解してください。
理解できないうちはこの抜け道を使うべきではありません。(実用的でもないですし)
回避できないと思っていたほうがいいです。
参考URL:http://www.att.or.jp/perl/man/perlref.1.html
No.2
- 回答日時:
できないというか、ちょっと使い方の意味が違う気がします。
@{$protocol_name}は、配列のリファレンスである$protocol_nameをデリファレンスするという意味になると思いますが、例文では、$protocol_name = "ppoe"とスカラーを入れてしまっているので、怒られています。ある意味当然で、strictどうこうという問題ではないと思いますが?
したがって、あえて例文と同じような形で書くとすれば
use strict;
my $protocol_name = [("pppoe")];
print "@{$protocol_name}\n";
ならば大丈夫です。これは、内容が"pppoe"1つだけの配列のリファレンスを$protocol_nameに入れて、@{$protocol_name}でデリファレンスしています。
No.3ベストアンサー
- 回答日時:
@pppoe という配列を生成する段階でハッシュ等扱いやすい変数に格納しておくのが定石だと思います。
・ハッシュにハードリファレンスで格納する方法
$protocol{pppoe} = \@pppoe; # 代入
@{$protocol{$protocol_name}} # 参照
# @pppoeとしましたがもちろん無名配列でかまいません。
・分岐させる方法
if($protocol_name eq "pppoe"){
... = @pppoe;
}elsif ...
・シンボリックリファレンスだけ許可させる方法
no strict 'refs';
・%main::から引く方法
@{$main::{$protocol_name}}
この回答へのお礼
お礼日時:2006/02/03 11:26
ありがとうございました。
・%main::から引く方法
@{$main::{$protocol_name}}
でうまくいきました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- 英語 この英語の問題が分かりません 3 2023/04/22 20:19
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INDIRECT 横に再度抽出したい
-
テキストファイルで提出とは?
-
C言語の問題について
-
[perl] perlで書き込み中に、PC...
-
perlで2次元配列をサブルーチ...
-
Wallpaper Engineでおすすめの...
-
openした後、closeしないでプロ...
-
awk ファイル出力
-
Perl 掲示板 並び替えについて
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
Perlで時間の計算
-
perlについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語について。
-
高速に文字列の比較
-
VB6の公式リファレンスはありま...
-
連番ごとに印をつける
-
HTML::Templateのループと配列...
-
双方向リスト(?)
-
HTML::TemplateのTMPL_LOOPにつ...
-
プログラミングについて。 1つ...
-
画面を強制的に再描画させる方法
-
VBのReturnの使い方
-
VBAでの一時停止と再開の方法
-
どなたかこのプログラミングを...
-
VBA for i=1 to lastrow
-
UWSCの終了の仕方
-
DoEventsが必要な理由について
-
エクセルの当番表を作っていま...
-
VBAで3秒だけ時間を止めたい
-
ハッシュ検索はなぜ速い
-
GIFアニメをループさせたくない
-
Escキーを押すと、中断する時と...
おすすめ情報