2016-02-20 82 views
-2

我試圖在屏幕上的特定位置打印,它的工作原理和格式良好,當我硬編碼yaxis的值,但它不起作用時,我通過$yaxis作爲參數printf。相反,它僅顯示第一個單詞,如圖所示。任何想法爲什麼?我該如何解決這個問題?如何用printf格式化perl

#Working: 
my $var= "Hello, this is test output"; 

printf ("%20s\n", $var); 

#output:   
#Hello, this is test output 

#not working:  
my $yaxis= "20"; 
printf ("%${yaxis}s\n", $var); 

#Output: 
#      Hello 
+0

'%20s'意味着最小寬度爲20.由於'長度$ var> = 20',它不會有任何影響。我複製粘貼您的代碼,不能僅複製第一個字的打印。 – a3f

+1

無法重現。它工作正常。 – texasbruce

回答

2

我無法重現您的問題。

use strict; 
use warnings; 

my $var= "Hello, this is test output"; 
printf ("%20s\n", $var); 

my $yaxis= 20; 
printf ("%${yaxis}s\n", $var); 

輸出:

Hello, this is test output 
Hello, this is test output 
1

如果你是想要做的是使用一個變量來縮進字符串輸出試試這個小的修改:

my $var= "Hello, this is test output"; 
printf ("%20s\n", $var); 
my $indent = 20; 
printf ("%${indent}s%s\n", "", $var); 

這將輸出:

 
Hello, this is test output 
        Hello, this is test output