Arhn - архитектура программирования

Я хочу получить доступ к частной переменной подпрограммы вне ее

Я пытаюсь получить доступ к частной переменной подпрограммы вне подпрограммы. Как это сделать?

Я попробовал код, который я разместил с вопросом, но он печатает значения глобальной переменной «имя», и условие состоит в том, что имя глобальной переменной и частной переменной должно быть одинаковым.

 print("Please Enter Your First Name:\n");
 # declaration of global variable 
 $name = <>;
 YourFirstName_StudentID($name);
 sub YourFirstName_StudentID {
     print("My name is $name\n");
     print("Enter Your Student ID\n");
     my $name = <>;
 }
 #printing outside subroutine 
 print("Student Id is: $name");

Вывод в настоящее время: Пожалуйста, введите ваше имя: Меня зовут xyz

Введите свой студенческий идентификатор Студенческий идентификатор: xyz

Но я хочу, чтобы это было так Пожалуйста, введите ваше имя: Меня зовут xyz

Введите свой студенческий идентификатор Студенческий идентификатор: 1234567

15.07.2019

  • Почему бы не вернуть переменную из sub? Затем вы можете сохранить его в виде такой переменной: my $id = YourFirstName_StudentID($name) 15.07.2019
  • всегда используйте use strict; use warnings;, тогда вы бы увидели, что ваша 3-я строка $name = <>; неверна. должно быть my $name = <> 15.07.2019
  • БЛАГОДАРЯ ТОННУ! Я ЭТО СДЕЛАЛ 15.07.2019

Ответы:


1

Вот пример, здесь нам не нужно использовать глобальные переменные. Лучше использовать лексические переменные:

use strict;
use warnings;

{   # <--- Make a scope so lexical variables do not leak out into
    #       subs declared later in the file..
    print("Please Enter Your First Name:\n");
    chomp (my $name = <>);
    my $id = YourFirstName_StudentID($name);
    print("Student Id is: $id\n");
}

sub YourFirstName_StudentID {
    #print("My name is $name\n");
    print("Enter Your Student ID\n");
    chomp( my $id = <>);
    return $id;  # <--- return local variable to caller
}
15.07.2019
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..