我想完全重置我的%hash所以它根本不包含键或值.我更喜欢使用单线而不是使用循环.
到目前为止,我尝试过:
%hash = 0;
%hash = undef;
Run Code Online (Sandbox Code Playgroud)
但是这些都在严格模式下抛出错误并启用了警告,所以我写了一个简单的for循环来实现同样的事情:
for (keys %hash) {
delete $hash{$_};
}
Run Code Online (Sandbox Code Playgroud)
这有效,但我真的想用一个班轮做这件事.有没有办法简单地重置我忽略的哈希?
这是我第一次以这种方式操纵哈希和数组 - 它正在运行.基本上,对于每个键,我想要记录多个值,然后以"key - > value - > value - > val ..."的形式打印出来.
我的代码如下.我很惊讶它有效,因此担心它会"误操作".这是完成此任务的正确方法,还是有更有效或更合适的方法?
while ($source =~ m/(regex)/g) { #Get all key names from source
$listkey = $1; #Set current list key to the current regex result.
$list{$listkey} = ++$i unless $list{$listkey}; #Add the key to the hash unless it already exists.
$list{$listkey} = [] unless exists $list{$listkey}; #Add an array for the hash unless the hash already exists.
while ($loopcount==0) {
if ($ifcount==0) {
$listvalue=result_of_some_function_using_list_key; #Get the first list …Run Code Online (Sandbox Code Playgroud) 首先,我知道这个问题引发了另一个问题 - 是否应该遵循最新的Web开发标准,并且它们是否仍然具有相关性?
除此之外,我专注于GUI开发,可用性等.利用XHTML,CSS,JavaScript等的前端Web开发.
我知道那里有很多大师和思想领袖,但在我的项目中,我根本没有时间跟随他们,并且跟上最新的开发标准.但是,这显然非常重要.
那么如何在保持生产力的同时让自己了解最新的Web开发标准呢?是否有任何特定的团体或组织需要对此进行监控?人们可能遵循的最佳做法?
也许我正在使用错误的关键字进行搜索,或者这是一个非常基本的问题,但我无法找到问题的答案.我无法将我的whois命令的结果写入新的外部文件.
我的代码如下.它需要$readfilename,这是一个具有IP列表的文件名,并且$writefilename是输出的目标文件.两者都是用户指定的.对于我的测试,$readfilename在三个单独的行上包含三个IP地址,因此在用户指定的输出文件中应该有三个单独的whois结果.
if ($readfilename) {
open (my $inputfile, "<", $readfilename) || die "\n Cannot open the specified file. Please double check your file name and path.\n\n";
open (my $outputfile, ">", $writefilename) || die "\n Could not create write file.\n\n";
while (<$inputfile>) {
my $iplookupresult = `whois $_ > $writefilename`;
print $outputfile $iplookupresult;
}
close $outputfile;
close $inputfile;
}
Run Code Online (Sandbox Code Playgroud)
我可以执行此脚本并最终获得一个新的外部文件,但超过一半的文件具有二进制垃圾数据(在CentOS上运行),并且只有一个(或一部分)whois查找是可读的.
我不知道我的文件中有一半是以二进制文件结尾...但我的方法必须是不正确的.有没有更好的方法来实现相同的结果?
我不确定到底发生了什么,但确实发现这URLLoader.close();是原因.
我有一个简单的应用程序,用户将信息输入文本框,然后我将该信息发送到PHP脚本并返回输出.收到输出后,您可以单击重置应用程序的新按钮.错误在于单击该按钮后执行的功能.
如果单击该按钮重置应用程序,它将重置所有变量等,但似乎我的addEventListener方法不执行.
这是重置功能:
//Reset function if the Reset button is pressed
function clearApplication(e:MouseEvent):void {
receivedData="";
data1TextBox.text="";
data2TextBox.text="";
resetButton.visible=false;
resetButton.removeEventListener(MouseEvent.CLICK, clearApplication, false);
goButton.visible=true;
goButton.addEventListener(MouseEvent.CLICK, getData, false, 0, true);
myLoader.close();
}
Run Code Online (Sandbox Code Playgroud)
执行完毕后,我的goButton工作不再有效.
如果goButton单击,则应执行以下操作:
function getData(e:MouseEvent):void {
if (data1TextBox.text!=""&&data2TextBox.text!="") {
goButton.removeEventListener(MouseEvent.CLICK, getData, false);
goButton.visible=false;
postVars = new URLVariables();
postVars.data1=data1TextBox.text;
postVars.data2=data2TextBox.text;
myRequest=new URLRequest("URL");
myRequest.method=URLRequestMethod.POST;
myRequest.data=postVars;
myLoader.addEventListener(Event.COMPLETE, onComplete, false, 0, true);
myLoader.load(myRequest);
}
}
Run Code Online (Sandbox Code Playgroud)
最后,onComplete函数:
function onComplete(e:Event):void {
receivedData=e.target.data;
outputTextBox.text=receivedData;
resetButton.visible=true;
resetButton.addEventListener(MouseEvent.CLICK, clearApplication, false, 0, true); …Run Code Online (Sandbox Code Playgroud) 我正在尝试管理用户执行命令时指定的众多参数.到目前为止,我一直试图限制我的脚本设计来管理参数作为标志,我可以使用Getopt :: Long轻松管理,如下所示:
GetOptions ("a" => \$a, "b" => \$b);
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我可以检查是否指定了a或b,然后执行相应的代码/功能.
但是,我现在有一种情况,用户可以指定两个参数变量,如下所示:
command -a black -b white
Run Code Online (Sandbox Code Playgroud)
这很好,但是我无法想出一个好方法来确定是先指定-a还是-b.因此,我不知道参数变量是在我执行时分配$ARGV[0]还是$ARGV[1]在分配之后GetOptions ("a" => \$a, "b" => \$b);.
在上面的示例中,如何判断哪个变量与哪个变量相关-a联-b?
以下代码示例的目标是读取内容$target并将所有唯一的正则表达式搜索结果分配给数组.
我已经确认我的正则表达式语句有效,所以我简化了这一点,以免专注于它.
当我执行脚本时,我得到所有正则表达式结果的列表,但是,结果不是唯一的,这使我相信我对数组或我的if (grep{$_ eq $1} @array) {检查的操作导致了问题.
#!/usr/bin/env perl
$target = "string to search";
$inc = 0;
$once = 1;
while ($target =~ m/(regex)/g) { #While a regex result is returned
if ($once) { #If $once is not equal to zero
@array[$inc] = $1; #Set the first regex result equal to @array[0]
$once = 0; #Set $once equal to zero so this is not executed more than once
} else {
if (grep{$_ …Run Code Online (Sandbox Code Playgroud) 例如,使用Perl正则表达式扫描HTML页面的内容,我想匹配所有文件扩展名,但不匹配域名中的TLD.为此,我假设所有文件扩展名必须在双引号内.
我想出了以下内容,并且它正在运行,但是,我没有找到一种方法来排除域中的TLD.这将返回"com","net"等.
m/"[^<>]+\.([0-9A-Za-z]*)"/g
Run Code Online (Sandbox Code Playgroud)
如果在由文本分隔的引号之间有多个句点,是否可以否定匹配?(即:匹配foo.bar.com但不是./或../)
编辑我$1用来在括号内返回值.
在Perl脚本中,是否有可能以某种方式有效地对Perl变量执行grep?一个等效的Perl函数同样可以接受,我只想让解决方案尽可能简单.
例如:
#!/usr/bin/perl
#!/bin/grep
$var="foobar";
$newvar="system('grep -o "foo" $var');
sprintf $newvar;
Run Code Online (Sandbox Code Playgroud)
我希望sprintf $newvar输出的地方foo.
也欢迎任何有关最佳实践的反馈.我对Perl并不是很熟悉.
这个问题可能很容易解决,但我不清楚.可能只是我做错了事.我已经研究了OOP和AS3几个小时,所以我熟悉概念但不熟悉流程.这是我整理的一个项目,以加强我一直在学习的东西.
这里的目标是从库中将预先创建的动画片段的实例加载到舞台,然后在FLA的时间帧ActionScript中执行定位功能,并在AS文件的ActionScript类中执行一个函数,以调整动画片段的大小并输出跟踪.
我有两个文件:smileface.fla smileface.as
在smileface.fla中,我有一个驻留在我的库中的MovieClip对象.它具有以下相关属性......
Name: faceInst Class: smileface Base Class: null
我有一个框架(关键帧),它包含以下ActionScript:
var faceInst:smileface = new smileface(); this.addChild(faceInst); faceInst.x = stage.stageWidth/2; faceInst.y = stage.stageHeight/2;
在我的smileface.as文件中,我有以下代码:
package {
import flash.display.MovieClip;
import flash.display.Stage;
public class smileface extends MovieClip {
public function smileFunction() {
this.width = stage.stageWidth/5;
this.height = stage.stageHeight/5;
trace("Done!");
}
}
}
我希望(没有理由这样做)在加载movieclip对象之后,它将根据规范调整大小,然后输出跟踪.
然而,相反的是,面部显示在舞台上,居中,但没有调整大小,并且根本不输出轨迹.
编辑对不起,我忘记了最重要的部分.每个键可以有多个值.向那些已经回答的人道歉.print和join将在以后用于打印多个值$key在一行.
在下面的示例代码中,假设值$keyvalue不断变化,我试图使用单行(或类似包含的内容)来测试并查看当前是否$keyvalue已存在.如果确实如此,则什么也不做.如果没有,那就推吧.这一行将驻留在while语句中,这就是为什么它需要包含在几行内.
只要没有重复值,保留顺序无关紧要.
my $key = "numbers";
my $keyvalue = 1;
my %hash = ($key => '1');
push (@{$hash{$key}}, $keyvalue) unless exists $hash{$key};
Run Code Online (Sandbox Code Playgroud)
我没有收到任何错误use strict; use warnings;,但同时这不起作用.在上面的例子中,我希望的是,由于默认值是1该$keyvalue不会推,因为它是也1.也许我已经让自己全都转过身来......
是否有调整使这个工作或任何替代品可以用来代替完成同样的事情?