{"id":11901,"date":"2022-09-28T23:20:27","date_gmt":"2022-09-28T17:50:27","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/"},"modified":"2022-09-28T23:20:27","modified_gmt":"2022-09-28T17:50:27","slug":"solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/","title":{"rendered":"[Solved] How can I read in a variable\/value which is a runtime parameter that is inside a constant list of hashes?"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-35918907\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"35918907\" data-parentid=\"35918285\" data-score=\"3\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>As has been explained, your <code>ERROR_SW<\/code> is a <em>constant<\/em>, and may not contain run-time variables<\/p>\n<p>If you intended <code>$switch_ip<\/code> and <code>$timeout<\/code> to also be constant values then, because <code>use constant<\/code> is evaluated at compile time, you would also have to declare and define these two variables beforehand. Like this<\/p>\n<pre><code>use strict;\nuse warnings 'all';\n\nmy ($switch_ip, $timeout);\n\nBEGIN {\n    ($switch_ip, $timeout) = qw\/ 127.0.0.1 30 \/;\n}\n\nuse constant {\n    ERROR_SW =&gt; {\n        errorCode =&gt; 727,\n        message   =&gt; \"Not able to ping switch $switch_ip in $timeout seconds\",\n        fatal     =&gt; 1,\n        web_page  =&gt; 'http:\/\/www.errorsolution.com\/727',\n    }\n};\n\nsub error_post {\n    my ($error) = @_;\n    print( $error-&gt;{message} );\n}\n\nerror_post(ERROR_SW);\n<\/code><\/pre>\n<p><\/p>\n<hr>\n<p>However I think you meant the message to vary with the values of these variables, which is impossible with a constant. The usual way is to define an error message to have constant error message string that contain <code>printf<\/code> field specifiers. Like this, for instance<\/p>\n<pre><code>use strict;\nuse warnings 'all';\n\nuse constant {\n    ERROR_SW =&gt; {\n        errorCode =&gt; 727,\n        message   =&gt; \"Not able to ping switch %s in %s seconds\",\n        fatal     =&gt; 1,\n        web_page  =&gt; 'http:\/\/www.errorsolution.com\/727',\n    }\n};\n\nmy ( $switch_ip, $timeout ) = qw\/ 127.0.0.1 30 \/;\n\nsub error_post {\n    my ($error) = @_;\n    printf $error-&gt;{message}, $switch_ip, $timeout;\n}\n\nerror_post(ERROR_SW);\n<\/code><\/pre>\n<h3>output<\/h3>\n<pre class=\"lang-none prettyprint-override\"><code>Not able to ping switch 127.0.0.1 in 30 seconds\n<\/code><\/pre>\n<p><\/p>\n<hr>\n<p>An alternative way that <strong>choroba<\/strong> hinted at in his comment is to make the value of the <code>message<\/code> field a <em>subroutine reference<\/em>. That can be executed at run time to incorporate the current values of the parameters. That solution looks like this<\/p>\n<p>Note the additional parentheses at the end of <code>$error-&gt;{message}()<\/code> to call the reference to be <em>called<\/em> instead of <em>evaluated<\/em><\/p>\n<pre><code>use strict;\nuse warnings 'all';\n\nmy ($switch_ip, $timeout);\n\nuse constant {\n    ERROR_SW =&gt; {\n        errorCode =&gt; 727,\n        message   =&gt; message   =&gt; sub { \"Not able to ping switch $switch_ip in $timeout seconds\"},\n        fatal     =&gt; 1,\n        web_page  =&gt; 'http:\/\/www.errorsolution.com\/727',\n    }\n};\n\n($switch_ip, $timeout) = qw\/ 192.168.0.1 99 \/;\n\nsub error_post {\n    my ($error) = @_;\n    print( $error-&gt;{message}() );\n}\n\nerror_post(ERROR_SW);\n<\/code><\/pre>\n<h3>output<\/h3>\n<pre class=\"lang-none prettyprint-override\"><code>Not able to ping switch 192.168.0.1 in 99 seconds\n<\/code><\/pre>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">3<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved How can I read in a variable\/value which is a runtime parameter that is inside a constant list of hashes? <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] As has been explained, your ERROR_SW is a constant, and may not contain run-time variables If you intended $switch_ip and $timeout to also be constant values then, because use constant is evaluated at compile time, you would also have to declare and define these two variables beforehand. Like this use strict; use warnings &#8216;all&#8217;; &#8230; <a title=\"[Solved] How can I read in a variable\/value which is a runtime parameter that is inside a constant list of hashes?\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/\" aria-label=\"More on [Solved] How can I read in a variable\/value which is a runtime parameter that is inside a constant list of hashes?\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[1635,412,3246,442,3245],"class_list":["post-11901","post","type-post","status-publish","format-standard","hentry","category-solved","tag-constants","tag-error-handling","tag-hash-of-hashes","tag-perl","tag-subroutine"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] How can I read in a variable\/value which is a runtime parameter that is inside a constant list of hashes? - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] How can I read in a variable\/value which is a runtime parameter that is inside a constant list of hashes? - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] As has been explained, your ERROR_SW is a constant, and may not contain run-time variables If you intended $switch_ip and $timeout to also be constant values then, because use constant is evaluated at compile time, you would also have to declare and define these two variables beforehand. Like this use strict; use warnings &#039;all&#039;; ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-28T17:50:27+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] How can I read in a variable\/value which is a runtime parameter that is inside a constant list of hashes?\",\"datePublished\":\"2022-09-28T17:50:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/\"},\"wordCount\":195,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"constants\",\"error-handling\",\"hash-of-hashes\",\"perl\",\"subroutine\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/\",\"name\":\"[Solved] How can I read in a variable\/value which is a runtime parameter that is inside a constant list of hashes? - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-09-28T17:50:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] How can I read in a variable\/value which is a runtime parameter that is inside a constant list of hashes?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] How can I read in a variable\/value which is a runtime parameter that is inside a constant list of hashes? - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] How can I read in a variable\/value which is a runtime parameter that is inside a constant list of hashes? - JassWeb","og_description":"[ad_1] As has been explained, your ERROR_SW is a constant, and may not contain run-time variables If you intended $switch_ip and $timeout to also be constant values then, because use constant is evaluated at compile time, you would also have to declare and define these two variables beforehand. Like this use strict; use warnings 'all'; ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/","og_site_name":"JassWeb","article_published_time":"2022-09-28T17:50:27+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] How can I read in a variable\/value which is a runtime parameter that is inside a constant list of hashes?","datePublished":"2022-09-28T17:50:27+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/"},"wordCount":195,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["constants","error-handling","hash-of-hashes","perl","subroutine"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/","url":"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/","name":"[Solved] How can I read in a variable\/value which is a runtime parameter that is inside a constant list of hashes? - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-09-28T17:50:27+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-how-can-i-read-in-a-variable-value-which-is-a-runtime-parameter-that-is-inside-a-constant-list-of-hashes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] How can I read in a variable\/value which is a runtime parameter that is inside a constant list of hashes?"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/11901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=11901"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/11901\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=11901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=11901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=11901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}