- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含城市的数组。我想通过引用子例程来传递数组并打印每个城市以输出。但是,我有以下问题:
我可以在子例程中的 while 循环之前访问每个元素。但我无法访问我的 while 循环中的元素。我收到错误消息:
...在第 44 行、第 997 行 (#1) 的打印中使用未初始化的值在第 44 行、第 998 行打印使用未初始化的值 (#1)...
以下是一些代码。我已经评论了打印的内容和不打印的内容(我试图删掉我的解释不需要的代码......):
@cities;
# Assume cities is loaded successfully
&loadCities(getFileHandle('cities.txt'), $NUM_CITIES, \@cities);
&printElements(getFileHandle('names.txt'), \@cities);
sub printElements{
my $counter = 0;
my $arraySize = scalar $_[1];
# Prints fine!!!
print @{$_[1][($counter)%$arraySize];
while ((my $line = $_[0]->getline()) && $counter < 1000){
# Doesn't print. Generates the above error
print @{$_[1][($counter)%$arraySize];
$counter += 1;
}
}
我走对了吗?
最佳答案
我的第一个提示是,您应该将 use strict;
和 use warnings;
放在脚本的顶部。这通常揭示了很多事情。
这一行:print @{$_[1][($counter)%$arraySize];
没有结束 }
。您也不需要 $counter
周围的括号。
正如您提到的,获取数组长度的最佳/最清晰的方法是 my $arraySize = scalar @{$_[1]};
。
您可以查看文档 here用于引用。我会给你一个快速的概述。
你可以正常声明一个数组
my @array = (1, 2, 3);
然后你可以使用反斜杠来引用它。
my $array_ref = \@array;
如果要使用引用,请使用 @{...}
。这就像使用常规数组一样。
print @{$array_ref};
您也可以将其声明为使用方括号开头的引用。
my $array_ref = [1, 2, 3];
print @{$array_ref}; # prints 123
在 Perl 中,二维数组实际上是数组引用的数组。这是一个例子:
my @array = ( ['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'] );
print @{$array[1]}; # prints def
现在让我们尝试将数组引用传递给子例程。
my @array = ( ['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'] );
example(\@array); # pass in an array reference
sub example {
my @arr = @{$_[0]}; # use the array reference to assign a new array
print @{$arr[1]};
print @{$_[0][1]}; # using the array reference works too!
}
现在让我们把它放在一起并打印整个二维数组。
my @array = ( ['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'] );
example(\@array);
sub example {
my @arr = @{$_[0]};
for my $ref (@arr) {
print @{$ref};
}
} # prints abcdefghi
如果你想将这个例子用于你的 printElements
子例程,你可以很容易地修改它。
关于在数组中打印元素的另一个注意事项。让我们从上一个示例中提取这一行:
print @{$ref};
由于我们每次循环都调用它,我们可能想在它的末尾打印一个新行。
print @{$ref} . "\n";
这打印什么?试试看!有用吗?
这是内置子程序join派上用场。
print join(" ", @{$ref}) . "\n";
For 循环通常是遍历数组的最佳方式。我在这里的回答稍微谈到了使用 while 循环:https://stackoverflow.com/a/21950936/2534803你也可以看看这个问题:Best way to iterate through a Perl array
关于arrays - Perl 中的二维数组访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21975109/
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
PowerShell Web Access 允许您通过 Web 浏览器运行 PowerShell cmdlet。它显示了一个基于 Web 的控制台窗口。 有没有办法运行 cmdlet 而无需在控制台窗
我尝试在无需用户登录的情况下访问 Sharepoint 文件。 我可以通过以下任一方式获取访问 token 方法一: var client = new RestClient("https://logi
我目前正在尝试通过 Chrome 扩展程序访问 Google 服务。我的理解是,对于 JS 应用程序,Google 首选的身份验证机制是 OAuth。我的应用目前已成功通过 OAuth 向服务进行身份
假设我有纯抽象类 IHandler 和派生自它的类: class IHandler { public: virtual int process_input(char input) = 0; };
我有一个带有 ThymeLeaf 和 Dojo 的 Spring 应用程序,这给我带来了问题。当我从我的 HTML 文件中引用 CSS 文件时,它们在 Firebug 中显示为中止。但是,当我通过在地
这个问题已经有答案了: JavaScript property access: dot notation vs. brackets? (17 个回答) 已关闭 6 年前。 为什么这不起作用? func
我想将所有流量重定向到 https,只有 robot.txt 应该可以通过 http 访问。 是否可以为 robot.txt 文件创建异常(exception)? 我的 .htaccess 文件: R
我遇到了 LinkedIn OAuth2: "Unable to verify access token" 中描述的相同问题;但是,那里描述的解决方案并不能解决我的问题。 我能够成功请求访问 toke
问题 我有一个暴露给 *:8080 的 Docker 服务容器. 我无法通过 localhost:8080 访问容器. Chrome /curl无限期挂断。 但是如果我使用任何其他本地IP,我就可以访
我正在使用 Google 的 Oauth 2.0 来获取用户的 access_token,但我不知道如何将它与 imaplib 一起使用来访问收件箱。 最佳答案 下面是带有 oauth 2.0 的 I
我正在做 docker 入门指南:https://docs.docker.com/get-started/part3/#recap-and-cheat-sheet-optional docker-co
我正在尝试使用静态 IP 在 AKS 上创建一个 Web 应用程序,自然找到了一个带有 Nginx ingress controller in Azure's documentation 的解决方案。
这是我在名为 foo.js 的文件中的代码。 console.log('module.exports:', module.exports) console.log('module.id:', modu
我试图理解访问键。我读过https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-se
我正在使用 MGTwitterEngine"将 twitter 集成到我的应用程序中。它在 iOS 4.2 上运行良好。当我尝试从任何 iOS 5 设备访问 twitter 时,我遇到了身份验证 to
我试图理解访问键。我读过https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-se
我正在使用以下 API 列出我的 Facebook 好友。 https://graph.facebook.com/me/friends?access_token= ??? 我想知道访问 token 过
401 Unauthorized - Show headers - { "error": { "errors": [ { "domain": "global", "reas
我已经将我的 django 应用程序部署到 heroku 并使用 Amazon s3 存储桶存储静态文件,我发现从 s3 存储桶到 heroku 获取数据没有问题。但是,当我测试查看内容存储位置时,除
我是一名优秀的程序员,十分优秀!