每个优秀的Perl开发人员应该能够回答的问题

时间:2010-01-22 19:02:42

标签: perl

受到original thread以及即将到来的克隆的启发,这是Perl社区的一个。

优秀的Perl程序员应该能够回答什么问题?

22 个答案:

答案 0 :(得分:15)

为什么use strict有帮助?

答案 1 :(得分:12)

我的bellweather问题是What's the difference between a list and an array?

我也倾向于要求人们向我展示尽可能多的方式来定义范围。人们几乎总是忘记了一个人,而大多数人认为的另一个人提供范围但却没有。

答案 2 :(得分:11)

之间有什么区别
if ($foo) { ... }

if (defined $foo) { ... }

什么时候应该使用另一个?

答案 3 :(得分:5)

<强>问题

  • 什么是参考?
  • Perl如何实现面向对象?
  • Perl的面向对象与C#和Java等其他语言有何不同?
  • 核心Perl中的传统面向对象已被很大程度上取代了?
    • 为什么?
  • 包和模块有什么区别?
  • 5.10中实现了哪些功能?
  • 什么是Schwartzian变换?
  • 解释这些代码行与变量值之间的区别。

    my $a = (4, 5, 6);
    my @a = (4, 5, 6);
    my $b = 4, 5, 6;
    my $c = @a;
    
  • Perl最大的优势是什么?

  • Perl最大的弱点是什么?
  • 列出“现代Perl”运动的几个标志。
  • 绑定操作符有什么作用?
  • 触发器操作员做什么?
  • for和foreach有什么区别?
  • 是什么让Perl难以解析?
  • 什么是原型?
  • 什么是AUTOLOAD?
  • Perl座右铭是什么?
    • 为什么这是一个问题?
  • use strict;做什么?为什么有用?
  • 以下代码块有什么作用?

    print (3 + 4) * 2;
    

<强>测试

  • 使用grep实施map
  • 实施并使用调度表。
  • 给定一个文本块,将该块中的单词替换为将该单词作为参数的函数的返回值。
  • 实施一个模块,包括与perldoc兼容的文档。
  • 浏览文件。
  • 绘制一张表格,说明Perl的真实性概念。

答案 4 :(得分:4)

  • 什么是列表上下文和标量上下文?
  • my $x = ...my($x) = ...之间的区别是什么?
  • my($x,undef,$z) = ...做什么?
  • 为什么my(@a,@b) = (@list1, @list2)可能是个错误?
  • 用户定义的子如何知道它是在列表还是标量上下文中调用?给出一个示例,说明同一个sub在一个上下文或另一个上下文中返回不同的值是否有意义。

答案 5 :(得分:4)

/a(.*)b//a(.*?)b/之间的区别是什么?

答案 6 :(得分:4)

这段代码出了什么问题?

my @array = qw/a b c d e f g h/;

for ( @array ) {
    my $val = shift @array;
    print $val, "\n";
}

答案 7 :(得分:4)

  • myour之间的区别是什么?
  • mylocal之间的区别是什么?
  • 对于上述情况,何时使用一个而不适合?

答案 8 :(得分:3)

my $a = 1;

if($a) {
    my $a = 2;
}

print $a;

最后$ a的价值是多少?

答案 9 :(得分:3)

将变量用作变量名称有什么问题?

学习指南: Part 1Part 2Part 3

答案 10 :(得分:3)

我认为brian d foy的方法是一种巧妙的策略来测试语言和编程工艺的知识,理解和偏袒:What are five things you hate about your favorite language?。如果他们不能说出5,他们可能对语言不太满意,或者对其他方法完全无能为力。

他将此应用于试图推动语言的人:我会扩展它并说它在这里适用。我希望每个优秀的Perl程序员能够为他们不喜欢的五件事命名。并且,我希望这五件事具有一定程度的优点。

答案 11 :(得分:2)

编写构建中等复杂数据结构的代码,比如数组哈希数组。你会如何访问特定的叶子?你将如何遍历整个结构?

答案 12 :(得分:2)

几个月前, Modern Perl 的色彩作者 - 写了一篇类似的好文章“如何识别一个好的Perl程序员”,其中包含了每个优秀Perl程序员的问题列表应该能够有效地回答。

下面给出了一些好问题

  
      
  1. 使用$items[$index]@items[$index]访问数组元素有什么区别?

  2.   
  3. ==eq之间有什么区别?

  4.   
  5. 如何从Perl 5模块加载和导入符号?

  6.   
  7. 在来电方面,return;return undef;之间有什么区别?

  8.   
  9. 使用forwhile阅读文件有什么区别?

  10.   

有关完整的详细信息,请阅读How to Identify a Good Perl Programmer

答案 13 :(得分:2)

我最喜欢的问题。缺少以下代码:

open(my $fh, "<", "file.txt");
while (<$fh>) {
    print $_;
}
close($fh);

这个问题应该在perl中讨论关于错误处理的讨论。它也可以被其他语言采用。

答案 14 :(得分:2)

对于以下每个问题,如何使用哈希解决它?

  • 计算集关系,例如,并集,交集,互斥。
  • 查找列表的唯一元素。
  • 写一个调度表。

答案 15 :(得分:1)

什么是词汇封闭?闭包什么时候有用? (请,没有反创造者!)

答案 16 :(得分:1)

$foo->{bar}[$baz]($quux)如何评估?

答案 17 :(得分:1)

列表上下文和标量上下文之间有什么区别。你如何访问每个?哈希上下文有这样的东西吗?也许一点点?

答案 18 :(得分:1)

如何在不使用临时变量的情况下交换两个变量的值?

答案 19 :(得分:0)

  • 这种单线印刷的原因是什么:

    perl -pe '}{$_ = $.' file
    

    answer:文件中的行数,类似于wc -l

  • 此代码有什么问题:

    my $i;
    print ++$i + ++$i;
    

    回答:在同一个语句中修改变量两次会导致未定义的行为。

  • 简单的一个:if块运行:

    my @arr = undef;
    if (@arr) { ... }
    

    回答:是

  • 您如何自己编写reverse() perl内置代码?您可以使用其他perl函数。

    回答:很多方法。简短的一个:sub my_reverse {sort {1} @_})

答案 20 :(得分:0)

我也可能正在挖掘正则表达式,因为我希望每个优秀的Perl程序员都能掌握正则表达式(但不仅如此)。一些可能的问题:

  • 什么是lookahead和lookbehind assertion / modifierq?
  • 如何检查正则表达式的两个单独部分是否相同?
  • 贪婪是什么意思?
  • 什么是Posix角色类?
  • \ b匹配什么?
  • \ c修饰符有什么用?
  • 你如何预编译一个正则表达式?

答案 21 :(得分:-1)

初始化空字符串的正确方法是什么?

 my $str = q{};

 my $str = "";

 my $str = '';