Home php c# sql c c++ javascript python java go android git linux asp.net django .net node.js ios xcode cocoa iphone mysql tomcat mongodb bash objective-c scala visual-studio apache elasticsearch jar eclipse jquery ruby-on-rails ruby rubygems android-studio spring lua sqlite emacs ubuntu perl docker swift amazon-web-services svn html ajax xml java-ee maven intellij-idea rvm macos unix css ipad postgresql css3 json windows-server vue.js typescript oracle hibernate internet-explorer github tensorflow laravel symfony redis html5 google-app-engine nginx firefox sqlalchemy lucene erlang flask vim solr webview facebook zend-framework virtualenv nosql ide twitter safari flutter bundle phonegap centos Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 31

0
votes
answers
7 views
+10

重新排列PDF文件中的數據

-2

我正在使用Perl來生成帶有 PDF::API2模塊的PDF文件。重新排列PDF文件中的數據

我很難以所需的格式將數據寫入文件。

目前,這是它如何出現在PDF文件中。

Currently looks like this in PDF

這裏是我的腳本

my %data = (
    '1' => { 
     'SEQUENCE' => '1', 
     'NAME'  => 'John', 
     'ADDR1' => 'Road 1', 
     'GRADE' => '5' 
    }, 
    '2' => { 
     'SEQUENCE' => '2', 
     'NAME'  => 'Smith', 
     'ADDR1' => 'Road 2', 
     'GRADE' => '6' 
    } 
); 

... 
... 

my @rows = qw(NAME ADDR1 GRADE); 

for my $id (sort keys %data){ 
    push @tbl, [ @{$data{$id}}{@rows} ]; 
    ($name, $addr, $grade) = ($data{$id}{'NAME'}, $data{$id}{'ADDR1'}, $data{$id}{'GRADE'}); 
} 

... 
... 

my $pdftable = new PDF::Table; 
$pdftable->table(
    $pdf, 
    $page, 
    @tbl, 
    x => 50, 
    w => 400, 
    start_y => 630, 
    start_h => 630, 
    next_y => 630, 
    next_h => 630, 
    padding => 5, 
    border => 1, 
    padding_right => 10, 
); 
$pdf->saveas(); 

但我希望它出現這樣的:

It should be formatted like this

我知道我必須做出修改@tbl數據,但是如何?

沙发
0
-1

PDF::Tabletable函數採用一個「陣列或多個陣列」作爲它的第三個參數。您目前有它strucutred這樣的:

my @tbl = ([$name,$addr,$grade], [...]) 

每個嵌套數組(什麼是[]括號內)是表的新行,和元素數組是行的單元格。因此,相反,你想讓它的結構:

my @tbl = (['NAME',$name], ['ADDR1',$addr], ['GRADE',$grade], [...]) 

要使用您的%data結構,它構造:

for my $id (sort keys %data) { 
    push @tbl, [$_, $data{$id}->{$_}] for qw/NAME ADDR1 GRADE/; 
    push @tbl, [qw/- -/]; # to add a blank row as a separator 
} 
+0

謝謝@beasy。 如何打印在不同的表中的數據,而在同一個表中顯示它與分離了 - - 。 – vinodk89

+0

在每個循環中創建一個新的「PDF :: Table」 – beasy

0
votes
answers
7 views
+10

探索和分析Hyperledger Blockchain

0

我學習的Hyperledger面料Blockchain,我想了解是否以及如何有可能探索分析Hyperledger Blockchain網絡內的數據。探索和分析Hyperledger Blockchain

是否有一種非交互式方式來分析本地區塊鏈的所有交易?甚至要求分析給其他人?正如以太坊允許我們做的那樣,這將非常棒,可以探索分類帳及其交易,然後專注於其中的某些具體內容。

在此先感謝你們!

沙发
0
0

取決於您的使用案例。在Hyperledger Composer中,您有一個Historian註冊表(所有爲業務網絡記錄的交易)。您可以有多個業務網絡進行查詢(每個BN都是分類賬中的一個視圖,因爲您已經建立了業務網絡和各方之間的智能合約邏輯等)。您可以使用查詢,REST API和過濾器來進行分析。你也可以有一個'監管者'類型的參與者,他可以看到分類賬上業務網絡中發生的所有事情。在Hyperledger Fabric中,您可以使用路由組合直接查詢Fabric區塊鏈:您擁有Node js REST API https://github.com/hyperledger/fabric-sdk-rest(這些工作正在進行,因爲它說明了),或者您可以使用Fabric SDK - >https://fabric-sdk-node.github.io/

0
votes
answers
7 views
+10

如何將文本放在HTML中的同一行上?

0

在學校我的地理課,我們在不同的國家和其中的一個選項進行演示是一個網站。我知道基本的html,但不是很多關於它的設計和顯示方面。現在,我在許多網站上看到了在同一行上獲取文本的許多麻煩。我的代碼目前看起來像這樣:如何將文本放在HTML中的同一行上?

<!DOCTYPE html> 
    <html> 
     <head> 
      <title>Swedish Political Geography</title> 
     </head> 
     <body> 
     <font face="verdana" size=「10」>Swedish Political Geography</font> 
     <ul class="navigation"> 
      <ul><font face="verdana" size=「10」>Borders</font></ul> 
      <ul><font face="verdana" size=「10」>Government</font></ul> 
     </ul> 
    </body> 
</html> 

我也一直有麻煩鏈接其他文件到此頁面。如果你能幫上忙,那將不勝感激。這是我一直在試圖爲代碼:

<a href="borders.html">Borders</a> 

我要指出,我一直在使用本地主機服務器來測試我的代碼,這是我怎麼會最終提出我的項目。

編輯:爲了澄清,我想瑞典政治地理學,邊框和政府都將在同一行。

+0

對於啓動它必須是BordersBorders Radu

沙发
0
0

你需要CSS的一點點這種解決方案。我會從那開始。

如果您有目錄中的所有HTML文件,繼續前進,創建一個名爲index.css或任何你喜歡一個CSS文件,只要擴展名是CSS。裏面每個.html文件的<head></head>把這個鏈接(改變你的CSS文件的名稱,如果你沒有使用index.css):

<link rel="stylesheet" type="text/css" href="index.css"> 

關於你的HTML中,<ul></ul>元素真正的意思包含列表與每個項目被定義爲<li></li>項目,即使只有一個項目。知道了,它應該看起來更像這個有點:

<font face="verdana" size=「10」>Swedish Political Geography</font> 
<ul class="navigation"> 
    <li><font face="verdana" size=「10」>Borders</font></li> 
    <li><font face="verdana" size=「10」>Government</font></li> 
</ul> 

<ul><li>元素是塊級元素,這意味着它們會佔用的可用寬度的100%。我們希望將這些元素更改爲inline-block元素,這些元素將它們與文本內聯對齊,但仍然使您能夠將它們視爲塊級元素。

對於這一點,這個下降到你的CSS文件:

ul { 
    display: inline-block; 
    margin: 0; 
    padding: 0; 
} 

...併爲<li>

li { 
    display: inline-block; 
} 

應該很接近了,但你會發現從子彈名單仍然懸而未決。讓我們去掉那些:

ul { 
    display: inline-block; 
    list-style-type: none; 
    margin: 0; 
    padding: 0; 
} 

添加list-style-type: none;告訴<li>不顯示任何一種裝飾功能。

你現在應該有一個連續的文本行!

實施例:

<font face="verdana" size=「10」>Swedish Political Geography</font> 
 
<ul class="navigation"> 
 
    <li><font face="verdana" size=「10」>Borders</font></li> 
 
    <li><font face="verdana" size=「10」>Government</font></li> 
 
</ul>

板凳
0
1

UL - 是一個元件,就需要把它轉化爲直列元件

顯示:內聯;

在樣式就像這樣(或者你的CSS文件中):

<!DOCTYPE html> 
    <html> 
     <head> 
      <title>Swedish Political Geography</title> 
      <style> 
       ul.navigation { 
       margin: 0; 
       padding: 4px; 
       } 
       ul.navigation li { 
       display: inline; 
       margin-right: 5px; 
       } 
      </style> 
     </head> 
     <body> 
     <font face="verdana" size=「10」>Swedish Political Geography</font> 
     <ul class="navigation"> 
      <li><font face="verdana" size=「10」>Borders</font></li> 
      <li><font face="verdana" size=「10」>Government</font></li> 
     </ul> 
    </body> 
</html> 
+0

想所有要在同一行 - 添加'顯示:內聯;''進ul.navigation block' – jlemon

0
votes
answers
6 views
+10

更新現有資產 - Hyperledger作曲家

0

我試圖創建作曲家簡單hyperledger chaincode,需要一個貸款數目,如果它存在,否則更新相關的資產創建一個新的資產。更新現有資產 - Hyperledger作曲家

我的模型文件看起來像這樣:

asset Loan identified by loanNum{ 
    o String loanNum 
    o Double balance 
} 

transaction createTransaction { 
    o String loanNum 
    o Double transAmount 
} 

我的劇本是這樣的:

function createTransaction(tx) { 
    var NS = 'org.acme.ra'; 
    var factory = getFactory(); 
    var loanToUpdate 

//returns all assets 
    return getAssetRegistry(NS + '.Loan') 
     .then(function(assetRegistry){ 
     return assetRegistry.exists(tx.loanNum); 
     }) 
     .then(function(exists){ 
      if (exists) { 
        return getAssetRegistry(NS + '.Loan')       
         .then(function(assetRegistry2){        
          loanToUpdate = assetRegistry2.get(tx.loanNum) 
          loanToUpdate.balance = tx.transAmount; 
          return assetRegistry2 
         }) 
         .then(function(updateAssetRegistry){ 
          return updateAssetRegistry.update(loanToUpdate)//broken right here 
        }) 
      } 
      else { 
        return getAssetRegistry(NS + '.Loan') 
         .then(function(assetRegistry2){ 
         var newLoan =factory.newResource(NS,'Loan',tx.loanNum); 
          newLoan.balance = tx.transAmount;       
          return assetRegistry2.add(newLoan); 
         })        
      } 
     })  

}

腳本摘要:

  1. 兩個值提供給腳本,貸款編號和交易0金額爲。
  2. 腳本然後返回資產註冊,如果貸款數量已經存在返回 適當布爾。
  3. 如果(在資產註冊表中存在貸款犯規)假,新的資產將利用從交易貸款和餘額創建。
  4. 如果爲True,則返回的資產註冊表,然後我用不用彷徨功能,並設置結果等於在腳本的開始創建的loanToUpdate變量。然後,我使用資產註冊表上的.update(loanToUpdate)函數來更新現有資產。

當布爾是假的腳本正常工作,並創建一個新的資產,但是當布爾是真實的,交易中包含已經存在我得到的錯誤貸款數量「錯誤:預期資源或概念」

編輯

現在,我得到更多的經驗,這一點,我認爲這是可以做到更容易與內置的關係,但低於生病後我更新的功能代碼。

更新的代碼與修復:

function createTransaction(tx) { 
    var NS = 'org.acme.ra'; 
    var factory = getFactory(); 
    var loanToUpdate 

//returns all assets 
    return getAssetRegistry(NS + '.Loan') 
     .then(function(assetRegistry){ 
     return assetRegistry.exists(tx.loanNum); 
     }) 
     .then(function(exists){ 
     if (exists) { 
       return getAssetRegistry(NS + '.Loan')      
        .then(function(assetRegistry2){        
        return assetRegistry2.get(tx.loanNum); 
       }) 
       .then(function(updateloan){ 
         loanToUpdate = updateloan      
         loanToUpdate.balance = tx.transAmount; 
         return getAssetRegistry(NS + '.Loan') 

       }) 
       .then(function(assetRegistry3){ 
         return assetRegistry3.update(loanToUpdate); 
       }) 
     } 
     else { 
       return getAssetRegistry(NS + '.Loan') 
        .then(function(assetRegistry2){ 

         var newLoan = factory.newResource(NS,'Loan',tx.loanNum);        
         newLoan.balance = tx.transAmount;       
         return assetRegistry2.add(newLoan); 
        })        
     } 
    })  

}

沙发
0
0

獲得的資產註冊表返回一個承諾,所以行 loanToUpdate = assetRegistry2.get(tx.loanNum) 需要在承諾鏈的一部分,所以你需要一個.then塊來處理返回的值,然後才能更新它。

0
votes
answers
6 views
+10

構造函數指向perl6中的類

4

我想用Perl 6編寫一些類來測試Perl 6類和方法。構造函數指向perl6中的類

下面是代碼:

class human1 { 
    method fn1() { 
     print "#from human1.fn1
"; 
    } 
} 

class human2 { 
    method fn1() { 
      print "#from human2.fn1
"; 
    } 
} 

my $a = human1.new(); 
my $b = human2.new(); 

$a.fn1(); 
$b.fn1(); 

print "now trying more complex stuff
"; 

my $hum1_const = &human1.new; 
my $hum2_const = &human2.new; 

my $c = $hum2_const(); 
$c.fn1(); 

基本上我希望能夠爲使用的human1構造函數或human2構造,能夠動態地建立$c對象。但我發現了以下錯誤:

Error while compiling /usr/bhaskars/code/perl/./a.pl6 
Illegally post-declared types: 
    human1 used at line 23 
    human2 used at line 24 

如何創建$c使用函數指針來選擇我使用的構造函數?

+0

嘗試在聲明'$ hum2_const'時刪除&符:'my $ hum2_const = human2。new;'在'$ hum2_const'前加一個&符號,並在定義'$ c'時刪除括號:'my $ c =&$ hum2_const;' –

沙发
0
3

我認爲這是一個LTA錯誤的情況。我所理解的你想實現的是一個lambda,它會爲你創建一個新的對象human1human2。你這樣做的方式是不正確的,它造成的錯誤令人困惑。

my $hum1_const = -> { human1.new }; 
my $hum2_const = -> { human2.new }; 

將是這樣做的正確方法。雖然,我會認爲這有點混淆。由於human1human2已經常數,你可以將它們分配給一個變量,然後只需撥打該new

my $the_human = $condition ?? human1 !! human2; 
my $c = $the_human.new; 
$c.fn1; 

這是否有意義?

+0

yes。這工作。非常感謝! – BhaskarS

板凳
0
3

要獲得對.new的「引用」,您必須使用元對象協議。
.^lookup.^find_method

my $hum1-create = human1.^find_method('new'); 

這仍然不是你看上去很什麼,因爲方法需要一個類的對象或實例,作爲他們的第一個參數。

my $c = $hum1-create(human1); 

所以你可能想要咖啡類作爲該方法的第一個參數。

my $hum1-create = human1.^find_method('new').assuming(human1); 

my $c = $hum1-create(); 

注意.assuming在這種情況下,基本上做同樣的事情作爲

-> |capture { human1.^find_method('new').(human1, |capture) } 

所以,你可以這樣寫:

my $hum1-create = -> |capture { human1.new(|capture) } 

或者,如果你是永遠不會放棄它是一個參數

my $hum1-create = -> { human1.new } 

您也可以將其存儲在& sigiled變量,所以你可以使用它,就好像它是一個正常的子程序。

my &hum1-create = human1.^find_method('new').assuming(human1); 

my $c = hum1-create; 
0
votes
answers
6 views
+10

試圖從另一個子文件夾引用1個子文件夾

0

我非常沮喪,呃,我原以爲這很簡單...也許我錯了。試圖從另一個子文件夾引用1個子文件夾

我有一個父文件夾[父],在父文件夾我有: 的index.html [childCSS] [childPAGES] [childJS] [圖像] 的index.html使一個鏈接到[childPAGES] references.html (references.html在childPAGES文件夾中找到) references.html然後鏈接到在[childCSS]中找到的refCss.css refCss.css調用[images] background.gif的背景圖像。 但他們似乎無法找到對方。 我已經確定,CSS的路由不加載(我做過background-color = #somefunkypurple,它沒有畫出紫色)...所以它沒有讀取CSS文件。問題是...爲什麼...

所以HTML是這樣的:

index.html 
<head><link rel="stylesheet" type="text/css" src="./childCss/stylesheet.css"/></head> 
further down in code 
<a href="./childPAGES/ref.html"> 

現在childPAGES/ref.html

<link rel="stylesheet" type:"text/css" src="../../childPAGES/stylesheetB.css" 

,但它並沒有找到該文件.. 。進一步的文件中:

/childCss/stylesheetB.css 
    background-images: url('../../images/background.gif'); 

background.gif還是沒有被找到或顯示...我不知道我做錯了什麼......也許我應該用HRE F?

沙发
0
0

我認爲你只是用「../」走得太遠了。

您是否嘗試過使用:

link rel="stylesheet" type:"text/css" src="../childPAGES/stylesheetB.css" 

background-images: url('../images/background.gif'); 
0
votes
answers
6 views
+10

限制在Perl腳本中執行的程序的同時實例數(大於1)

3

我在Perl腳本中使用資源密集型程序[特別是將文件傳輸到Google Drive的rclone]。限制在Perl腳本中執行的程序的同時實例數(大於1)

我還沒有搞清楚如何我想打電話給rclone,因爲我需要限制的rclone實例基於一些條件(什麼有關預防服務器超載,死機,崩潰等)的數量。我希望腳本在執行rclone之前等待apt系統的「條件」(這可能需要很長或無限的時間)。

一些細節:

  • 腳本本身基本上是通過包含由另一個程序(可能很多)的文件的文件或目錄的路徑(這個程序用Python寫的 - 這個程序叫做<A>供參考)。
  • <A>僅向腳本返回一個值,因此對腳本或rclone一無所知,除了它接受輸入。
  • <A>不能被改變(即改變<A>我是無法理解)
  • <A>火災在不同的時間間隔[即有時它會連續快速多次執行腳本(創建多個實例),其他時候,它可能只觸發一次,每隔幾個小時,分鐘等]
  • 假設rclone不能直接(即再次要麼改變,超出我的肯定)。
  • 如果絕對必要,可以限制腳本實例的數量,而不是rclone(儘管我更喜歡它只是rclone,因爲腳本所做的處理比較輕而且不需要限制)。
  • 模塊很好用。
  • 我想避免使用類Unix操作系統命令等pgrepps(除非絕對必要)。

目前,我正在使用寫得比較差的bash腳本來代替Perl腳本。在bash腳本實現了一個基本的(設計不佳)「檢查/睡眠循環」使用pgrep -wcsleepwhile循環和if語句。 (說實話,我甚至不認爲bash腳本真的有效/有助於atm。)

+0

您可以將** GNU並行**作爲'sem -j N'調用,它只允許'N'個並行運行https://stackoverflow.com/a/46206137/2836621和https:// www.gnu.org/software/parallel/sem.html –

+0

@Mark啊,是的,完全忘了那個有用的程序,它也是用Perl編寫的。如果命令被多次調用,並且每次都在_different_腳本中,您是否知道信號量功能是否有效?那就是---使用廁所比喻----每個腳本實例是否都有自己的「廁所空間」,其他腳本實例無法訪問,或者所有腳本實例都使用同一個「房間」? – YenForYang

+1

是的,只要不同的程序都給出了與我鏈接的答案相同的'--id'。 –

沙发
0
4

我會假設你的腳本是唯一運行rclone。如果您只需要運行1個副本,you would just use a lockfile

對於N實例(小N),我只想有N個的lockfiles - 有計劃依次嘗試每把鎖,在一個循環;如果所有的鎖已經被保持並且稍後重試1秒,則在一個循環中暫停。一旦鎖定,運行rclone,然後在完成時釋放鎖定。


一個較好的方法是使用SysV的信號量,但是,除非你想有一個大的N,真正關心的響應時間或擔心的調用者之間的公平性,這是不太可能是值得花時間學習他們。


如果你的腳本是不是要求rclone唯一的程序,然後將需要攔截所有的來電 - 而不是把這個代碼在你的程序,可以通過它實現了並行約束如上然後調用包裝更換rclone真正的節目。

板凳
0
2

GNU並行可以在作業隊列工作https://www.gnu.org/software/parallel/man.html#EXAMPLE:-GNU-Parallel-as-queue-system-batch-manager

true >jobqueue; tail -n+0 -f jobqueue | parallel -j10 --timeout 1h rclone 

然後運行<A>就象這樣:

<A> >> jobqueue 

現在,然後將不得不清理jobqueue。但是,除非<A>產生瘋狂的數據量,否則在每次重新引導時將其清零(true >jobqueue)通常就足夠了。

0
votes
answers
6 views
+10

顯影劑樣品。搬運工組成了超時

0

我嘗試Chaincode的開發樣品,並運行泊塢窗組成的向上運行時,1號航站樓 - 啓動網絡,顯影劑樣品。搬運工組成了超時

失敗

訂貨|發佈時間:2017年11月11日13:48:52.252 UTC [orderer/common/deliver] deliverBlocks - > DEBU 32c [channel:myc]收到seekInfo(0xc420a12e60)start:> stop:> 172.18.0.3:33048 錯誤: cli.errors.log_timeout_error:HTTP請求花了很長時間才能完成。用--verbose重試以獲取調試信息。 如果由於網絡條件較慢而定期遇到此問題,請考慮將COMPOSE_HTTP_TIMEOUT設置爲更高的值(當前值:60)。

這是運行在Ubuntu 16.04上。我沒有看到任何會阻止連接的東西,撰寫文件看起來是正確的。一切只是在11月10日下載。

沙发
0
0

這實際上並不是真正運行示例的主要錯誤 - 這是Docker Compose自身偶爾拋出的錯誤。由於錯誤的說法,你可以簡單地之前運行示例(或多個)設置變量:

export COMPOSE_HTTP_TIMEOUT=600 
+0

感謝..現在嘗試.. – Sam

+0

從chaincode,(步驟2)得到錯誤2017年11月11日15:42:03.720 UTC [shim] func1 - > ERRO 003從服務器收到錯誤,結束chaincode流:rpc錯誤:code =未實現desc =未知服務protos.ChaincodeSupport – Sam

+0

我重新安裝了Docker容器(現在爲1.0.3)和一切正常。 – Sam

0
votes
answers
5 views
+10

如何從Perl作爲一個單獨的過程啓動程序?

1

可能重複:
How can I fire and forget a process in Perl?如何從Perl作爲一個單獨的過程啓動程序?

我正在尋找一種方式來從Perl腳本調用一個新的進程,這將讓啓動的程序和Perl腳本,從它已啓動,並行工作。如果它很重要,程序是SIPp

謝謝。

+3

http://stackoverflow.com/questions/2133910/how-can-i-fire-and-forget-a-process-in-perl http://stackoverflow.com/questions/2711520/how-can-i-run-perl-system-commands-in-the-the-the-background http://stackoverflow.com/questions/4053093/how-can-i-make-fork-in-perl- in-different-scripts http://stackoverflow.com/questions/8157848/how-to-spawn-other-programs-within-perl-script-and-immediately-continue-perl-programs – daxim

沙发
0
2

如果你真的想分開過程,那麼另一種選擇是forkexec

if (fork) { 
    # In the parent program 
    # Continue as usual 
    ... 
} else { 
    # In the new child program 
    # Replace with another program 
    exec $some_other_program; 
} 
板凳
0
1

SIPp具有「-bg」命令行參數。

此參數在後臺模式下啓動SIPp。

地板
0
0

在Windows系統中,您可以使用「開始」命令。

例如:

啓動記事本

OR

啓動/ d 「C: Program Files文件 Sipp3.1」 sipp.exe -sn UAC

4楼
0
1
0
votes
answers
5 views
+10

使用Cygwin中啓動的perl腳本運行帶有2個參數的Java文件

0

我試圖編寫一個Perl腳本來啓動我的Java程序。使用Cygwin中啓動的perl腳本運行帶有2個參數的Java文件

我試圖使用Cygwin在Windows 10

來執行它的Java程序的主要方法需要兩個參數。

主要方法是這樣的

public static void main(String[] args) throws InterruptedException, IOException 
{ 
    String ipAddress = args[0]; 
    int port = Integer.parseInt(args[1]); 
    ACPCGame acpc1 = new ACPCGame(); 
    acpc1.play(ipAddress, port); 
} 

然後我有我的Perl腳本稱爲canarybot.pl

my @args = ("java", "-jar", "canarybot.jar", "localhost", "55001"); 
system(@args); 

localhost55001應該是兩個參數由Java main方法的預期。

我然後打開包含Perl腳本和jar文件的目錄Cygwin的bash提示符並嘗試這樣

./canarybot.pl 

這將導致錯誤

./canarybot執行它。 pl:line 1:syntax error near unexpected token'('
./canarybot.pl:line 1:my @args =(「java」,「-jar」,「canarybot.jar」,「localhost',」55001 「);

+1

我不是很熟悉cygwin(更多),但是:你的腳本中是否有shebang行('#!/ usr/bin/perl')?並且:當你發出'perl。/ canarybot.pl'時它是否工作? – PerlDuck

+0

我的整個腳本貼在上面。我不知道shebang線是什麼,但現在我會google。 –

+2

shebang行告訴系統使用哪個程序來解釋腳本的其餘部分。在你的情況下,你想'perl'來處理腳本(比如'bash')。嘗試將'#!/ usr/bin/perl'或只是'#!perl'添加到腳本的第一行。 (你顯示的兩條線看起來不錯,順便說一句) – PerlDuck

沙发
0
3

錯誤syntax error near unexpected token是一個shell錯誤。你問Cygwin的shell執行一個Perl程序,當然它使廢話在這方面

您可以使用

perl canarybot.pl 

,或者你可以添加一個 shebang line

#!perl 

到程序的開始,這將導致Cygwin外殼在PATH上查找perl並使用它執行後續代碼,而不是嘗試自行解釋它

但我沒有看到任何理由在這裏使用Cygwin。從Windows cmd提示你可以使用命令

canarybot.pl 

Windows將開始在該文件的當前工作目錄搜索,而將使用註冊表來確定如何處理.pl文件類型。沒有必要在所有

+0

多年前我曾經使用過Cygwin,因爲它有一個帶有tab-tab-tab-completion和其他花哨事物的適當shell。我不關心Windows如何啓動我的腳本,因爲我從Cygwin shell啓動它們。也許OP是用同一個模子鑄造的。 (我不得不查看那個短語;-)) – PerlDuck

+0

如果我從cmd窗口運行canarybot.pl,它將在記事本中打開它:) –

+1

@PerlDuck:最新版本的Windows 10提供了一個bash shell。沒有任何理由使用Cygwin,如果你正在爲Windows開發,那麼你不應該首先假設一個bash shell。 Tribals將堅持認爲你必須假裝你的Windows平臺確實是一個Linux系統,但他們被迷惑了。 – Borodin

板凳
0
0

這是一個shebang行是通過編輯Perl腳本一起使用認領本着對java.exe的文件的具體路徑如下解析:

#!/usr/bin/perl 
my @args = ("/cygdrive/c/Program Files/Java/jdk1.8.0_152/bin/java.exe", "-jar", "canarybot.jar", "localhost", "55001"); 
my $ret = system(@args);