我正在写一个简单的程序,用大写的一个句子中的每个单词。它会得到一个多行输入。然后我循环输入行,分割行中的每个单词,将其大写,然后再次加入行。这工作正常,如果输入的是一个句子,但只要我输入两行我的程序崩溃(如果我等待太久我的电脑死机。)为什么我的程序在一行输入后崩溃?
这里是我的代码
@input = <STDIN>;
foreach(@input)
{
#reset @words
@words=();
#readability
$lines =$_;
#split sentence
@words = split(/ /, $lines);
#capitalize each word
foreach(@words){
$words[$k] = ucfirst;
$k++;
}
#join sentences again
$lines = join(' ', @words);
#create output line
$output[$i]=$lines;
$i++;
}
#print the result
print "\nResult:\n";
foreach(@output){
print $output[$j],"\n";
$j++;
}
可能有人请告诉我它为什么崩溃?
回想一下'$ k'在第二行开始......但严重的是,通过声明'my'所有的变量,并强迫自己这样做是通过'使用strict'将远比组装机一样好“复位@话”。 – amon
使用s /(\ W +)/ \ u $ 1/g'可以简单得多。同上['为什么使用严格和警告?'](http://stackoverflow.com/questions/8023959/why-use-strict-and-warnings) – Miller
谢谢,我是初学者,我很抱歉没有了解严格和警告。我的代码现在可用,谢谢。我不被允许使用正则表达式,我不得不使用ucfirst。 –